Mit einem eigenen VPS betreibst du den VPN-Server selbst und bestimmst, was er protokolliert.
Dafür brauchst du einen VPS (Virtual Private Server, ein virtueller Server in einem Rechenzentrum) mit öffentlicher IP-Adresse oder Domain (laut wg-easy-Doku, Stand: 08.11.2026). Aktuelle Tarife und Preise inkl. USt stehen im VPS-Vergleich.
Warum ein eigenes VPN?
Ein eigenes VPN eignet sich für: sicheren Zugang zu deinem Heimnetzwerk, verschlüsselten Verkehr in öffentlichen WLANs und Zugriff auf selbst gehostete Dienste wie Immich oder Paperless.
Der Unterschied zu einem kommerziellen VPN-Dienst: Du betreibst den Server, spielst die Updates ein und entscheidest über Logs und Standort. Eine Abgrenzung findest du weiter unten im Abschnitt „WireGuard vs. kommerzielle VPNs“.
Voraussetzungen
Du brauchst:
- Einen VPS mit Root-Zugang, x86_64 oder arm64, und eine öffentliche IP-Adresse oder Domain (laut wg-easy-Doku, Stand: 08.11.2026). Eine Angabe zu RAM oder CPU macht die Doku nicht. VPS-Angebote vergleichen →
- Eine von Docker unterstützte Ubuntu-Version, etwa 22.04, 24.04 oder 26.04 LTS (laut Docker-Doku, Stand: 08.11.2026)
- Docker mit Docker Compose
- Für den Zugriff auf die Web-Oberfläche übers Internet: eine Domain, die auf den Server zeigt
Traffic: Prüfe im Tarif das Inklusiv-Traffic-Volumen und was danach passiert, also Zusatzkosten oder Drosselung, laut Website des Anbieters. Tarife und Standorte findest du auf den Anbieterseiten von Hetzner, Netcup und IONOS; die Preise stehen dort live.
Server für dein eigenes VPN gesucht?
Achte auf Inklusiv-Traffic und eine öffentliche IPv4-Adresse.
VPS vergleichenSchritt 1: Docker installieren (falls nötig)
Installiere Docker über das apt-Repository, wie es die Docker-Doku für Ubuntu beschreibt; das Convenience-Script ist laut Docker nicht für Produktivsysteme gedacht (laut Docker-Doku, Stand: 08.11.2026).
Wenn du deinen Benutzer zur Gruppe docker hinzufügst, bekommt er damit Root-Rechte (laut Docker-Doku, Stand: 08.11.2026). Ohne diesen Schritt rufst du Docker mit sudo auf.
Schritt 2: wg-easy installieren
wg-easy ist eine Web-Oberfläche für WireGuard: Clients anlegen, QR-Code anzeigen, Konfiguration herunterladen. Das Projekt steht unter der Lizenz AGPL-3.0 (laut wg-easy-README, Stand: 08.11.2026).
Die Installation folgt der offiziellen Anleitung: Compose-Datei des Projekts herunterladen und starten (laut wg-easy-Doku, Stand: 08.11.2026):
mkdir -p ~/wg-easy && cd ~/wg-easy
curl -o docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml
# vor dem ersten Start: Web-Oberfläche nur lokal binden (siehe Schritt 3)
sed -i 's|"51821:51821/tcp"|"127.0.0.1:51821:51821/tcp"|' docker-compose.yml
sudo docker compose up -d
Die Compose-Datei nutzt das Image ghcr.io/wg-easy/wg-easy:15, gibt die Rechte NET_ADMIN und SYS_MODULE, bindet /lib/modules nur lesend ein und setzt IP-Forwarding als sysctls im Container (laut wg-easy-Compose-Datei, Stand: 08.11.2026).
Wichtig:
- Nutze den Tag
15, nichtlatest:latestzeigt laut Projekt noch auf v14 und sollte vermieden werden (laut wg-easy-Doku, Stand: 08.11.2026). - v15 ist eine Neuentwicklung. Die Umgebungsvariablen aus v14 wie
WG_HOST,PASSWORDoderWG_DEFAULT_DNSübernimmt es nicht; die Einstellungen liegen jetzt überwiegend im Admin-Panel (laut wg-easy-Doku, Stand: 08.11.2026). - Port 51820/UDP ist der WireGuard-Port und muss in der Firewall offen sein, Port 51821/TCP gehört zur Web-Oberfläche (laut wg-easy-Doku, Stand: 08.11.2026).
Schritt 3: Firewall konfigurieren
Erlaube zuerst SSH, sonst kann ufw enable deine laufende Verbindung trennen (laut Ubuntu-Doku, Stand: 08.11.2026):
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp # WireGuard
sudo ufw enable
Hat dein Hoster zusätzlich eine Cloud-Firewall, muss auch dort 51820/udp offen sein. Läuft der Reverse Proxy direkt auf dem Host, gib in ufw zusätzlich 80/tcp und 443 frei.
Hinweis: Ports, die Docker veröffentlicht, umgehen ufw (laut Docker-Doku, Stand: 08.11.2026). Eine ufw-Regel für Port 51821 schützt die Web-Oberfläche deshalb nicht. Deshalb bindet Schritt 2 den Port vor dem ersten Start an
127.0.0.1:51821:51821/tcp; dann ist er nur vom Server selbst erreichbar (laut Docker-Doku, Stand: 08.11.2026).
Schritt 4: Web-Oberfläche einrichten
wg-easy v15 lehnt HTTP ab, solange INSECURE nicht auf true steht (laut wg-easy-Doku, Stand: 08.11.2026). Ohne Reverse Proxy nennt die Doku das Setup unsicher; die Web-Oberfläche soll dann nicht von außerhalb des lokalen Netzes erreichbar sein (laut wg-easy-Doku, Stand: 08.11.2026).
Für den Zugriff übers Internet richtest du deshalb einen Reverse Proxy mit HTTPS und eigener Domain ein, zum Beispiel Caddy mit den Ports 80/tcp, 443/tcp und 443/udp (laut wg-easy-Doku, Stand: 08.11.2026).
Beim ersten Aufruf führt dich der Setup-Assistent durch Benutzername, Passwort, Host (öffentliche IP oder Domain) und Port (laut wg-easy-Doku, Stand: 08.11.2026).
Schritt 5: Ersten Client erstellen
Lege in der Web-Oberfläche einen Client an und vergib einen Namen, zum Beispiel „Handy“ oder „Laptop“. wg-easy zeigt danach einen QR-Code und bietet die Konfiguration zum Download an (laut wg-easy-README, Stand: 08.11.2026).
Willst du AdGuard Home als Werbeblocker nutzen (Abschnitt „Optional“ unten), richte es vor dem ersten Client ein. Jedes Gerät bekommt einen eigenen Client. So kannst du ein verlorenes Handy einzeln sperren, ohne die anderen Geräte neu einzurichten.
Schritt 6: Mobile Client einrichten (iOS/Android)
Per QR-Code geht es so:
- WireGuard-App aus dem App Store bzw. Play Store installieren (laut WireGuard-Projektseite, Stand: 08.11.2026)
- In der App einen neuen Tunnel per QR-Code anlegen
- QR-Code aus der wg-easy-Oberfläche scannen
- Tunnel aktivieren
Schritt 7: Desktop Client einrichten
Windows/macOS
- Windows-Installer bzw. macOS-App installieren (laut WireGuard-Projektseite, Stand: 08.11.2026)
- In wg-easy die Konfiguration des Clients als
.conf-Datei herunterladen - Die Datei in der WireGuard-App als Tunnel importieren
- Verbinden
Linux
Installiere das WireGuard-Paket deiner Distribution (laut WireGuard-Projektseite, Stand: 08.11.2026). wg-quick liest die Konfiguration aus /etc/wireguard/INTERFACE.conf (laut wg-quick-Manpage, Stand: 08.11.2026):
# Konfigurationsdatei nach /etc/wireguard/wg0.conf kopieren, dann:
sudo wg-quick up wg0
Schritt 8: Verbindung prüfen
Rufe bei aktivem Tunnel eine Seite auf, die deine öffentliche IP-Adresse anzeigt. Dort sollte die IP deines VPS stehen, nicht die deines Heimanschlusses.
Steht dort weiter deine eigene IP, prüfe, ob der Client den gesamten Verkehr durch den Tunnel schickt (siehe „Split-Tunneling“ unten).
Optional: Werbeblocker im VPN
Für einen Werbeblocker im VPN gibt es eine offizielle Anleitung mit AdGuard Home. Sie setzt WireGuard zurück, bestehende Clients werden dabei gelöscht (laut wg-easy-Doku, Stand: 08.11.2026). Richte das also vor dem ersten Client ein.
Den DNS-Server legst du in v15 je Client fest (laut wg-easy-Doku, Stand: 08.11.2026) oder beim unbeaufsichtigten Setup über INIT_DNS (laut wg-easy-Doku, Stand: 08.11.2026).
Häufige Probleme
Client verbindet nicht
- Ist Port 51820/UDP in ufw und in der Cloud-Firewall deines Hosters offen?
- Ist als Host die öffentliche IP oder Domain eingetragen (Setup-Assistent bzw. Admin-Panel)?
- Hinter NAT, etwa im Mobilfunknetz, hält PersistentKeepalive die Verbindung offen, zum Beispiel mit 25 Sekunden (laut WireGuard-Projektseite, Stand: 08.11.2026); in wg-easy stellst du den Wert je Client ein (laut wg-easy-Doku, Stand: 08.11.2026).
Verbunden, aber kein Internet
- wg-easy setzt die nötigen
POSTROUTING-Regeln selbst. Melden die Logs beim Start fehlendenat- oderfilter-Tabellen, lade die Kernelmodule, etwa mitmodprobe iptable_nat(laut wg-easy-Doku, Stand: 08.11.2026). - DNS-Problem: einen anderen DNS-Server in der Client-Konfiguration eintragen.
Langsame Verbindung
- Reicht die Anbindung deines VPS? Die Port-Geschwindigkeit steht im Tarif.
- MTU: wg-quick ermittelt sie automatisch (laut wg-quick-Manpage, Stand: 08.11.2026); in wg-easy lässt sie sich je Client anpassen (laut wg-easy-Doku, Stand: 08.11.2026).
Web-Oberfläche nicht erreichbar
- Aufruf über HTTP? Dann muss
INSECURE=truegesetzt sein, sonst gehst du über den Reverse Proxy mit HTTPS (laut wg-easy-Doku, Stand: 08.11.2026). - Container läuft?
docker ps - Logs prüfen:
docker logs wg-easy
Advanced: Split-Tunneling & Multi-Server
Split-Tunneling
Nur bestimmten Verkehr durch das VPN leiten: Trage in den Allowed IPs des Clients nur bestimmte IPs oder Netze statt 0.0.0.0/0 und ::/0 ein (laut wg-easy-Doku, Stand: 08.11.2026). Mit 0.0.0.0/0 bzw. ::/0 legt wg-quick die Standardroute durch den Tunnel (laut wg-quick-Manpage, Stand: 08.11.2026).
VPN für das ganze Heimnetzwerk
Manche Router können selbst als WireGuard-Client arbeiten, etwa pfSense über ein Zusatzpaket (laut Netgate-Doku, Stand: 08.11.2026). Ob und wie dein Router das kann, steht in seiner Doku.
Multi-Server-Setup
Mehrere VPS-Standorte: wg-easy läuft auf jedem Server getrennt, und jeder Client bekommt je Server eine eigene Konfiguration.
Sicherheits-Tipps
- Web-Oberfläche nicht direkt ins Internet stellen: Port an
127.0.0.1binden oder nur über den Reverse Proxy freigeben (laut Docker-Doku, Stand: 08.11.2026) - Langes, nur hier genutztes Passwort und Zwei-Faktor-Anmeldung per TOTP (laut wg-easy-Doku, Stand: 08.11.2026)
- SSH nur mit Schlüssel, ohne Passwort-Login
- Sicherheitsupdates:
unattended-upgradesist unter Ubuntu Server vorinstalliert und spielt Sicherheitsupdates täglich ein (laut Ubuntu-Doku, Stand: 08.11.2026)
WireGuard selbst nutzt Curve25519, ChaCha20 mit Poly1305, BLAKE2s, SipHash24 und HKDF (laut WireGuard-Projektseite, Stand: 08.11.2026) und ist darauf ausgelegt, von Einzelnen vollständig überprüfbar zu sein (laut WireGuard-Projektseite, Stand: 08.11.2026).
WireGuard vs. kommerzielle VPNs
Ein selbst gehostetes WireGuard-VPN erfüllt einen anderen Zweck als kommerzielle VPN-Dienste. Beide haben ihre Berechtigung, je nachdem, was du erreichen willst.
| Eigenes WireGuard (VPS) | Kommerzieller VPN-Dienst | |
|---|---|---|
| Zweck | Zugriff auf eigene Dienste und das Heimnetz, IP deines VPS | Server an mehreren Standorten des Dienstes |
| Betrieb | du | der Dienst |
| Kosten | VPS-Tarif, Preise im VPS-Vergleich | Abo laut Dienst |
Für den Zugriff auf dein Heimnetz und deine selbst gehosteten Dienste reicht ein eigener Server. Nutzt du den VPS ohnehin für andere Dienste, kommt kein zusätzlicher Server dazu.
Traffic & Bandbreite: worauf du beim VPS achtest
VPN-Verkehr läuft in beide Richtungen über deinen VPS. Ob eingehender, ausgehender oder beider Traffic zählt, steht im Tarif des Anbieters. Achte deshalb auf zwei Werte:
- Inklusiv-Traffic: Prüfe das Inklusiv-Volumen und die Regeln bei Überschreitung laut Website des Anbieters.
- Anbindung: Prüfe die Port-Anbindung im Tarif.
Ein Standort nahe deinem Heimanschluss kann kürzere Wege bedeuten. Die Standorte je Anbieter stehen auf den Anbieterseiten von Hetzner, IONOS und Netcup.
Fazit
Du betreibst jetzt dein eigenes WireGuard-VPN auf deinem Server.
Auf demselben VPS kannst du weitere Dienste betreiben, etwa Vaultwarden als Passwort-Manager, Immich für Fotos oder Ollama für KI-Chats.
Häufig gestellte Fragen
Wie ist WireGuard kryptografisch aufgebaut?
Wie viele Clients kann ich verbinden?
Kann ich den VPS auch für andere Sachen nutzen?
Versteckt mich das vor meinem Internetanbieter?
Was kostet mich das im Monat?
Funktioniert WireGuard hinter CGNAT oder im Mobilfunknetz?
Weitere Self-Hosting Guides
VPS für dein eigenes VPN gesucht?
Achte auf das Inklusiv-Traffic-Volumen im Tarif.
Alle VPS vergleichen




