Voraussetzungen
- Ein Linux-Server, der von dem Ort aus erreichbar ist, von dem Sie ihn verwalten
- Docker und Docker Compose installiert
- Ein Domainname, der auf die IP Ihres Servers zeigt
- Die Ports 80 und 443 offen für Caddy sowie der WireGuard-UDP-Port offen (standardmäßig 51820)
Caddy benötigt einen gültigen DNS-Namen, intern oder öffentlich, der auf Ihren Server zeigt, damit SSL-Zertifikate automatisch bezogen und erneuert werden können.
Bereitstellung
mkdir wireguard_webadmin && cd wireguard_webadminwget -O docker-compose.yml \
https://raw.githubusercontent.com/eduardogsilva/wireguard_webadmin/main/docker-compose-caddy.ymlErstellen Sie im selben Verzeichnis eine Datei namens .env. Setzen Sie SERVER_ADDRESS auf Ihre Domain:
SERVER_ADDRESS=vpn.example.com
DEBUG_MODE=False
TIMEZONE=America/Sao_PauloAlle verfügbaren Variablen finden Sie weiter unten in der .env-Referenz.
docker compose up -dRufen Sie das Panel unter https://vpn.example.com auf. Caddy bezieht und erneuert SSL-Zertifikate automatisch.
.env-Referenz
| Variable | Erforderlich | Beschreibung |
|---|---|---|
| SERVER_ADDRESS | Ja | DNS-Name oder IP Ihres Servers. Muss genau dem entsprechen, was Sie im Browser eingeben, sonst kommt es zu CSRF-Fehlern. |
| DEBUG_MODE | Nein | Setzen Sie den Wert auf True, um den Django-Debug-Modus zu aktivieren. Niemals in Produktion verwenden. Standard: False. |
| TIMEZONE | Nein | Zeitzone der Anwendung. Verwenden Sie einen Wert aus der tz-Datenbank. Standard: America/Sao_Paulo. |
| EXTRA_ALLOWED_HOSTS | Nein | Zusätzliche Hostnamen, die Django akzeptieren soll, kommagetrennt. SERVER_ADDRESS ist immer enthalten. Beispiel: app1.example.com,app2.example.com:8443. |
| WIREGUARD_STATUS_CACHE_ENABLED | Nein | Zwischenspeichert den WireGuard-Status, um Aufrufe von wg zu reduzieren. Standard: True. |
| WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL | Nein | Wie oft der Cache aktualisiert wird, in Sekunden. Erlaubte Werte: 30, 60, 150, 300. Standard: 60. |
| WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT | Nein | Wie viele zwischengespeicherte Snapshots beim Laden der Seite vorgeladen werden sollen (0-9). Höhere Werte befüllen Traffic-Diagramme sofort. Niedriger setzen, wenn die Peer-Liste langsam wirkt. Standard: 9. |
Upgrade
Die Daten werden in Docker-Volumes gespeichert. Ein Upgrade wirkt sich nicht auf Ihre Peers, Firewall-Regeln, DNS-Einträge oder andere Konfigurationen aus.
cd wireguard_webadmindocker compose down
docker compose pulltar cvfz wireguard-webadmin-backup-$(date +%Y-%m-%d-%H%M%S).tar.gz \
/var/lib/docker/volumes/wireguard_webadmin_wireguard/_data/ \
/var/lib/docker/volumes/wireguard_webadmin_rrd_data/_data/wget -O docker-compose.yml \
https://raw.githubusercontent.com/eduardogsilva/wireguard_webadmin/main/docker-compose-caddy.ymldocker compose up -ddocker compose logs wireguard_webadminFehlerbehebung
Caddy erhält kein Zertifikat
- Prüfen Sie, ob der A-Record Ihrer Domain auf die öffentliche IP des Servers zeigt
- Vergewissern Sie sich, dass die Ports 80 und 443 offen sind und upstream nicht blockiert werden
- Prüfen Sie die Caddy-Logs:
docker compose logs caddy
Das Panel lädt nicht
- Prüfen Sie, ob alle Container laufen:
docker compose ps - Suchen Sie nach Fehlern:
docker compose logs wireguard_webadmin - Vergewissern Sie sich, dass
SERVER_ADDRESSin.envexakt dem entspricht, was Sie im Browser eingeben
CSRF-Fehler beim Login
SERVER_ADDRESS ist falsch konfiguriert. Er muss genau dem Hostnamen entsprechen, inklusive Port bei nicht standardmäßigen Ports, unter dem das Panel aufgerufen wird. Aktualisieren Sie .env und starten Sie mit docker compose up -d neu.
WireGuard-Peers können keine Verbindung herstellen
- Vergewissern Sie sich, dass der WireGuard-UDP-Port auf der Host-Firewall offen ist. Standardmäßig ist das 51820, aber bei mehreren Instanzen benötigt jede ihren eigenen Port.
- Stellen Sie sicher, dass der in
docker-compose.ymldeklarierte UDP-Portbereich mit der Konfiguration jeder WireGuard-Instanz im Panel übereinstimmt. Bei einer Abweichung veröffentlicht der Container nicht den richtigen Port auf dem Host. - Prüfen Sie, ob IP-Forwarding auf dem Host aktiviert ist:
sysctl net.ipv4.ip_forward
Laufende Dienste
| Dienst | Rolle |
|---|---|
| wireguard-webadmin | Django-Anwendung — Weboberfläche und API |
| caddy | Reverse Proxy und automatisches TLS |
| auth-gateway | Zero-Trust-Autorisierungsschicht — erzwingt Identitätsprüfungen, bevor an den Upstream weitergeleitet wird |
| cron | Geplante Aufgaben — Peer-Aktivierung/-Deaktivierung, Cache-Aktualisierung |
| rrdtool | Traffic-Verlauf — RRD-Datenerfassung und Diagramme |
| dns | dnsmasq-basierter Resolver mit Unterstützung für kategoriebasierte Sperrlisten |