Let Headplane start, and read Headscale's version for its tools

Headplane 0.7.1 refuses a config with a kubernetes block that has no pod_name,
even when the integration is off, so the disabled block is gone. The headscale
image has no version label, so the running version now comes from
`headscale version`, and 0.29.3 is recorded as verified for the Headscale
tools after running each of them against a live install.

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
LibrePortal
2026-09-16 22:50:53 +01:00
parent 885348f994
commit 5b2bfe3d4a
4 changed files with 16 additions and 4 deletions
@@ -27,13 +27,12 @@ headscale:
config_path: "/etc/headscale/config.yaml"
# No Docker socket, agent or process integration: Headplane only talks to
# Headscale's API.
# Headscale's API. (No kubernetes block: once present, Headplane 0.7.1 requires
# its pod_name even when disabled, and refuses to start.)
integration:
agent:
enabled: false
docker:
enabled: false
kubernetes:
enabled: false
proc:
enabled: false
@@ -0,0 +1,10 @@
#!/bin/bash
# The running Headscale version, for tool compatibility
# (scripts/app/app_compat.sh). The headscale image carries no version label, so
# ask the binary.
headscale_detected_version()
{
runFileOp timeout 15 docker exec headscale-service headscale version -o json 2>/dev/null \
| jq -r '.version // empty' 2>/dev/null | head -1
}
@@ -1,5 +1,5 @@
{
"compat": { "range": ">=0.29.0 <0.30.0", "verified": [] },
"compat": { "range": ">=0.29.0 <0.30.0", "verified": ["0.29.3"] },
"tools": [
{
"id": "create_user",
@@ -606,6 +606,7 @@ declare -gA LP_FN_MAP=(
[grafana_install_pre]="grafana/scripts/grafana_install_hooks.sh"
[hashPassword]="config/password/password_hash.sh"
[_headscaleCli]="headscale/scripts/headscale_cli.sh"
[headscale_detected_version]="headscale/scripts/headscale_version.sh"
[headscale_install_post_compose]="headscale/scripts/headscale_install_hooks.sh"
[headscale_install_post_start]="headscale/scripts/headscale_install_hooks.sh"
[_headscalePortUrl]="headscale/scripts/headscale_install_hooks.sh"
@@ -2020,6 +2021,7 @@ declare -gA LP_FN_ROOT=(
[grafana_install_pre]="containers"
[hashPassword]="scripts"
[_headscaleCli]="containers"
[headscale_detected_version]="containers"
[headscale_install_post_compose]="containers"
[headscale_install_post_start]="containers"
[_headscalePortUrl]="containers"
@@ -3474,6 +3476,7 @@ grafana_install_post_start() { unset -f grafana_install_post_start; __lpAutoload
grafana_install_pre() { unset -f grafana_install_pre; __lpAutoload "${install_containers_dir}grafana/scripts/grafana_install_hooks.sh"; grafana_install_pre "$@"; }
hashPassword() { unset -f hashPassword; __lpAutoload "${install_scripts_dir}config/password/password_hash.sh"; hashPassword "$@"; }
_headscaleCli() { unset -f _headscaleCli; __lpAutoload "${install_containers_dir}headscale/scripts/headscale_cli.sh"; _headscaleCli "$@"; }
headscale_detected_version() { unset -f headscale_detected_version; __lpAutoload "${install_containers_dir}headscale/scripts/headscale_version.sh"; headscale_detected_version "$@"; }
headscale_install_post_compose() { unset -f headscale_install_post_compose; __lpAutoload "${install_containers_dir}headscale/scripts/headscale_install_hooks.sh"; headscale_install_post_compose "$@"; }
headscale_install_post_start() { unset -f headscale_install_post_start; __lpAutoload "${install_containers_dir}headscale/scripts/headscale_install_hooks.sh"; headscale_install_post_start "$@"; }
_headscalePortUrl() { unset -f _headscalePortUrl; __lpAutoload "${install_containers_dir}headscale/scripts/headscale_install_hooks.sh"; _headscalePortUrl "$@"; }