- Published on
Wireguard - VPN Server mit Docker und Traefik aufsetzen
- Authors
- Name
- Tobias Steltner
Intro
- Warum ein VPN nutzen und selbst hosten?
- Voraussetzungen
- Installation von WG-Easy auf deinem Hetzner-Server
In Zeiten zunehmender Überwachung und Datenunsicherheit im Internet ist der Einsatz eines VPNs (Virtual Private Network) eine effektive Methode, um deine Privatsphäre zu schützen.
Ein VPN verschlüsselt deinen gesamten Internetverkehr und leitet ihn über einen sicheren Server, was nicht nur deine Daten schützt, sondern auch deine Online-Aktivitäten anonymisiert.
Die beste Kontrolle und Sicherheit erhältst du jedoch, wenn du deinen eigenen VPN-Server betreibst. In diesem Artikel zeige ich dir, wie du auf einem Hetzner-Server einen WireGuard VPN-Server mit WG-Easy einrichtest.
Warum ein VPN nutzen und selbst hosten?
Erhöhte Sicherheit: Mit einem VPN wird dein Internetverkehr verschlüsselt, was dich vor Hackern und neugierigen Blicken schützt, besonders in öffentlichen Netzwerken.
Kontrolle über deine Daten: Durch den Betrieb eines eigenen VPN-Servers hast du die volle Kontrolle über die Protokolle und Einstellungen, wodurch du sicherstellen kannst, dass keine Dritten Zugriff auf deine Daten haben.
Anonymität und Datenschutz: Dein echter Standort wird verborgen, und du surfst anonym im Internet, was deine Privatsphäre erheblich verbessert.
Kosteneffizienz: Langfristig kann ein selbst gehosteter VPN-Server günstiger sein als Abonnements bei kommerziellen VPN-Anbietern.
Voraussetzungen
Bevor wir mit der Installation beginnen, stelle sicher, dass du folgende Voraussetzungen erfüllst:
- Hetzner Cloud Konto: Melde dich bei Hetzner an und erstelle einen Cloud-Server. Der kleinste V-Server reicht hier aus (aktuell CX22 für 4.51€).
- Docker installieren: Du solltest Docker installieren auf deinem Server.
- SSH-Zugang: Stelle sicher, dass du SSH-Zugriff auf deinen Hetzner-Server hast.
- Domain (optional): Falls du deinen VPN-Server über eine benutzerfreundliche URL erreichen möchtest, kannst du eine Domain einrichten und auf deinen Server verweisen. Es würde aber auch eine DynDNS bei zB. ipv64.net ausreichen.
- Traefik installieren: Es wird empfohlen, auf dem Server Traefik zu installieren, welches die Funktion eines Reverse Proxys übernimmt. Ich empfehle die Anleitung von goneuland.de
Installation von WG-Easy auf deinem Hetzner-Server
1. Vorbereiten des Servers
Bei der Konfiguration des Servers bei Hetzner ist es empfehlenswert, Ubuntu 24.04 als Betriebssystem und unter "Apps" Docker CE zu wählen. Dadurch kann die Installation von Docker vermieden werden.
Des Weiteren sei darauf verwiesen, dass die Verwendung eines SSH-Keys zu empfehlen ist.
Verbinde dich per SSH mit deinem Hetzner-Server:
1.1 SSH Starten
ssh root@deine-server-ip
1.2 Server aktualisieren
apt update && apt upgrade -y
1.2 Erstellen eines Sudo-Users für Docker
Nach der Installation von Docker ist es ratsam, die Docker-Befehle nicht als root
auszuführen, sondern einen normalen Benutzer mit den entsprechenden Berechtigungen zu verwenden.
Hier erfährst du, wie du einen sudo
-User für Docker erstellst:
adduser <username> #wähle einen usernamen
Folge den Anweisungen, um ein Passwort zu setzen und die Benutzerinformationen zu konfigurieren.
Füge den Benutzer zur Docker-Gruppe hinzu
Damit der Benutzer Docker-Befehle ohne sudo ausführen kann, muss er zur Docker-Gruppe hinzugefügt werden:
usermod -aG docker <username> #wähle dein usernamen
Der Benutzer muss sich ab- und wieder anmelden, damit die Gruppenänderungen wirksam werden. Alternativ kannst du den neuen Benutzer mit folgendem Befehl anmelden:
su - <username> #wähle dein usernamen
Um zu überprüfen, ob der Benutzer die Docker-Befehle ohne sudo ausführen kann, führe einen einfachen Docker-Befehl aus:
docker ps
Wenn der Befehl ohne Fehlermeldung ausgeführt wird, hat der Benutzer erfolgreich die erforderlichen Berechtigungen.
2. wg-easy installieren
2.1 Ordnerstruktur anlegen
Erstelle ein Verzeichnis für WG-Easy und wechsle in dieses Verzeichnis:
mkdir -p /opt/containers/wg-easy && cd /opt/containers/wg-easy
2.2 Compose Datei anlegen
Erstelle eine docker-compose.yml
Datei mit folgendem Inhalt:
nano docker-compose.yml
Inhalt:
---
services:
wg-easy:
environment:
- WG_HOST=vpn.deinedomain.com
- PASSWORD_HASH=
- WG_PORT=51820
- WG_DEFAULT_DNS=1.1.1.1
image: ghcr.io/wg-easy/wg-easy
container_name: wg-easy
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
labels:
- "traefik.enable=true"
- "traefik.http.routers.wireguard.entrypoints=websecure"
- "traefik.http.routers.wireguard.rule=Host(`vpn.deinedomain.com`)"
- "traefik.http.routers.wireguard.tls=true"
- "traefik.http.routers.wireguard.tls.certresolver=http_resolver"
- "traefik.http.routers.wireguard.service=wireguard"
- "traefik.http.services.wireguard.loadbalancer.server.port=51821"
- "traefik.docker.network=proxy"
- "traefik.http.routers.wireguard.middlewares=default@file"
networks:
- proxy
networks:
proxy:
external: true
2.3 Anpassungen durchführen
- WG_HOST ändern
- Domain bei Traefik anpassen (
vpn.deinedomain.com
)" - PASSWORD_HASH erstellen
2.3.1 Passwort Hash generieren
docker run ghcr.io/wg-easy/wg-easy wgpw deinpasswort | sed 's#\$#\$\$#g' | sed "s/'//g"
Ausgabe:
PASSWORD_HASH=$$2a$$12$$j6mIa4b0WVSspCH8w801sur6Exk.h41K9uEH0138qVAflH/TZbvAe
Kopiert nun diese ganze Ausgabe Zeile und setzt diese in die docker-compose.yml Datei ein.
2.4 Starte den Container
docker-compose up -d
3. Zugang Testen
Nun warten wir mal ca. 2 Minuten, dann solltest du unter vpn.deinedomain.com
dein Loginscreen von wg-easy sehen.