docs(deploy): target arbpulse.wayool.com via Cloudflare DNS-only

Set DOMAIN default to arbpulse.wayool.com and document the Cloudflare DNS setup (grey-cloud / DNS-only) so Caddy HTTP-01 and SSE work without proxy buffering.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Mauricio Barragan
2026-07-16 13:25:21 -06:00
parent 3c7c3593ba
commit 80413a3af4
2 changed files with 22 additions and 4 deletions
+4 -2
View File
@@ -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
+18 -2
View File
@@ -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