fix: add systemd path and service for automatic Caddy reload on route changes
This commit is contained in:
parent
e9045690d5
commit
d71e12b3dd
2 changed files with 34 additions and 21 deletions
13
caddy.nix
13
caddy.nix
|
|
@ -31,4 +31,17 @@
|
||||||
reverse_proxy 127.0.0.1:9911
|
reverse_proxy 127.0.0.1:9911
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.path."caddy-routes-reload" = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
pathConfig = {
|
||||||
|
PathChanged = "/var/lib/containers/routes/routes.caddy";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.service."caddy-routes-reload" = {
|
||||||
|
script = ''
|
||||||
|
systemctl reload caddy
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -335,29 +335,29 @@ cmd_render_route() {
|
||||||
log info "rendered route ${route_file}"
|
log info "rendered route ${route_file}"
|
||||||
}
|
}
|
||||||
|
|
||||||
maybe_reload_caddy() {
|
# maybe_reload_caddy() {
|
||||||
# Try Caddy admin API first (no root required)
|
# # Try Caddy admin API first (no root required)
|
||||||
if curl -sf -X POST http://localhost:2019/config/ >/dev/null 2>&1; then
|
# if curl -sf -X POST http://localhost:2019/config/ >/dev/null 2>&1; then
|
||||||
log info "reloaded caddy via admin API"
|
# log info "reloaded caddy via admin API"
|
||||||
return
|
# return
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
# Validate config if caddy binary is available
|
# # Validate config if caddy binary is available
|
||||||
if [[ -x /run/current-system/sw/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
|
# if [[ -x /run/current-system/sw/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
|
||||||
/run/current-system/sw/bin/caddy validate \
|
# /run/current-system/sw/bin/caddy validate \
|
||||||
--config /etc/caddy/Caddyfile --adapter caddyfile \
|
# --config /etc/caddy/Caddyfile --adapter caddyfile \
|
||||||
|| echo "warning: caddy validation failed" >&2
|
# || echo "warning: caddy validation failed" >&2
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
# Fall back to systemctl (sudo if needed)
|
# # Fall back to systemctl (sudo if needed)
|
||||||
if [[ "${EUID}" -eq 0 ]]; then
|
# if [[ "${EUID}" -eq 0 ]]; then
|
||||||
systemctl reload caddy && log info "reloaded caddy"
|
# systemctl reload caddy && log info "reloaded caddy"
|
||||||
elif sudo -n /run/current-system/sw/bin/systemctl reload caddy 2>/dev/null; then
|
# elif sudo -n /run/current-system/sw/bin/systemctl reload caddy 2>/dev/null; then
|
||||||
log info "reloaded caddy via sudo"
|
# log info "reloaded caddy via sudo"
|
||||||
else
|
# else
|
||||||
log warning "caddy reload requires root; run: sudo systemctl reload caddy"
|
# log warning "caddy reload requires root; run: sudo systemctl reload caddy"
|
||||||
fi
|
# fi
|
||||||
}
|
# }
|
||||||
|
|
||||||
cmd_deploy() {
|
cmd_deploy() {
|
||||||
local name="$1"
|
local name="$1"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue