#!/usr/bin/env bash set -euo pipefail # headscale-health-check.sh — Probe Headscale server health SCRIPT_NAME="$(basename "$0")" JSON_OUTPUT=false WATCH=false INTERVAL=5 URL="${HEADSCALE_URL:-}" API_KEY="${HEADSCALE_API_KEY:-}" usage() { cat <&2; usage >&2; exit 1 ;; esac done if [[ -z "$URL" ]]; then echo "Error: HEADSCALE_URL not set. Pass --url or set HEADSCALE_URL env var." >&2 exit 1 fi do_health_check() { local result local version="" local healthy=false local api_ok=false # Check /version endpoint version_info=$(curl -s -f "${URL}/version" 2>/dev/null) && version="$version_info" || true # Check API if [[ -n "$API_KEY" ]]; then api_result=$(curl -s -w "%{http_code}" -H "Authorization: Bearer $API_KEY" "${URL}/api/v1/user" 2>/dev/null) || true http_code="${api_result: -3}" if [[ "$http_code" == "200" ]]; then api_ok=true fi fi # Overall health if [[ -n "$version" ]]; then healthy=true fi if [[ "$JSON_OUTPUT" == true ]]; then cat <