Disclaimer: Este post asume que ya has configurado Kamal y tienes corriendo Caddy en tu servidor.
Hace poco generé un nuevo proyecto de Rails después de años, y revisando el Gemfile me pillé con Kamal, una herramienta que facilita el deploy de aplicaciones de Rails, aunque funciona con cualquier imagen de Docker que tengas por ahí.
Se me ocurrió realizar el deploy de esta y otras webs con Kamal también, pero me di cuenta que Kamal usa el puerto 80 por defecto con su propio proxy, lo cual rompía el resto de mi setup en mi VPS y por ende no me permitía usar subdominios para otras apps que no estaba desplegando con Kamal. Me pasé todo el día de hoy reparando el setup, hasta encontrar la forma de hacer funcionar Caddy como reverse proxy, dejando a Kamal encargado únicamente de automatizar el deploy.
La configuración es muy sencilla, lo importante está en desactivar el proxy de kamal en los roles correspondientes, y pasar el puerto a mapear en las options:
...
servers:
web:
hosts:
- 107.175.73.107
proxy: false
options:
publish:
- 3002:80
...
Además, si tenías una sección de proxy en tu config, debes eliminar la llave.
Ahora en tu Caddyfile basta apuntar el dominio como reverse proxy al puerto que especificaste en el publish, junto al resto de subdominios que estés usando, independiente de si haces el deploy con Kamal o no:
ankaph.xyz {
reverse_proxy 0.0.0.0:3002
}
...