Despliegue
Navegador
│
├── https://crm.chewcud.tech ──────► Cloudflare Pages (crm-postventa)
│ CNAME → crm-postventa.pages.dev
│
└── https://crm-api.chewcud.tech ──► Caddy (esta PC, TLS por DNS-01)
registro A → IP fija, DNS-only
reverse_proxy → 127.0.0.1:8080
│
└─► PostgreSQL local, base `crm`
Front y API viven en orígenes distintos, así que hay CORS de verdad: lo
pone el servicio desde CORS_ORIGINS. Caddy sólo termina TLS.
Lo que hay que saber
La API corre en una PC. Si se apaga el equipo, se para el proceso o se cae Caddy, el front sigue sirviéndose pero se queda sin datos. No es un despliegue autónomo.
El front se compila con la URL de la API dentro (VITE_GRAPHQL_URL, en
tiempo de compilación). Cambiar el dominio de la API obliga a recompilar y
volver a desplegar.
Volver a desplegar el front
pnpm --filter @crm/web build
cd apps/web && npx wrangler pages deploy dist --project-name crm-postventa --branch main
public/_redirects manda todas las rutas a index.html con un 200: sin eso,
recargar en una ruta profunda da 404 porque Pages busca un fichero que no
existe. public/_headers fija la CSP, que sólo permite conectar con la API.
Detalle completo en docs/DEPLOY.md.
Relacionado: Deuda técnica