Files
panel-vpn/deploy/nginx/docker-compose.nginx.yml
T

52 lines
1.7 KiB
YAML

# Пример: Nginx + Certbot (Let's Encrypt)
#
# Запуск:
# docker compose -f docker-compose.yml -f deploy/nginx/docker-compose.nginx.yml up -d --build
#
# Первый выпуск сертификата (после того как DNS уже указывает на сервер):
# docker compose -f deploy/nginx/docker-compose.nginx.yml run --rm certbot certonly \
# --webroot -w /var/www/certbot \
# -d panel.example.com \
# --email admin@example.com --agree-tos --no-eff-email
#
# Затем раскомментируйте HTTPS-server в nginx.conf и:
# docker compose -f docker-compose.yml -f deploy/nginx/docker-compose.nginx.yml up -d
#
# Обновление сертификатов (cron / systemd timer на хосте):
# docker compose -f deploy/nginx/docker-compose.nginx.yml run --rm certbot renew
# docker compose -f deploy/nginx/docker-compose.nginx.yml exec nginx nginx -s reload
services:
nginx:
image: nginx:1.27-alpine
container_name: vpn-panel-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./snippets:/etc/nginx/snippets:ro
- certbot_www:/var/www/certbot:ro
- certbot_certs:/etc/letsencrypt:ro
networks:
- vpn-net
depends_on:
- app
certbot:
image: certbot/certbot:latest
container_name: vpn-panel-certbot
volumes:
- certbot_www:/var/www/certbot
- certbot_certs:/etc/letsencrypt
entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot --quiet; sleep 12h & wait $${!}; done"
volumes:
certbot_www:
certbot_certs:
networks:
vpn-net:
name: vpn-panel-net