Headscale/head-scale-connect.sh
2025-11-24 16:58:23 +00:00

66 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
# ============================
# CONFIG
# ============================
HEADSCALE_URL="https://headscale.rozic-dev.com"
TAILSCALE_BIN="tailscale"
DEFAULT_HOSTNAME="$(hostname)"
require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
echo "ERROR: Command '$1' not found. Please install it first." >&2
exit 1
fi
}
require_cmd "$TAILSCALE_BIN"
if ! command -v sudo >/dev/null 2>&1 && [[ $EUID -ne 0 ]]; then
echo "WARNING: 'sudo' not found and you are not root."
echo "You must run this script as root for 'tailscale up' to work."
exit 1
fi
AUTHKEY="${1:-}"
if [[ -z "$AUTHKEY" ]]; then
echo -n "Enter Headscale pre-auth key: "
read -r AUTHKEY
fi
if [[ -z "$AUTHKEY" ]]; then
echo "ERROR: No auth key provided." >&2
exit 1
fi
echo -n "Hostname to register on Headscale [${DEFAULT_HOSTNAME}]: "
read -r CUSTOM_HOSTNAME
HOSTNAME_TO_USE="${CUSTOM_HOSTNAME:-$DEFAULT_HOSTNAME}"
echo
echo "Connecting this device to Headscale:"
echo " Server : ${HEADSCALE_URL}"
echo " Host : ${HOSTNAME_TO_USE}"
echo
TS_CMD=(
"$TAILSCALE_BIN" up
--reset
--login-server="${HEADSCALE_URL}"
--auth-key="${AUTHKEY}"
--hostname="${HOSTNAME_TO_USE}"
)
if [[ $EUID -ne 0 ]]; then
echo "Running: sudo ${TS_CMD[*]}"
sudo "${TS_CMD[@]}"
else
echo "Running: ${TS_CMD[*]}"
"${TS_CMD[@]}"
fi
echo
echo "✅ Done! This device should now be visible in Headscale."