docs: add operational gotchas to Coolify template

- Gotcha 1: dynamic config dir is /opt/traefik/dynamic, NOT /data/coolify/proxy/dynamic
- Gotcha 2: entrypoints are http/https (not web/websecure); coolify.yaml fix location
- Gotcha 3: env vars in bind mount paths become named volumes in Coolify
- Gotcha 4: SSH MaxSessions must be >= 10 for parallel deploy sessions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
root
2026-03-23 02:02:16 +00:00
parent 93ea33c045
commit 9f7bcb3ecc

View File

@@ -169,3 +169,57 @@ docker network create mail_internal
2. **Domain**: set FQDN (e.g. `myapp.sherlockhomeless.net`)
3. **Base Directory**: set to the subdirectory (e.g. `/gitea`, `/n8n`)
4. **Environment Variables**: fill from `stack.env` template
---
## Gotchas del sistema — leer antes de tocar el proxy
### Gotcha 1 — Directorio dynamic del proxy NO es el de Coolify
El proxy `coolify-proxy` monta su directorio de configuración dinámica desde:
```
/opt/traefik/dynamic → /dynamic (dentro del contenedor)
```
**NO** desde `/data/coolify/proxy/dynamic/` (ese directorio existe pero Traefik NO lo lee).
Si necesitas añadir rutas manuales (por ejemplo, para el dashboard de Coolify), edita:
```bash
/opt/traefik/dynamic/coolify.yaml # ← aquí es donde importa
```
### Gotcha 2 — Entrypoints del proxy: `http` y `https` (NO `web`/`websecure`)
Coolify genera automáticamente labels de Traefik con:
- `entryPoints=http` (puerto 80)
- `entryPoints=https` (puerto 443)
El proxy (`/data/coolify/proxy/docker-compose.yml`) está configurado con esos mismos nombres.
El contenedor `coolify` propio tiene labels antiguas con `websecure` — no importa porque
su routing está definido en `/opt/traefik/dynamic/coolify.yaml`.
**Si el dashboard de Coolify da 404**, verificar:
1. Que `/opt/traefik/dynamic/coolify.yaml` existe y tiene routers `http`/`https`
2. Que `coolify-proxy` puede resolver `coolify:8080` (ambos en red `proxy`)
### Gotcha 3 — Variables en bind mounts → Coolify las convierte en volúmenes nombrados
```yaml
# ❌ MAL: Coolify NO resuelve la variable → crea volumen Docker nombrado vacío
volumes:
- ${MY_DATA_PATH}:/var/lib/postgresql/data:Z
# ✅ BIEN: rutas hardcodeadas
volumes:
- /opt/myapp/postgres:/var/lib/postgresql/data:Z
```
### Gotcha 4 — SSH MaxSessions
`/etc/ssh/sshd_config` tiene `MaxSessions 20` (cambiado de 2).
Coolify abre múltiples sesiones SSH en paralelo durante el deploy.
Si vuelve a bajar a 2 (upgrade del OS, etc.), todos los deploys fallarán con exit code 255.
```bash
grep MaxSessions /etc/ssh/sshd_config # debe ser >= 10
```