--- title: Wireguard VPN Profice description: published: true date: 2026-02-23T09:18:36.441Z tags: editor: markdown dateCreated: 2026-02-23T09:18:36.441Z --- # 🛡️ WireGuard VPN Dokumentation: Zentraler Sicherheits-Gateway Diese Dokumentation beschreibt die Installation und Verwaltung des WireGuard VPN-Servers, der als exklusiver Zugangspunkt für unsere internen Dienste fungiert. Aktuell sichert dieser den Zugriff auf **wiki.profice.de** und **n8n.profice.de**. --- ## 1. Funktionsprinzip und Architektur WireGuard agiert als "Türsteher" für unser Netzwerk. Anstatt Dienste direkt dem öffentlichen Internet auszusetzen, lauscht der WireGuard-Container auf einem einzelnen UDP-Port. Nur Geräte mit einem gültigen kryptografischen Schlüssel können einen Tunnel aufbauen. * **Modus:** Docker-basiertes Deployment. * **Zweck:** Verschlüsselter Zugriff auf das interne Docker-Netzwerk und IP-Whitelisting für Traefik. * **Abgedeckte Domains:** * `wiki.profice.de` * `n8n.profice.de` --- ## 2. Installation (Docker Compose) Wir nutzen das bewährte Image von **linuxserver/wireguard**, da es eine einfache Verwaltung von Peers (Clients) über Umgebungsvariablen ermöglicht. ### 2.1 Docker Compose Konfiguration Die Datei befindet sich auf dem Server unter `/opt/wireguard/docker-compose.yml`. ```yaml version: "3.8" services: wireguard: image: lscr.io/linuxserver/wireguard:latest container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=Europe/Berlin - SERVERURL=vpn.profice.de # Deine öffentliche IP oder DynDNS - SERVERPORT=51820 - PEERS=AdminHandy,AdminLaptop,Mitarbeiter1 # Namen der Endgeräte - PEERDNS=1.1.1.1 # Optionaler DNS - INTERNAL_SUBNET=10.13.13.0 - ALLOWEDIPS=0.0.0.0/0 # Oder spezifische interne IPs volumes: - /opt/wireguard/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: always ``` ## 3. Geräte-Verbindung (Client Setup) Sobald der Container gestartet ist, erstellt WireGuard automatisch die notwendigen Konfigurationsprofile für alle in der `PEERS`-Variable definierten Endgeräte. ### 3.1 Smartphone (iOS / Android) Die einfachste Methode für mobile Geräte ist die Verwendung des QR-Codes. 1. Installieren Sie die **WireGuard App** aus dem offiziellen App Store oder Google Play Store. 2. Öffnen Sie ein Terminal auf dem Server und lassen Sie sich den QR-Code anzeigen: ```bash docker logs -f wireguard ### 3.1 Mobile Verbindung (Smartphone/Tablet) Die einfachste Methode für mobile Geräte ist die Verwendung des QR-Codes. 1. **App installieren:** Installieren Sie die offizielle **WireGuard App** aus dem Google Play Store oder Apple App Store. 2. **QR-Code anzeigen:** Öffnen Sie ein Terminal auf dem Server und lassen Sie sich den Code in den Logs anzeigen: ```bash docker logs wireguard ``` 3. **Hinzufügen:** Wählen Sie in der App das **"+" Icon** -> **Scan from QR code**. 4. **Verbindung:** Scannen Sie den Code für Ihren Peer (z. B. `peer_AdminHandy`) und aktivieren Sie den Tunnel. --- ### 3.2 Desktop-Verbindung (Windows / macOS / Linux) Für Desktop-Rechner verwenden wir die Konfigurationsdateien (`.conf`). 1. **Konfiguration finden:** Navigieren Sie auf dem Server in den Ordner des jeweiligen Peers: ```bash cd /opt/wireguard/config/peer_/ ``` 2. **Download:** Kopieren Sie die Datei `peer_.conf` sicher auf Ihren Computer (z. B. via SCP oder SFTP). 3. **Import:** * Installieren Sie den Client von [wireguard.com](https://www.wireguard.com). * Wählen Sie **Tunnel aus Datei importieren** und wählen Sie die `.conf`-Datei aus. 4. **Aktivieren:** Klicken Sie auf **Aktivieren**, um die gesicherte Verbindung herzustellen. --- ## 4. Integration mit Traefik & Domain-Schutz Der Schutz der Domains `wiki.profice.de` und `n8n.profice.de` erfolgt durch eine Kombination aus verschlüsseltem Tunnel und **IP-Whitelisting** auf Proxy-Ebene. ### 4.1 IP-Whitelisting in Traefik Damit nur VPN-Nutzer auf die Weboberflächen zugreifen können, wird eine Middleware definiert. Diese lässt ausschließlich Traffic aus dem WireGuard-Subnetz zu. **Beispiel für die Traefik-Konfiguration (Dynamic File Config):** ```yaml http: middlewares: vpn-only-access: ipWhiteList: sourceRange: - "10.13.13.0/24" # Das interne WireGuard-Subnetz - "172.18.0.0/16" # Optional: Das interne Docker-Netzwerk ``` ### 4.2 Zuweisung zu den Diensten Damit die Sicherheits-Middleware aktiv wird, muss sie in den Docker-Labels der jeweiligen Dienste (**n8n** und **Wiki.js**) hinterlegt werden. Dies teilt Traefik mit, dass jede Anfrage an diese Domains zuerst die IP-Whitelist-Prüfung bestehen muss. Fügen Sie folgende Zeilen zu den entsprechenden Containern in Ihrer `docker-compose.yml` hinzu: **Für n8n:** ```yaml labels: - "traefik.http.routers.n8n.middlewares=vpn-only-access@file" ``` **Für Wiki.js:** ```yaml labels: - "traefik.http.routers.wiki.middlewares=vpn-only-access@file" ``` ## 5. Verwaltung neuer Benutzer (Peers) Die Verwaltung von Benutzern und Geräten erfolgt zentral über die Konfiguration des WireGuard-Docker-Containers. Der Prozess ist hochgradig automatisiert: ### 5.1 Einen neuen Peer hinzufügen Um einen neuen Mitarbeiter oder ein weiteres Gerät (z. B. ein Tablet) hinzuzufügen, gehen Sie wie folgt vor: 1. **Konfigurationsdatei öffnen:** Öffnen Sie die `docker-compose.yml` im WireGuard-Installationsverzeichnis (meist `/opt/wireguard/`). 2. **Peer-Liste erweitern:** Suchen Sie unter `environment:` die Variable `PEERS=`. Fügen Sie den neuen Namen durch ein Komma getrennt hinzu. * *Wichtig:* Keine Leerzeichen verwenden und nur alphanumerische Zeichen nutzen. * *Beispiel:* `PEERS=AdminPC,ChefHandy,Mitarbeiter_A` 3. **Änderungen anwenden:** Starten Sie den Stack neu. WireGuard erkennt die Änderung und generiert im Hintergrund automatisch neue Schlüsselpaare und Konfigurationsdateien: ```bash docker-compose up -d ``` ### 5.2 Zugriff auf die Zugangsdaten Nach dem Neustart erstellt der Container für jeden Peer einen eigenen Unterordner. Diese finden Sie auf dem Host-Server unter: ` /opt/wireguard/config/peer_/` In diesem Ordner befinden sich: * **peer_.conf:** Die Konfigurationsdatei für Desktop-Clients. * **peer_.png:** Der QR-Code für die schnelle Einrichtung auf mobilen Endgeräten. --- ## 6. Fehlerbehebung (Troubleshooting) Falls Probleme bei der Verbindung oder beim Zugriff auf die geschützten Domains auftreten, nutzen Sie bitte die folgende Tabelle zur Diagnose: | Problem | Mögliche Ursache | Lösung | | :--- | :--- | :--- | | **Kein Handshake möglich** | Der UDP-Port 51820 ist durch eine Firewall blockiert. | Stellen Sie sicher, dass Port **51820/UDP** am Router und in der Server-Firewall (z.B. UFW) für externe Anfragen geöffnet ist. | | **VPN steht, aber kein Internet** | Das IP-Forwarding am Host-System ist deaktiviert. | Prüfen Sie dies mit `sysctl net.ipv4.ip_forward`. Der Wert muss auf `1` stehen. Aktivieren Sie es ggf. in der `/etc/sysctl.conf`. | | **Domains nicht auflösbar** | Die DNS-Konfiguration im VPN-Profil ist inkorrekt. | Prüfen Sie die `PEERDNS`-Einstellung in der Docker-Konfiguration. Empfohlen ist ein stabiler DNS wie `1.1.1.1` oder der interne DNS des Netzwerks. | | **Traefik meldet "403 Forbidden"** | Die IP-Adresse des VPN-Clients ist nicht in der Whitelist der Traefik-Middleware. | Kontrollieren Sie die Traefik-Konfiguration. Das Subnetz des VPNs (z. B. `10.13.13.0/24`) muss explizit in der `ipWhiteList`-Middleware erlaubt sein. | | **Verbindung bricht häufig ab** | Instabile Internetverbindung oder MTU-Probleme. | Testen Sie eine geringere MTU-Größe in der Client-Konfiguration (z. B. `MTU = 1280`). | --- ## 7. Sicherheitsrevisions-Log Sämtliche Änderungen an der Peer-Liste oder den Firewall-Regeln müssen im Git-Repository des Infrastruktur-Teams dokumentiert werden, um die Nachvollziehbarkeit des Zugriffsmanagements zu gewährleisten. --- **Dokumentationsstatus:** Aktiv ✅ **Abteilung:** IT-Security / DevOps **Verantwortlich:** Systemadministrator **Letzte Aktualisierung:** 23.02.2026