Usage

Docker quickstart

HEADSCALE_API_KEY=$(headscale apikeys create --expiration 8760h)

docker run -d \
  -e HEADSCALE_ADDR=headscale:50443 \
  -e HEADSCALE_API_KEY="$HEADSCALE_API_KEY" \
  -e OAUTH_CLIENT_ID=my-operator \
  -e OAUTH_CLIENT_SECRET=my-secret \
  -e OAUTH_HMAC_SECRET=a-32-byte-random-secret-here!!! \
  -p 8080:8080 \
  ghcr.io/alam0rt/headtotails:latest

Binary quickstart

export HEADSCALE_ADDR=127.0.0.1:50443
export HEADSCALE_API_KEY=hskey-api-...
export OAUTH_CLIENT_ID=my-operator
export OAUTH_CLIENT_SECRET=my-secret
export OAUTH_HMAC_SECRET=a-32-byte-random-secret-here!!!

./headtotails

Basic API checks

# Get token
curl -s -X POST http://localhost:8080/oauth/token \
  -d 'grant_type=client_credentials&client_id=my-operator&client_secret=my-secret'

# List devices
curl -s -H "Authorization: Bearer <token>" \
  http://localhost:8080/api/v2/tailnet/-/devices