feat(headscale): add headplane web UI at /admin

Integrate headplane (ghcr.io/tale/headplane) into the headscale stack, served
by Caddy at /admin. API-only (no Docker socket); deploy.sh mints a headscale
API key on first run, generates headplane.yaml, and wires optional OIDC login
via pocket-id (second client, /admin/oidc/callback). Adds HEADPLANE_* env,
compose service, Caddy routing; rebuild embedded archive.
This commit is contained in:
57_Wolve committed 2026-06-12 16:15:34 -05:00
1 parent 573785f2cc
commit 1ca79938cd
6 files changed
+230 -84

No files matched your search

+18 -8
View File
@@ -11,14 +11,24 @@
{$HEADSCALE_DOMAIN} {
encode zstd gzip
reverse_proxy headscale:8080 {
header_up X-Real-IP {http.request.remote.host}
# Long-lived noise/wireguard control streams; lift the default
# idle limit so they don't get torn down.
flush_interval -1
transport http {
read_timeout 10m
write_timeout 10m
# Headplane web UI lives at /admin. Pass the path through unchanged
# (headplane serves itself under /admin). Everything else is headscale's
# control protocol.
@admin path /admin /admin/*
handle @admin {
reverse_proxy headplane:3000
}
handle {
reverse_proxy headscale:8080 {
header_up X-Real-IP {http.request.remote.host}
# Long-lived noise/wireguard control streams; lift the default
# idle limit so they don't get torn down.
flush_interval -1
transport http {
read_timeout 10m
write_timeout 10m
}
}
}