fix: enhance caddy reload logic to use admin API and improve validation checks

This commit is contained in:
Jakub Dorfman 2026-04-27 12:14:12 +02:00
parent 39e3337b8a
commit a34eac4235

View file

@ -330,25 +330,49 @@ cmd_render_route() {
}
maybe_reload_caddy() {
# Try Caddy admin API first (no root required)
if curl -sf -X POST http://localhost:2019/config/ >/dev/null 2>&1; then
echo "reloaded caddy via admin API"
return
fi
# Validate config if caddy binary is available
if [[ -x /run/current-system/sw/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
/run/current-system/sw/bin/caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile || echo "warning: caddy validation failed" >&2
/run/current-system/sw/bin/caddy validate \
--config /etc/caddy/Caddyfile --adapter caddyfile \
|| echo "warning: caddy validation failed" >&2
fi
# Fall back to systemctl (sudo if needed)
if [[ "${EUID}" -eq 0 ]]; then
systemctl reload caddy
echo "reloaded caddy"
return
fi
if command -v sudo >/dev/null 2>&1 && sudo -n true >/dev/null 2>&1; then
sudo -n /run/current-system/sw/bin/systemctl reload caddy
systemctl reload caddy && echo "reloaded caddy"
elif sudo -n /run/current-system/sw/bin/systemctl reload caddy 2>/dev/null; then
echo "reloaded caddy via sudo"
return
fi
else
echo "caddy reload requires root; run: sudo systemctl reload caddy"
fi
}
# maybe_reload_caddy() {
# if [[ -x /run/current-system/sw/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
# /run/current-system/sw/bin/caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile || echo "warning: caddy validation failed" >&2
# fi
# if [[ "${EUID}" -eq 0 ]]; then
# systemctl reload caddy
# echo "reloaded caddy"
# return
# fi
# if command -v sudo >/dev/null 2>&1 && sudo -n true >/dev/null 2>&1; then
# sudo -n /run/current-system/sw/bin/systemctl reload caddy
# echo "reloaded caddy via sudo"
# return
# fi
# echo "caddy reload requires root; run: sudo systemctl reload caddy"
# }
cmd_deploy() {
local name="$1"
validate_name "${name}"