Self-hosted WireGuard manager with a web dashboard - peers, groups, firewall, alerts, proxy chains
1.5K
Self-hosted WireGuard VPN manager with a full web dashboard — a single Go binary, no external dependencies, runs anywhere Docker does.
Source, full deployment guide, and docker-compose.yml:
github.com/vernizus/wirego
Two secrets are required — the container refuses to start without them, and they can never be changed after the first start (existing peer keys become unreadable and all sessions are invalidated if you do):
DB_KEY=$(head -c 32 /dev/urandom | base64 | tr -d '\\n')
JWT_KEY=$(head -c 64 /dev/urandom | base64 | tr -d '\\n')
docker run -d --name wirego \\
--network host \\
--user 0:0 \\
--cap-add NET_ADMIN --cap-add NET_RAW --cap-add NET_BIND_SERVICE \\
--cap-drop ALL \\
--security-opt no-new-privileges:true \\
--read-only \\
--tmpfs /tmp:noexec,nosuid,size=50m \\
--device /dev/net/tun:/dev/net/tun \\
-v wirego_data:/data \\
-e WIREGO_DB_ENCRYPTION_KEY="$DB_KEY" \\
-e WIREGO_JWT_SIGNING_KEY="$JWT_KEY" \\
vernizus/wirego:latest
Save $DB_KEY and $JWT_KEY somewhere safe before you lose the shell —
they cannot be recovered.
Web dashboard available on the configured port (default :51821). The
admin password is generated on first start and printed once to the
container logs (docker logs wirego) — there is no fixed default
password.
Everything else (firewall backend, log level, public IP/domain, DNS,
TLS, and more) is configured from the web panel after first login —
see the full deployment guide for
the recommended docker-compose.yml and all configuration options.
latest / X.Y.Z — multi-arch build (amd64, arm64, armv7)Content type
Image
Digest
sha256:279b47f95…
Size
19.8 MB
Last updated
22 days ago
docker pull vernizus/wirego