version: '3.8' services: headscale: image: headscale/headscale:latest container_name: headscale restart: unless-stopped command: serve environment: - TZ=Asia/Seoul volumes: - ./config:/etc/headscale - ./data:/var/lib/headscale - ./run:/var/run/headscale ports: - "8070:8080" # Headscale HTTP API (외부:내부) - "9090:9090" # Metrics (optional) networks: - headscale-net healthcheck: test: ["CMD", "/ko-app/headscale", "version"] interval: 30s timeout: 10s retries: 3 start_period: 30s headplane: image: ghcr.io/tale/headplane:latest container_name: headplane restart: unless-stopped environment: - TZ=Asia/Seoul - HEADSCALE_URL=http://headscale:8080 - HEADSCALE_API_KEY=${HEADSCALE_API_KEY} volumes: - ./headplane-config:/etc/headplane ports: - "3000:3000" # Headplane Web UI depends_on: - headscale networks: - headscale-net networks: headscale-net: driver: bridge volumes: headscale_config: headscale_data: headscale_run: