58 lines
1.7 KiB
YAML
58 lines
1.7 KiB
YAML
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=<key>
|
|
#
|
|
# Verify:
|
|
# - Health check: curl http://localhost:8085/health
|
|
# - List users: docker exec headscale headscale users list
|
|
# - List nodes: docker exec headscale headscale nodes list
|