Files
michaelschiemer/deployment/wireguard/INSTALLATION-LOG.md
Michael Schiemer 95147ff23e refactor(deployment): Remove WireGuard VPN dependency and restore public service access
Remove WireGuard integration from production deployment to simplify infrastructure:
- Remove docker-compose-direct-access.yml (VPN-bound services)
- Remove VPN-only middlewares from Grafana, Prometheus, Portainer
- Remove WireGuard middleware definitions from Traefik
- Remove WireGuard IPs (10.8.0.0/24) from Traefik forwarded headers

All monitoring services now publicly accessible via subdomains:
- grafana.michaelschiemer.de (with Grafana native auth)
- prometheus.michaelschiemer.de (with Basic Auth)
- portainer.michaelschiemer.de (with Portainer native auth)

All services use Let's Encrypt SSL certificates via Traefik.
2025-11-05 12:48:25 +01:00

6.0 KiB

WireGuard Installation Log

Dokumentation der manuellen WireGuard Installation auf dem Host-System.

Systemumgebung

# System prüfen
uname -a
# Linux hostname 6.6.87.2-microsoft-standard-WSL2 #1 SMP ...

# WireGuard Version
wg --version
# wireguard-tools v1.0.20210914

# Netzwerk Interface
ip addr show
# Haupt-Interface für WAN: eth0

Installation durchgeführt am

Datum: [WIRD BEIM AUSFÜHREN GESETZT] Benutzer: root (via sudo) Methode: Manual Setup Script

Installationsschritte

Schritt 1: Verzeichnis erstellen

sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard

Status: Bereit für Ausführung Zweck: Sicheres Verzeichnis für WireGuard-Konfiguration

Schritt 2: Server Keys generieren

cd /etc/wireguard
sudo wg genkey | sudo tee server_private.key | sudo wg pubkey | sudo tee server_public.key
sudo chmod 600 server_private.key
sudo chmod 644 server_public.key

Status: Bereit für Ausführung Zweck: Kryptographische Schlüssel für Server generieren Ausgabe:

  • server_private.key - Privater Schlüssel (geheim!)
  • server_public.key - Öffentlicher Schlüssel (für Clients)

Schritt 3: WireGuard Konfiguration erstellen

Datei: /etc/wireguard/wg0.conf

[Interface]
# Server Configuration
PrivateKey = [GENERATED_SERVER_PRIVATE_KEY]
Address = 10.8.0.1/24
ListenPort = 51820

# Enable IP forwarding
PostUp = sysctl -w net.ipv4.ip_forward=1

# NAT Configuration with nftables
PostUp = nft add table inet wireguard
PostUp = nft add chain inet wireguard postrouting { type nat hook postrouting priority srcnat\; }
PostUp = nft add rule inet wireguard postrouting oifname "eth0" ip saddr 10.8.0.0/24 masquerade

# Cleanup on shutdown
PostDown = nft delete table inet wireguard

# Peers will be added here via generate-client-config.sh

Status: Template erstellt Permissions: chmod 600 /etc/wireguard/wg0.conf

Schritt 4: nftables Firewall Rules

Datei: /etc/nftables.d/wireguard.nft

Features:

  • VPN Network Set: 10.8.0.0/24
  • Admin Service Ports: 8080, 9090, 3001, 9000, 8001
  • Public Service Ports: 80, 443, 22
  • Rate Limiting für SSH: 10/minute
  • Logging für blockierte Zugriffe

Status: Template erstellt Anwendung: sudo nft -f /etc/nftables.d/wireguard.nft

Schritt 5: IP Forwarding aktivieren

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf

Status: Bereit für Ausführung Zweck: Ermöglicht Paket-Weiterleitung zwischen VPN und Host-Netzwerk

Schritt 6: WireGuard Service aktivieren

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Status: Bereit für Ausführung Zweck: WireGuard als systemd Service starten und bei Boot aktivieren

Verifikation

WireGuard Status prüfen

sudo wg show wg0
# Erwartete Ausgabe:
# interface: wg0
#   public key: [SERVER_PUBLIC_KEY]
#   private key: (hidden)
#   listening port: 51820

Service Status prüfen

sudo systemctl status wg-quick@wg0
# Erwartete Ausgabe:
# ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
#    Loaded: loaded
#    Active: active (exited) since ...

nftables Rules prüfen

sudo nft list table inet wireguard_firewall
# Sollte alle Rules anzeigen

Netzwerk-Konnektivität prüfen

# Interface prüfen
ip addr show wg0
# Sollte 10.8.0.1/24 zeigen

# Routing prüfen
ip route | grep wg0
# Sollte Route für 10.8.0.0/24 zeigen

# Firewall prüfen
sudo nft list ruleset | grep wireguard

Nächste Schritte

1. Client-Konfiguration generieren

cd /home/michael/dev/michaelschiemer/deployment/scripts
sudo ./generate-client-config.sh michael-laptop

2. Client-Config importieren

  • Linux/macOS: Copy .conf file to /etc/wireguard/
  • Windows: Import via WireGuard GUI
  • iOS/Android: Scan QR code

3. Verbindung testen

# Vom Client aus:
ping 10.8.0.1

# Admin-Services testen:
curl -k https://10.8.0.1:8080  # Traefik Dashboard
curl http://10.8.0.1:9090      # Prometheus

Troubleshooting

WireGuard startet nicht

# Logs prüfen
sudo journalctl -u wg-quick@wg0 -f

# Konfiguration prüfen
sudo wg-quick up wg0

Keine Verbindung möglich

# Port prüfen
sudo ss -ulnp | grep 51820

# Firewall prüfen
sudo nft list ruleset | grep 51820

# IP Forwarding prüfen
cat /proc/sys/net/ipv4/ip_forward
# Sollte "1" sein

Client kann keine Admin-Services erreichen

# nftables Rules prüfen
sudo nft list table inet wireguard_firewall

# VPN-Routing prüfen
ip route show table main | grep wg0

# NAT prüfen
sudo nft list chain inet wireguard postrouting

Rollback-Prozedur

Falls etwas schiefgeht:

# WireGuard stoppen
sudo systemctl stop wg-quick@wg0
sudo systemctl disable wg-quick@wg0

# nftables Rules entfernen
sudo nft delete table inet wireguard_firewall
sudo nft delete table inet wireguard

# Konfiguration entfernen
sudo rm -rf /etc/wireguard/*
sudo rm /etc/nftables.d/wireguard.nft

# IP Forwarding zurücksetzen
sudo rm /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p

Sicherheitshinweise

  • Private Keys niemals committen oder teilen
  • Regelmäßige Key-Rotation (empfohlen: jährlich)
  • Client-Configs nach Generierung sicher speichern
  • Firewall-Logs regelmäßig überprüfen
  • VPN-Zugriffe monitoren

Performance-Metriken

Nach Installation zu überwachen:

  • CPU-Auslastung: WireGuard ist sehr effizient (<5% bei normaler Last)
  • Netzwerk-Durchsatz: Nahezu Leitungsgeschwindigkeit
  • Latenz: Minimal (+1-2ms Overhead)
  • Speicher: ~10MB RAM für WireGuard-Prozess

Status

Installation Status: BEREIT FÜR AUSFÜHRUNG

Nächster Schritt: Script ausführen mit:

cd /home/michael/dev/michaelschiemer/deployment/scripts
sudo ./manual-wireguard-setup.sh

Oder manuell durchführen: Jeden Schritt einzeln wie oben dokumentiert ausführen.