Files
docker-compose-cookbooks/headscale_dev/compose.yaml
T
codeandClaude Sonnet 5 151e6b5aad headscale: fix config schema, DERP map, and UI routing; document setup
- config.yaml: migrate to current headscale config schema (database/dns
  nested keys instead of legacy db_type/db_path/dns_config), add noise
  private key path, prefixes, and a DERP map (required at startup)
- compose.yaml: bind-mount a fixed Caddyfile for headscale-ui so it
  serves from /app/admin instead of 404ing at /app
- README: document NPM reverse proxy setup (websockets on, HTTP/2 off
  to avoid breaking the ts2021 noise protocol handshake), split
  Android/iOS vs laptop client instructions, add headscale-ui admin
  panel setup with API key generation, switch CLI examples to
  docker exec against the running container

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 16:09:00 +00:00

36 lines
962 B
YAML

services:
headscale:
image: ${HEADSCALE_IMAGE:-headscale/headscale:latest}
restart: ${HEADSCALE_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/headscale/config:/etc/headscale
- ${VOL_PATH:-/data}/headscale/data:/var/lib/headscale
- ${VOL_PATH:-/data}/headscale/logs:/var/log/headscale
environment:
- TZ=${TZ:-America/Vancouver}
- HEADSCALE_LOG_LEVEL=${HEADSCALE_LOG_LEVEL:-info}
networks:
- proxy
- internal
command:
- serve
headscale-ui:
image: ${HEADSCALE_UI_IMAGE:-goodieshq/headscale-admin:latest}
restart: ${HEADSCALE_UI_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/headscale/config/Caddyfile:/etc/caddy/Caddyfile:ro
environment:
- TZ=${TZ:-America/Vancouver}
- HEADSCALE_URL=http://headscale:8080
networks:
- proxy
- internal
depends_on:
- headscale
networks:
proxy:
external: true
internal: