Caddyfile con variables de entorno
Para evitar dejar tokens y credenciales a la vista en el Caddyfile, se pueden cargar como variables de entorno desde systemd y luego referenciarlas dentro de la configuración.
Definir variables en systemd
Se añaden en drop-ins bajo /etc/systemd/system/caddy.service.d/:
# /etc/systemd/system/caddy.service.d/cloudflare.conf
[Service]
Environment=CLOUDFLARE_AUTH_TOKEN=A_ZYXS-LjFdbxxxxxxx42cmb7KH-iM8xxxxxxxxx
# /etc/systemd/system/caddy.service.d/openwebui.conf
[Service]
Environment="OPENWEBUI_APP_TOKEN=V9APMi3w..."
Después:
systemctl daemon-reload
systemctl restart caddy
Usar las variables en el Caddyfile
Caddy permite referenciar cualquier variable de entorno con {env.VARIABLE}:
# Opciones globales
{
admin 127.0.0.1:2019
email admin@example.org
acme_dns cloudflare {env.CLOUDFLARE_AUTH_TOKEN}
}
# Matcher compuesto: cabecera + path de API o WS
@conduit_combined {
header X-App-Token {env.OPENWEBUI_APP_TOKEN}
path /api/* /ws*
}
Validar cambios antes de reiniciar
Para asegurarse de que el Caddyfile es válido y que las variables se pasan correctamente:
caddy fmt Caddyfile --overwrite
sudo env CLOUDFLARE_AUTH_TOKEN=$CLOUDFLARE_AUTH_TOKEN \
OPENWEBUI_APP_TOKEN=$OPENWEBUI_APP_TOKEN \
caddy validate /etc/caddy/Caddyfile
Si se usan otras variables, deben adaptarse al comando anterior.
Verificar que systemd exporta las variables
systemctl show caddy | grep Environment
Deberían aparecer las variables declaradas en los drop-ins. Si no, revisar el nombre del archivo y volver a recargar/reiniciar.
Resumen
- Variables sensibles → en drop-ins de systemd, no en el Caddyfile.
- Referencia en Caddyfile →
{env.NOMBRE}. - Recargar y reiniciar para aplicar cambios.
- Validar con
caddy fmt+caddy validatepasando las variables al entorno. - Comprobar con
systemctl showsi se están cargando.