Skip to content

ci: recrear Caddy cuando cambia su configuración - #54

Merged
Oloxx merged 1 commit into
mainfrom
ci/recrear-caddy-al-cambiar-su-config
Sep 11, 2026
Merged

ci: recrear Caddy cuando cambia su configuración#54
Oloxx merged 1 commit into
mainfrom
ci/recrear-caddy-al-cambiar-su-config

Conversation

@Oloxx

@Oloxx Oloxx commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Arreglo de un fallo que apareció al desplegar el PR #53: las cabeceras se subieron, pero HSTS
no llegó a producción
.

Qué pasaba

El docker-compose.yml monta el Caddyfile como bind-mount de un fichero suelto
(./Caddyfile:/etc/caddy/Caddyfile:ro), y eso ata el montaje al inode. El despliegue hace
git reset --hard origin/main en el VPS, que escribe un fichero nuevo: el contenedor sigue
viendo el anterior, indefinidamente.

Los dos arreglos evidentes no sirven:

  • docker compose up -d caddy no recrea nada, porque su definición en el compose no ha cambiado.
  • caddy reload tampoco: dentro del contenedor el fichero sigue siendo el de antes. Lo probé, y
    el reload dice adapted config to JSON tan tranquilo mientras sirve lo viejo.

Comprobado en el VPS: tras el despliegue, docker compose exec caddy cat /etc/caddy/Caddyfile
devolvía la versión de hace dos semanas.

Arreglo

Se compara el hash del Caddyfile antes y después del git reset, y solo entonces
docker compose up -d --force-recreate caddy. Con el hash y no con un --force-recreate fijo
para no cortar conexiones en cada despliegue: Caddy se reinicia en un segundo, pero un despliegue
de la app no tiene por qué tocarlo.

Es la misma clase de fallo que ya tuvo coturn hace dos releases —algo que vive en el VPS y que el
despliegue no recrea—, y por eso va con comprobación y no con un "acordarse del comando".

Estado de producción

Ya arreglado a mano mientras tanto, así que esto es para que no vuelva a pasar:

Strict-Transport-Security: max-age=63072000; includeSubDomains
Content-Security-Policy: default-src 'self'; script-src 'self'; ...

Y el contenedor de la app, con lo de #30: drop Up (healthy), uid=1000(node).

El Caddyfile entra en el contenedor como bind-mount de un fichero suelto, y eso
ata el montaje al inode. `git reset --hard` en el VPS escribe un fichero nuevo,
asi que Caddy se queda sirviendo el contenido viejo indefinidamente: un `up -d`
a secas no lo arregla, porque su definicion en el compose no ha cambiado, y un
`caddy reload` tampoco, porque dentro del contenedor el fichero sigue siendo el
de antes.

Paso de verdad con el PR #53: HSTS se desplego y no llego a produccion. Se
comprueba el hash del Caddyfile antes y despues del reset y solo se recrea el
contenedor si ha cambiado, para no cortar conexiones en cada despliegue.

Es la misma clase de fallo que ya tuvo coturn, que es lo que hace pensar que
merece la pena el hash y no solo recordar el comando.
@Oloxx
Oloxx merged commit a014ace into main Sep 11, 2026
3 checks passed
@Oloxx
Oloxx deleted the ci/recrear-caddy-al-cambiar-su-config branch September 11, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant