version: '3.8' # Headscale - Self-Hosted Tailscale Control Server # Phase 2: Networking & External Access # Ports: 8085 (Web/API), 9090 (Metrics) # GPU: No # Storage: SSD (config and database) services: headscale: image: headscale/headscale:latest container_name: headscale restart: unless-stopped ports: - "8085:8080" # Web/API port - "9090:9090" # Metrics port (optional) volumes: - /home/jpmschweitzer/docker-data/headscale/config:/etc/headscale - /home/jpmschweitzer/docker-data/headscale/data:/var/lib/headscale command: serve environment: - TZ=Europe/Amsterdam networks: - docker-dataplane networks: docker-dataplane: external: true name: docker-dataplane # Setup Instructions: # 1. Create directories: # mkdir -p ~/docker-data/headscale/{config,data} # # 2. Generate config: # docker exec headscale headscale config generate > ~/docker-data/headscale/config/config.yaml # # 3. Edit config (important settings): # - server_url: http://tower-of-joy:8085 (or your IP) # - db_type: sqlite3 # - db_path: /var/lib/headscale/db.sqlite # # 4. Restart container: docker restart headscale # # 5. Create user: docker exec headscale headscale users create homelab # # 6. Generate pre-auth key: # docker exec headscale headscale preauthkeys create --user homelab --expiration 24h # # 7. Connect devices: # - Install Tailscale client on devices # - Run: tailscale up --login-server=http://tower-of-joy:8085 --authkey= # # Verify: # - Health check: curl http://localhost:8085/health # - List users: docker exec headscale headscale users list # - List nodes: docker exec headscale headscale nodes list