Zum Inhalt

VPS Hybrid-Konzept: Lokaler Pi5 + Externer Server

Stand: 28. März 2026 Status: Konzept / Entscheidungsvorlage


Motivation

Der Raspberry Pi 5 (raspip5) betreibt aktuell 26 Docker-Container mit 3,4 GB RAM + Swap. Das umfasst sowohl den lokalen Smart-Home-Stack als auch das CK-Netzwerk-Monitoring.

Ziel: Trennung in zwei Systeme: - Pi5 (lokal): Smart Home, lokale Geräte, Credentials - VPS (extern): CK-Monitoring, Dokumentation, Web-Services


Container-Aufteilung

Lokal auf Pi5 — Smart Home Hub (~1,5 GB RAM, 9 Container)

Container RAM Grund: lokal
homeassistant 775 MB Zigbee, Hue, Meross, Matter, Modbus
zigbee2mqtt 116 MB USB-Coordinator am Pi
mosquitto 4 MB MQTT-Broker für Z2M
matter-server 61 MB Lokale Matter-Geräte
pihole 170 MB DNS-Blocker für Heimnetz
sungrow-exporter 20 MB Modbus TCP 192.168.100.75
fritzbox-exporter 37 MB TR-064 lokal
node-exporter 23 MB Pi5 Systemmetriken
samba-timemachine 140 MB Time Machine Backup (401 GB Daten)

VPS extern — CK Monitoring & Doku (~1,5 GB RAM, 17 Container)

Container RAM Funktion
prometheus 126 MB Zentrale Metrik-DB (30d Retention)
grafana 280 MB Dashboards, extern erreichbar
loki 182 MB Log-Aggregation
promtail 64 MB Log-Collector
caddy 33 MB HTTPS Reverse Proxy
alertmanager 25 MB Alert-Routing
alertmanager-ntfy-bridge 5 MB ntfy-Integration
ntfy 14 MB Push-Benachrichtigungen
gatus 31 MB Uptime-Monitoring
homepage 108 MB Service-Dashboard
gitea 123 MB Git-Repos, Dokumentation
oxidized 37 MB Netzwerk-Config-Backup
blackbox-exporter 44 MB HTTP/ICMP Probes
sophos-central-exporter 23 MB Sophos Cloud API
dynamics365-exporter 27 MB D365 Business Central API
duplicati 216 MB Offsite-Backup
watchtower 20 MB Container-Auto-Updates

VPS-Anforderung

Ressource Minimum Komfort
RAM 4 GB 8 GB
vCPUs 2 4
Storage 80 GB SSD 160 GB SSD
Traffic 5 TB/Monat 20 TB/Monat
IPv4 + IPv6 ja ja
Standort DE/EU (DSGVO) DE/EU (DSGVO)

Daten-Volumen auf dem VPS: Prometheus ~300 MB, Loki ~8 GB, Gitea ~115 MB, Rest minimal. Die 401 GB Samba-Daten bleiben lokal auf dem Pi5.


Preisvergleich (DE-Anbieter, ca. Q1 2025/2026)

Variante A: Minimum (4 GB / 2 vCPU / 80 GB)

# Anbieter Produkt vCPU RAM SSD Preis/Monat
1 Contabo Cloud VPS S 4 8 GB 200 GB ~5 €
2 OVHcloud VPS Value 2 4 GB 80 GB ~7 €
3 Hetzner CPX21 3 4 GB 80 GB ~7,50 €
4 Netcup VPS 1000 G11 4 8 GB 256 GB ~8 €
5 IONOS VPS M 2 4 GB 160 GB ~9 €

Variante B: Komfort (8 GB / 4 vCPU / 160 GB)

# Anbieter Produkt vCPU RAM SSD Preis/Monat
1 Contabo Cloud VPS M 6 16 GB 400 GB ~9 €
2 Hetzner CPX31 4 8 GB 160 GB ~13,50 €
3 Netcup VPS 2000 G11 6 16 GB 512 GB ~14,50 €
4 OVHcloud VPS Essential 4 8 GB 160 GB ~14,40 €
5 IONOS VPS L 4 8 GB 240 GB ~15 €

US-Anbieter (DigitalOcean, Linode, Vultr): ~22-44 €/Mo, nicht empfohlen für DE/DSGVO.

Empfehlung

Hetzner CPX21 (~7,50 €/Mo) — bestes Gesamtpaket: - Seriöser DE-Anbieter, DSGVO-konform - Exzellente API (Terraform, CLI) - Feste IPv4 → kein DS-Lite/DynDNS mehr - Snapshots günstig (0,01 €/GB/Mo) - Standort Falkenstein oder Nürnberg

Alternative: Netcup VPS 1000 (~8 €/Mo) für mehr RAM/Storage (8 GB / 256 GB).


Verbindung Pi5 ↔ VPS

WireGuard-Tunnel zwischen Pi5 und VPS:

Pi5 (192.168.178.199)          WireGuard           VPS (feste IPv4)
├── node-exporter:9100    ──────────────────→  Prometheus scrapet
├── fritzbox-exporter:9787 ─────────────────→  Prometheus scrapet
├── sungrow-exporter:9789  ─────────────────→  Prometheus scrapet
├── pihole-exporter:9617   ─────────────────→  Prometheus scrapet
├── HA API :8123           ─────────────────→  Gatus Health-Check
└── Syslog (Sophos)        ─────────────────→  Promtail/Loki

Alternative: Lokale Exporter nutzen Prometheus Remote-Write und pushen Metriken zum VPS. Vorteil: VPS braucht keinen Zugriff auf das Heimnetz.


Sicherheitsbewertung: Credentials

Credentials-Bestand auf dem Pi5

Datei/Ort Inhalt
.env.sophos Sophos Central API Key
.env.m365 Microsoft 365 Credentials
.env.dynamics Dynamics 365 API
.env.docbox DocBox API
.env.frb FundraisingBox API
dokumentation/ Klartext-Passwörter in Markdown
.storage/auth Home Assistant Refresh Tokens
docker-compose.yml Pi-hole PW, Grafana PW
CLAUDE.md / Memory SSH-Passwörter, Service-Zugänge
1Password CLI Service-Account Token, Vault-Zugriff

Vergleich: Pi5 vs. VPS

Kriterium Pi5 (zuhause) VPS (Rechenzentrum)
Physischer Zugriff Nur wer ins Haus kommt Hoster-Personal hat Zugang
Netzwerk-Exposition DS-Lite, kein IPv4 inbound Feste IPv4, permanent exponiert
SSH-Angriffsfläche Nur Heimnetz Sofort von Bots gescannt
Disk-Zugriff Dritter Niemand Hoster theoretisch möglich
DSGVO Eigenverantwortung AVV (Auftragsverarbeitung) nötig
Ausfallrisiko Strom/Internet zuhause 99,9% SLA, redundant

Bewertung

Der Pi5 ist für Credentials sicherer: 1. Kein Inbound-IPv4 (DS-Lite) — praktisch nicht aus dem Internet angreifbar 2. Physisch im eigenen Haushalt — kein Dritter hat Festplattenzugriff 3. Kein Hosting-Anbieter der bei Insolvenz/Beschlagnahme Zugriff erhält

Ein VPS wäre für Credentials schlechter: 1. Feste IPv4 = permanent exponiert (SSH-Brute-Force, Port-Scans) 2. Hoster-Personal hat theoretisch physischen Disk-Zugriff 3. Bei Beschlagnahme oder Anbieterfehler: Daten potenziell offengelegt

Empfehlung: Credential-Strategie im Hybrid-Setup

Grundregel: Alle Secrets bleiben auf dem Pi5. Der VPS speichert keine Credentials.

Pi5 (Secrets-Vault) VPS (keine Secrets)
Alle .env-Dateien Prometheus (keine Secrets nötig)
1Password CLI + Token Grafana (admin/admin, unkritisch)
HA Auth Tokens Caddy (Let's Encrypt, automatisch)
Dokumentation mit Passwörtern Gitea (eigene Auth, keine Klartext-PWs in Repos!)
CLAUDE.md mit Credentials Loki (Logs, keine Secrets)

Exporter mit API-Keys (Sophos, D365, DocBox): - Laufen auf dem VPS, aber Credentials werden NICHT auf der VPS-Disk gespeichert - Stattdessen: Environment-Variablen per 1Password CLI oder HashiCorp Vault zur Laufzeit injiziert - Alternativ: Exporter bleiben auf dem Pi5 und pushen per Remote-Write

VPS-Härtung: - SSH nur per Key-Auth (kein Passwort-Login) - fail2ban gegen Brute-Force - ufw-Firewall: nur Ports 22, 80, 443, WireGuard offen - Disk-Encryption (LUKS) wenn vom Anbieter unterstützt - Automatische Security-Updates (unattended-upgrades)


Vorteile nach Migration

Thema Vorher (alles auf Pi5) Nachher (Hybrid)
Grafana extern DS-Lite, IPv6-only, DynDNS Feste IPv4, direkt erreichbar
Pi5 RAM 3,4 GB + Swap, OOM-Risiko ~1,5 GB, entspannt
Monitoring-Verfügbarkeit Abhängig von Heim-Internet 99,9% SLA im RZ
Credentials Alles auf einem System Getrennt: Secrets lokal, Services extern
Claude Code OOM-Risiko bei langen Sessions Kann auf VPS laufen (mehr RAM)
Kosten ~5 € Strom/Monat (Pi5) ~5 € Strom + ~8 € VPS = ~13 €/Mo

Server-Daten (bestellt 28.03.2026)

Anbieter Hetzner Cloud
Produkt CPX32
Hostname sck-debian-nbg
IPv4 178.104.125.96
IPv6 2a01:4f8:1c18:13cb::/64
Standort Nürnberg
OS Debian 13 (Trixie)
Specs 4 vCPU AMD, 8 GB RAM, 160 GB NVMe
Preis 10,99 €/Mo (inkl. IPv4)
Kundennr. K0397824026
SSH ssh ak@178.104.125.96 (Key-Auth)
Hetzner Console https://console.hetzner.com
Credentials 1Password Vault CK → "Hetzner"

WireGuard-Tunnel

IP
VPS (wg0) 10.100.0.1
Pi5 (wg0) 10.100.0.2
Latenz ~14 ms
Config /etc/wireguard/wg0.conf (beide Seiten)

Grundinstallation (erledigt 28.03.2026)

  • [x] User ak + SSH-Keys (Pi5 + Mac)
  • [x] SSH-Härtung (Key-only, kein Passwort-Login)
  • [x] fail2ban (SSH, 3 Versuche, 1h Ban)
  • [x] ufw Firewall (22, 80, 443, 51820/udp)
  • [x] Docker CE 29.3.1 + Compose 5.1.1
  • [x] WireGuard-Tunnel Pi5 ↔ VPS

Migration (erledigt 28.03.2026)

  • [x] Docker-Compose für VPS erstellen (17 Container)
  • [x] Configs + Daten (Prometheus, Grafana, Alertmanager, Caddy, Loki, Gitea, ...) kopiert
  • [x] Alle Container gestartet und getestet
  • [x] Prometheus Scrape-Config: lokale Targets via WireGuard, CK-Targets via VPN
  • [x] Grafana: 16 Dashboards importiert (alle Ordner: Netzwerk, Standorte, System, KLV)
  • [x] Caddy + Let's Encrypt auf VPS (3 externe Domains)
  • [x] DNS umgestellt (anknorr.ddnss.de → 178.104.125.96, A+AAAA)
  • [x] ddclient auf Pi5 deaktiviert
  • [x] Pi5 aufgeräumt (17 Container entfernt, 9 verbleiben)
  • [x] Homepage-Config angepasst (neue URLs)
  • [x] Interne Ports abgesichert (nur via WireGuard, nicht aus Internet)
  • [x] WireGuard MTU auf 1280 gesetzt (DS-Lite Kompatibilität)
  • [x] OpenVPN Split-Tunnel zum CK-Netz (User ankn-vps, direkt ohne Pi5)

OpenVPN zum CK-Netz

Endpoint vpn.creative-kirche.de:7443
User ankn-vps
Passwort 1Password Vault CK → "Hetzner"
VPN-IP 10.244.2.2
Modus Split-Tunnel (nur 10.128.x.x und 10.244.2.x)
Config /etc/openvpn/client/ck-vpn.conf
Service openvpn-client@ck-vpn.service

Netzwerk-Architektur

VPS (178.104.125.96)
├── OpenVPN → vpn.creative-kirche.de (10.244.2.2)
│   └── Direkt: Sophos XGS, WLAN APs, SaltoServer SNMP
│       (ICMP, HTTP, DNS, SNMP Probes — 40 Targets)
├── WireGuard → Pi5 (10.100.0.2)
│   └── Node-Exporter, FritzBox, Sungrow, Finance, Salto Metrics
│       (lokale Exporter — 7 Targets)
└── Internet (feste IPv4)
    └── HTTPS: Grafana, Gatus, Gitea (via Caddy)
    └── Eigene Probes: HTTP/DNS/ICMP vom VPS-Standort (33 Targets)

Prometheus: 80/80 Targets UP

Noch offen

  1. Claude Code auf VPS installieren
  2. Sync-Script auf 3 Instanzen erweitern (Pi5, VPS, Mac)
  3. AVV mit Hetzner abschließen (DSGVO)
  4. Sophos Syslog auf VPS umleiten (aktuell noch auf Pi5)
  5. Finance-Exporter auf VPS migrieren (aktuell systemd auf Pi5)

Erstellt: 28.03.2026, Migration abgeschlossen: 28.03.2026