diff --git a/deploy/.env.vps.example b/deploy/.env.vps.example index be9589c..8d1f1b4 100644 --- a/deploy/.env.vps.example +++ b/deploy/.env.vps.example @@ -1,7 +1,9 @@ # Copy to ./.env on the VPS and fill in. Never commit the real .env. -# Domain for Caddy automatic HTTPS. Point its DNS A record to this VPS IP first. -DOMAIN=arbpulse.example.com +# Domain for Caddy automatic HTTPS. Its Cloudflare DNS A record must point to this +# VPS IP as "DNS only" (grey cloud) so Caddy can issue the Let's Encrypt cert and +# SSE (/api/stream) is not buffered by Cloudflare's proxy. +DOMAIN=arbpulse.wayool.com NODE_ENV=production PORT=8080 diff --git a/deploy/README.md b/deploy/README.md index b94f7ac..8c65f36 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -7,13 +7,29 @@ Despliegue con Docker Compose: el contenedor `app` (Node + tsx) detrás de ## Prerrequisitos 1. VPS Ubuntu/Debian (recomendado 2 vCPU / 2 GB RAM — p. ej. Hetzner CX22). -2. Un dominio con **registro DNS A apuntando a la IP del VPS** (necesario para el - HTTPS de Caddy). +2. Subdominio en Cloudflare (zona `wayool.com`): `arbpulse.wayool.com` con un + registro **A → IP del VPS**. Ver "DNS en Cloudflare" abajo. 3. Puertos abiertos: ```bash sudo ufw allow 22 && sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw --force enable ``` +## DNS en Cloudflare (zona wayool.com) + +El dominio `wayool.com` está gestionado por Cloudflare. La app se sirve en el +subdominio **`arbpulse.wayool.com`**. + +- Registro: **A**, nombre `arbpulse`, contenido = IP pública del VPS. +- **Proxy: "DNS only" (nube gris), NO proxied (nube naranja).** + - Motivo: Caddy emite el cert Let's Encrypt vía HTTP-01 (requiere que el reto en + el puerto 80 llegue directo al origen), y el stream SSE de `/api/stream` fluye + sin el buffering/timeout del proxy de Cloudflare. + - Si más adelante querés proxear con Cloudflare (naranja) para ocultar la IP, + hay que cambiar Caddy a challenge DNS-01 (plugin `caddy-dns/cloudflare` + token + de API) y poner SSL/TLS en "Full (strict)". No es necesario para arrancar. +- Verificar propagación: `dig +short arbpulse.wayool.com` debe devolver la IP del + VPS antes de que Caddy pida el certificado. + ## Deploy (para el agente del VPS) Todo lo hace el script idempotente `deploy.sh` (instala Docker si falta, clona o