ci / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 47s
ci / api (push) Successful in 53s
ci / recommender (push) Successful in 37s
ci / ts (packages + web) (push) Successful in 38s
ci / mobile (Metro-бандл Android) (push) Successful in 52s
- docs/install-guide.md: step-by-step server setup (DNS, Docker, install.sh, .env, launch, checks), web and Android client setup, own reverse proxy variant, updates, backups and troubleshooting - deploy/compose.tls.yaml + Caddyfile: optional Caddy with automatic Let's Encrypt in front of nginx (enabled via COMPOSE_FILE in .env) - nginx: honour X-Forwarded-Proto/For from private networks - .env.example: DOMAIN, ACME_EMAIL, COMPOSE_FILE, bootstrap admin vars - install.sh: create caddy data dirs; release.yml: ship TLS files as assets - deployment.md, docs index and README link to the guide Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
1.0 KiB
YAML
25 lines
1.0 KiB
YAML
# HTTPS на своём домене: Caddy получает и продлевает сертификат Let's Encrypt и проксирует на nginx.
|
|
# Подключается через COMPOSE_FILE=compose.yaml:compose.tls.yaml в .env (docs/install-guide.md).
|
|
# Если перед сервером уже стоит свой reverse proxy (Traefik, NPM, nginx) — этот файл не нужен.
|
|
|
|
services:
|
|
nginx:
|
|
# наружу смотрит только Caddy
|
|
ports: !reset []
|
|
|
|
caddy:
|
|
image: caddy:2.10-alpine
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
- "443:443/udp"
|
|
environment:
|
|
DOMAIN: ${DOMAIN:?укажите DOMAIN в .env}
|
|
ACME_EMAIL: ${ACME_EMAIL:?укажите ACME_EMAIL в .env — на него Let's Encrypt пишет о проблемах с сертификатом}
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- ${PIPU_DATA:-/srv/pipu}/caddy/data:/data
|
|
- ${PIPU_DATA:-/srv/pipu}/caddy/config:/config
|
|
depends_on: [nginx]
|