# Пример: 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