Dragonscale is an open-source deployment kit for running a self-hosted WireGuard mesh with Headscale as the control plane.
Dragonscale does not implement cryptography or a VPN protocol; it packages and documents an opinionated Headscale deployment with Google OAuth onboarding, private service access, and a Tailscale-compatible rollback path.
Initial release target: v0.1.0.
Day-one goals:
- deploy Headscale at your domain of choice
- authorize only explicit Google accounts
- connect an operator laptop, the control-plane host, and a secondary client device
- keep Tailscale available until Dragonscale is validated
- keep secrets and production state out of this public repository
- Data plane: WireGuard via Tailscale-compatible clients
- Control plane: Headscale
- Identity: Google OAuth / OIDC
- Edge: Traefik on an existing edge host
- Mesh DNS suffix:
mesh.dragonscale.internal - Private service target: internal services over the mesh
deploy/docker-compose.traefik.yml: Headscale service behind an existing Traefik edge.config/headscale.config.example.yaml: safe example Headscale configuration.config/acl.hujson: minimal day-one policy.docs/: operating and OAuth runbooks.scripts/: validation and smoke-test helpers.
-
Copy
deploy/.env.exampleto a private.envoutside this repository. -
Create a Google OAuth web client with redirect URI:
https://dragonscale.example.com/oidc/callback -
Fill
DRAGONSCALE_OIDC_CLIENT_IDandDRAGONSCALE_OIDC_CLIENT_SECRET. -
Render the private Headscale config:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/render-config.ps1 -EnvFile .env -Template config/headscale.config.example.yaml -Output config/config.yaml
-
Deploy with:
docker compose --env-file .env -f deploy/docker-compose.traefik.yml up -d
-
Validate with:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/smoke-dragonscale.ps1 -BaseUrl https://dragonscale.example.com python scripts/validate_repo.py
Dragonscale project code and documentation are licensed under AGPL-3.0-only.
Headscale is an upstream dependency licensed under BSD-3-Clause. See NOTICE.