Ein VPN von einem kommerziellen Anbieter ist bequem, aber du musst dem Betreiber vertrauen – und zahlst monatlich. Die Alternative ist ein selbst gehosteter WireGuard-Server: Du behältst die volle Kontrolle über deinen Traffic, zahlst nur für einen kleinen VPS (ab etwa 3 Euro pro Monat) und bekommst mit WireGuard zudem eine Technik, die deutlich schneller und einfacher konfigurierbar ist als das betagte OpenVPN. Diese Anleitung bringt dich Schritt für Schritt zum eigenen VPN-Server, inklusive Client-Setup für Smartphone und Laptop.
Warum ausgerechnet WireGuard?
WireGuard ist ein modernes VPN-Protokoll, das 2020 in den Linux-Kernel aufgenommen wurde. Im Vergleich zu OpenVPN bringt es drei entscheidende Vorteile:
- Code-Basis unter 4.000 Zeilen – dadurch leichter zu auditieren und weniger Angriffsfläche (OpenVPN: über 100.000 Zeilen).
- Moderne Kryptografie (Curve25519, ChaCha20, Poly1305, BLAKE2) statt des alten Konfigurations-Zoos bei OpenVPN.
- Dramatisch schneller – in Benchmarks 3–5× mehr Durchsatz, und Verbindungsaufbau in Millisekunden.
WireGuard läuft auf Linux, macOS, Windows, iOS und Android. Die Client-Apps sind schlank und sehen überall gleich aus.
Voraussetzungen
Du brauchst:
- einen VPS mit öffentlicher IPv4 (z. B. bei Hetzner, Netcup, Contabo – ab ca. 3 €/Monat reicht)
- Root-Zugriff per SSH
- ein frisches Ubuntu 24.04 LTS oder Debian 12 (beide haben WireGuard im Standard-Repo)
- etwa 20 Minuten Zeit

Server-Setup in sechs Schritten
1. WireGuard installieren
sudo apt update && sudo apt install -y wireguard qrencodeqrencode brauchen wir später, um die Client-Konfiguration als QR-Code für das Smartphone auszugeben.
2. Schlüsselpaar auf dem Server erzeugen
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.keyDie Dateien enthalten jeweils einen einzigen Base64-kodierten Schlüssel. Halte den privaten Schlüssel geheim – wer ihn hat, kann deinen VPN-Server übernehmen.
3. Server-Konfiguration schreiben
Lege /etc/wireguard/wg0.conf an mit folgendem Inhalt (Platzhalter <SERVER_PRIV> durch den Inhalt von server_private.key ersetzen):
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIV>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADEDie 10.8.0.0/24 ist das interne VPN-Netz. Die beiden iptables-Zeilen sorgen dafür, dass der Traffic der Clients über die öffentliche IP des Servers ausgeleitet wird.
4. IP-Forwarding dauerhaft aktivieren
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf5. WireGuard starten und aktivieren
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0Wenn alles klappt, siehst du eine aktive wg0-Schnittstelle und keine Fehler im Log.
6. Firewall öffnen
sudo ufw allow 51820/udp
sudo ufw enableClient hinzufügen
Jedes Gerät bekommt ein eigenes Schlüsselpaar. Das Muster für einen neuen Client:
cd /etc/wireguard
wg genkey | tee client_laptop_priv.key | wg pubkey > client_laptop_pub.keyDann in der Server-Konfig /etc/wireguard/wg0.conf einen Peer-Block ergänzen:
[Peer]
PublicKey = <CLIENT_LAPTOP_PUB>
AllowedIPs = 10.8.0.2/32Und sudo wg syncconf wg0 <(wg-quick strip wg0) laufen lassen, damit der Server die neue Konfig ohne Neustart einliest.
Client-Konfig für Laptop/Handy
Auf dem Client reicht diese .conf-Datei:
[Interface]
PrivateKey = <CLIENT_LAPTOP_PRIV>
Address = 10.8.0.2/24
DNS = 9.9.9.9
[Peer]
PublicKey = <SERVER_PUB>
Endpoint = <SERVER_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25Die Einstellung AllowedIPs = 0.0.0.0/0 routet den gesamten Traffic über den Server (Full-Tunnel). Willst du nur bestimmte Netze tunneln – etwa, um remote auf dein Heimnetz zuzugreifen –, trägst du hier entsprechende Subnetze ein.
Für das Smartphone reicht: WireGuard-App installieren, die obige Konfig durch qrencode -t ansiutf8 < client.conf auf dem Server als QR-Code ausgeben und abfotografieren. Fertig.

Hardening – was du nicht vergessen solltest
- SSH absichern: Root-Login und Passwort-Auth abschalten, nur per Key-Login arbeiten.
- Automatische Updates:
unattended-upgradesaktivieren, damit Sicherheitspatches ohne dein Zutun landen. - Fail2Ban: blockt Brute-Force-Versuche auf SSH automatisch.
- Monitoring:
sudo wg showzeigt dir verbundene Peers und Handshake-Zeiten. Tools wiewireguard_exporterfür Prometheus machen daraus ein Dashboard. - Backup des Schlüssel-Verzeichnisses (
/etc/wireguard/), verschlüsselt abgelegt – sonst musst du bei einem Serverausfall alle Clients neu einrichten.
Typische Fallstricke
- Kein Internet nach dem VPN-Start: IP-Forwarding nicht aktiviert oder MASQUERADE-Regel fehlt. Die PostUp-Zeile in der Server-Config prüfen.
- Verbindung bricht alle paar Minuten ab: NAT auf dem Client-Router schließt den UDP-Flow. Abhilfe:
PersistentKeepalive = 25im Client-Config. - DNS leakt: Ohne
DNS = …in der Client-Config bleibt der Rechner auf dem ISP-Resolver. Entweder dendnsmasqdes Servers mitnutzen oder einen öffentlichen wie Quad9 (9.9.9.9) eintragen.
Fazit
Ein eigener WireGuard-Server ist in 20 Minuten eingerichtet, kostet ein paar Euro pro Monat und macht dich unabhängig von kommerziellen VPN-Anbietern. Du gewinnst Performance, Privatsphäre und ein tieferes Verständnis dafür, was bei einem VPN eigentlich passiert. Wenn du die Konfiguration einmal verstanden hast, kannst du sie für Split-Tunneling, Remote-Zugriff aufs Heimnetz oder als sicheren Gateway in einem öffentlichen WLAN flexibel erweitern – alles mit der gleichen Handvoll Dateien.


