WireGuard in Docker zu betreiben, bietet Ihnen das, was Container wertvoll macht: einen Server, den Sie in Minuten hochfahren, herunterfahren, versionieren und auf einen anderen Host verschieben können, ohne dass auf der Maschine selbst Pakete installiert werden müssen. Der Haken dabei ist, dass ein VPN-Container kein normaler Container ist - er greift auf den Netzwerk-Stack des Kernels zu, daher sind einige Flags unverzichtbar. Wenn Sie diese richtig setzen, ist ein containerisiertes WireGuard genauso schnell wie ein Bare-Metal. Wenn nicht, verbindet sich der Tunnel, leitet aber stillschweigend nichts weiter.
Dies ist der saubere, produktionsreife Weg, es zu tun.
Noch kein Host? Die Beispiele gehen von einem Contabo Cloud VPS (Affiliate-Link) aus, ab 5,50 € pro Monat bei 24 Monaten Laufzeit (Preis abgelesen am 17. Oktober 2026): Er läuft unter KVM, der Host hat also einen eigenen Kernel mit dem eingebauten WireGuard-Modul, auf das der Container angewiesen ist. Lieber ein US-Anbieter mit 30 Tagen Geld-zurück-Garantie? Ultahost VPS Basic kostet 5,52 $ im Monat bei 24 Monaten Laufzeit (1 GB RAM, dedizierte IPv4, gelesen am 21. Oktober 2026), und auch diese VPS laufen unter KVM (laut ultahost.com, gelesen am 26. Oktober 2026), das Kernel-Modul ist also ebenfalls vorhanden. Weitere Option: HostPapa Unmanaged VPS Lite (Affiliate-Link) für 2,95 $ im Monat bei 3 Jahren Laufzeit, danach zum regulären Preis (1 Kern, 1 GB RAM, 25 GB NVMe, Root-Zugang per SSH, 30 Tage Geld-zurück-Garantie, Stand 28. Oktober 2026).
Zuerst das eine, was die Leute bei "WireGuard in Docker" falsch machen
WireGuard ist ein Kernel-Modul. Wenn Sie "WireGuard in Docker betreiben", erfolgen die Verschlüsselung und das Routing weiterhin im Linux-Kernel des Hosts - der Container enthält nur die Benutzerwerkzeuge (wg, wg-quick) und Ihre Konfiguration. Deshalb gibt es keinen Leistungseinbruch: Der Datenpfad betritt nie den Container.
Das erklärt auch die Anforderungen. Um von innerhalb eines Containers ein Netzwerk-Interface zu erstellen und zu verwalten, benötigt dieser Container erweiterte Netzwerkfähigkeiten (NET_ADMIN), und der Host muss das Weiterleiten von Paketen erlauben (net.ipv4.ip_forward=1). Diese sind keine optionalen Sicherheitsmaßnahmen - ohne sie startet der Container entweder nicht oder kommt tot hoch.
Wählen Sie Ihr Image: linuxserver/wireguard vs. wg-easy
Zwei Images decken fast jeden Anwendungsfall ab:
linuxserver/wireguard- ein sauberer, konfigurationsgesteuerter Server. Sie definieren Peers über Umgebungsvariablen oder durch Bearbeiten von Dateien in einem gemounteten/config-Verzeichnis. Es generiert Client-Konfigurationen und QR-Codes beim ersten Lauf. Am besten, wenn Sie Infrastruktur-als-Code, viele Peers oder Ihre Einrichtung in ein privates Repo einpflegen möchten.wg-easy- WireGuard plus ein Web-Dashboard. Erstellen und widerrufen Sie Peers über einen Browser, scannen Sie QR-Codes für Telefone, sehen Sie sich Live-Übertragungsstatistiken pro Client an. Am besten für eine Handvoll Geräte und schnelles Onboarding ohne CLI. Wir behandeln es von A bis Z - inklusive der Passwort-Änderung in v14 - im vollständigen wg-easy-Self-Host-Leitfaden.
Beide sind ausgereift und weit verbreitet. Die Entscheidung ist Dashboard-vs-Dateien, nicht Qualität.
Die docker-compose-Datei (wg-easy)
Versionsprüfung (25. Oktober 2026): Dieses Beispiel nutzt die Variablen von wg-easy v14 und ist deshalb auf das Image
:14festgelegt. wg-easy v15 (aktuelle Version 15.5.0) liestWG_HOST,PASSWORD_HASHundWG_DEFAULT_DNSnicht mehr. Eine v15-Datei erhalten Sie in einer Minute mit unserem wg-easy docker-compose Generator.
Erzeugen Sie hier Ihre docker-compose.yml für wg-easy v15
Serveradresse und Zugang zum Panel angeben: Sie erhalten die Compose-Datei, bei Bedarf das Caddyfile und die Installationsbefehle.
01Server beschreiben
Alles wird in Ihrem Browser erzeugt. Nichts von Ihren Eingaben, auch nicht das Passwort, wird an unsere Server gesendet.
Die Adresse, mit der sich WireGuard-Clients verbinden.
Ein A-Eintrag für diesen Namen muss auf den Server zeigen, Ports 80 und 443 offen.
Ohne unbeaufsichtigtes Setup öffnen Sie nach dem ersten Start das Panel: Der Assistent fragt nach dem Admin-Konto, dann nach Host und Port. Geben Sie denselben UDP-Port wie oben ein.
02Dateien kopieren
# wg-easy v15 - generated on vpnsmith.com/en/tools/wg-easy-compose-generator
# Host: vpn.example.com - WireGuard port: 51820/udp - panel: https://wg.example.com
volumes:
etc_wireguard:
caddy_data:
caddy_config:
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
environment:
- PORT=80
- TRUSTED_PROXIES=10.42.42.43,fdcc:ad94:bacf:61a3::2b
networks:
wg:
ipv4_address: 10.42.42.42
ipv6_address: fdcc:ad94:bacf:61a3::2a
volumes:
- etc_wireguard:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
- "51820:51820/udp" # WireGuard: the only port clients need
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv6.conf.all.forwarding=1
- net.ipv6.conf.default.forwarding=1
caddy:
image: caddy:2-alpine
container_name: caddy
ports:
- "80:80/tcp"
- "443:443/tcp"
- "443:443/udp"
networks:
wg:
ipv4_address: 10.42.42.43
ipv6_address: fdcc:ad94:bacf:61a3::2b
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
networks:
wg:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 10.42.42.0/24
- subnet: fdcc:ad94:bacf:61a3::/64
wg.example.com {
reverse_proxy wg-easy:80
}
03Installationsbefehle ausführen
# 1. Firewall: zuerst SSH, dann der WireGuard-Port
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 443/udp
sudo ufw enable
# Hinweis: Von Docker veröffentlichte Ports umgehen ufw. Öffnen/schließen Sie sie auch in der Provider-Firewall.
# 2. Ordner anlegen und die erzeugte(n) Datei(en) einfügen
sudo mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
sudo nano docker-compose.yml
sudo nano Caddyfile
# 3. wg-easy starten
sudo docker compose up -d
# Logs verfolgen (Strg+C zum Beenden)
sudo docker compose logs -f wg-easy
# 4. Panel öffnen: https://wg.example.com
Diese Datei braucht einen Server mit öffentlicher IP
Contabo Cloud VPS 4 (4 vCPU, 8 GB RAM, eigene IPv4, unbegrenzter Traffic): 5,50 € pro Monat bei 24 Monaten Laufzeit (Preis geprüft am 17.10.2026), also alles, was wg-easy braucht.
Affiliate-Link: Wir erhalten eine Provision, ohne Mehrkosten für Sie.
Karte abgelehnt oder lieber ein US-Anbieter? Ultahost VPS Basic kostet 5,52 $/Monat bei 24 Monaten (gelesen am 21. Oktober 2026) und nimmt auch Bitcoin, Alipay, WeChat Pay und Qiwi an; prüfe die Bedingungen für dein Land. Ultahost-VPS ansehen
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:14
container_name: wg-easy
environment:
- WG_HOST=vpn.example.com # Ihre VPS-Domain oder öffentliche IP
- PASSWORD_HASH=<bcrypt-hash> # Web-UI-Login
- WG_DEFAULT_DNS=1.1.1.1
volumes:
- ./config:/etc/wireguard # Persistenz - behalten Sie dies auf dem Host
ports:
- "51820:51820/udp" # WireGuard-Daten
- "51821:51821/tcp" # Web-UI (diesen auf Ihre IP beschränken)
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
Drei Zeilen erledigen die Hauptarbeit und sind die üblichen Fehlerquellen:
cap_add: NET_ADMINermöglicht es dem Container, daswg0-Interface zu verwalten. Ohne diese kann der Container den Tunnel nicht hochfahren.sysctls: net.ipv4.ip_forward=1verwandelt die Box in einen Router. Ohne diese verbindet sich der Tunnel, aber es wird kein Verkehr darüber geleitet - die häufigste Ursache für "es sagt verbunden, aber nichts funktioniert".volumes: ./configspeichert Schlüssel und Peers auf dem Host, sodass ein erneutes Erstellen nicht jeden Client löscht.
Öffnen Sie den UDP-Datenport öffentlich; beschränken Sie den TCP-Web-UI-Port auf Ihre eigene IP - lassen Sie 51821 niemals offen für das Internet.
Die Host-Checkliste (tun Sie dies, bevor Sie den Container beschuldigen)
Ein Container kann perfekt sein und dennoch nichts weiterleiten, weil die darunterliegende Schicht versagt:
- Cloud-Firewall: Öffnen Sie
51820/udpin der Sicherheitsgruppe Ihres Anbieters, nicht nur auf dem Host. Dies ist der häufigste stille Fehler auf einem VPS. Siehe welchen Port WireGuard nutzt und wie du ihn öffnest, falls Sie den Standardport ändern. - Host-Kernel-Modul: Die meisten modernen Distributionen liefern das WireGuard-Modul im Kernel (Linux 5.6+). Wenn
modprobe wireguardauf dem Host fehlschlägt, installieren Sie die Kernel-Header - der Container kann kein Modul laden, das der Host nicht hat. - DNS für Clients: Setzen Sie
WG_DEFAULT_DNS, damit Clients keine Anfragen an einen beliebigen Resolver leiten, den sie zuvor verwendet haben. Kombinieren Sie dies mit unserem WireGuard DNS-Leak-Präventionsleitfaden.
Wann ein Container die richtige Wahl ist - und wann nicht
Verwenden Sie Docker, wenn Sie andere Dienste auf derselben Box betreiben und WireGuard isoliert und reproduzierbar haben möchten, wenn Sie das Dashboard von wg-easy nutzen möchten oder wenn Sie häufig über Hosts hinweg neu bereitstellen. Das gesamte Setup wird zu einer Compose-Datei, die Sie versionieren und verschieben können.
Verzichten Sie auf Docker, wenn der VPS nichts anderes als WireGuard macht. Ein Bare-Metal apt install wireguard plus eine Konfigurationsdatei ist einfacher, hat ein bewegliches Teil weniger und ist trivial skriptbar - siehe unsere WireGuard-Konfigurationsvorlagen und den vollständigen Contabo + WireGuard Selbsthost-Walkthrough. Für eine VPN-Box mit nur einem Zweck fügt der Container eine Verpackung hinzu, die Sie nicht benötigen.
Der VPS darunter
Ob containerisiert oder nicht, WireGuard benötigt einen Host mit einer öffentlichen IP und einer anständigen Uplink-Verbindung. Ein kleiner VPS reicht aus - WireGuard ist so leicht, dass eine Instanz für 4-6 €/Monat ihren Netzwerkport lange vor der CPU auslastet. Contabo dient hier wegen des Preis-zu-Bandbreiten-Verhältnisses als Beispiel:
Holen Sie sich einen Contabo VPS für Ihren WireGuard-Container →
Für den vollständigen Preis-/Leistungsvergleich zwischen Anbietern siehe den günstigsten VPS für ein WireGuard VPN.
Das Wichtigste griffbereit: Das kostenlose WireGuard Cheat Sheet (5-seitiges PDF auf Englisch, direkter Download, ohne Anmeldung) enthält die Keepalive- und MTU-Tabellen, die Befehle wg genkey/wg pubkey/wg genpsk und die vier einzeiligen Server-Prüfungen, die zuerst laufen sollten, wenn ein Tunnel keinen Verkehr durchlässt. Das kostenpflichtige WireGuard Self-Hosting Kit (9 USD, auf Englisch) ergänzt eine Fehlersuche-Checkliste mit 12 Ursachen und 11 Konfigurationsvorlagen.
Ein VPN ändert Ihre IP. Nicht Ihren Browser.
Ein Tunnel ersetzt die Adresse, die ein Dienst sieht. An dem, was Ihr Browser von sich aus preisgibt, ändert er nichts - Schriften, Bildschirm, Zeitzone, Grafik-Stack. Diese Kombination reicht oft aus, um Sie über Sitzungen hinweg wiederzuerkennen.
Messen Sie Ihren Browser-Fingerabdruck - passiv, ohne Fragen, ohne Konto, ohne E-Mail-Adresse.
Die ehrliche Einschränkung
Docker macht WireGuard portabel, nicht sicherer. Der Container teilt den Host-Kernel, läuft mit NET_ADMIN und ist nur so abgesichert wie der Host. Er isoliert WireGuard nicht von der Maschine - jeder mit Root-Zugriff auf dem Host besitzt den Tunnel. Behandeln Sie den Container als Bereitstellungskomfort, härten Sie den Host, als ob WireGuard direkt darauf installiert wäre, und halten Sie den Web-UI-Port vom öffentlichen Internet fern. Tun Sie das, und containerisiertes WireGuard ist das sauberste Selbsthost-Setup, das es gibt.
Affiliate-Link
★ Nürnberger DSGVO-Rechenzentrum · ✓ Dedizierte IPv4 inklusive · 200-Mbit/s-Port
Hoste dein VPN auf deinem eigenen VPS → ContaboCloud VPS 4 · 5,50 €/Mon. · Karte oder PayPal · Bestellungen auch von außerhalb der EU→Preis geprüft am 17.10.2026, Laufzeit 24 Monate


