| Nächste Überarbeitung | Vorhergehende Überarbeitung |
| home_infrastruktur:systemanpassungen [2026/05/23 12:16] – angelegt - Externe Bearbeitung 127.0.0.1 | home_infrastruktur:systemanpassungen [2026/08/11 06:31] (aktuell) – [Reverse Proxy] nick |
|---|
| ====== Home IT-Infrastruktur & Systemanpassungen ====== | ====== Home IT-Infrastruktur & Systemanpassungen ====== |
| |
| Dieses Dokument fasst die wichtigsten Erkenntnisse und Konfigurationen der Home IT-Infrastruktur zusammen. | ===== NAS2 Wiederherstellung (12. Juli 2026) ===== |
| | |
| | **Ausgangslage:** Das Synology NAS2 (DS1019+, 192.168.128.222) wurde am 12. Juli 2026 neu aufgesetzt. Alle Konfigurationen gingen verloren, die eigentlichen Daten (Shared Folders, VM-Images) blieben erhalten. |
| | |
| | ==== Zertifikat ==== |
| | Let's Encrypt Zertifikat für ''nas2.lynx-consulting.ch'' erfolgreich neu beantragt via DSM-Wizard (HTTP-01 Challenge). Gültig bis 10.10.2026. |
| | |
| | **SAN-Einträge:** |
| | adguard.lynx-consulting.ch;drucker.lynx-consulting.ch;git.lynx-consulting.ch;grafana.lynx-consulting.ch;ha.lynx-consulting.ch;nas2.lynx-consulting.ch;plex.lynx-consulting.ch;prometheus.lynx-consulting.ch;wiki.lynx-consulting.ch |
| | |
| | **⚠️ Kritische Regel:** SANs im DSM-Zertifikatsdialog zwingend mit Semikolons ('';'') ohne Leerzeichen trennen! |
| | **Fehlende SAN:** ''llms.lynx-consulting.ch'' — DNS-Eintrag fehlt noch bei Hetzner (Account-Aussperrung). |
| | **Logs bei Problemen:** ''/var/log/messages'' auf dem NAS2. |
| | |
| | ==== Reverse Proxy ==== |
| | Alle Einträge mussten neu erstellt werden (Anmeldeportal → Erweitert → Reverse Proxy): |
| | |
| | ^ Dienst ^ Quelle ^ Port ^ Ziel ^ Port ^ |
| | | AdGuard | ''adguard.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.200 | 3000 (HTTPS) | |
| | | Gitea | ''git.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.200 | 3001 | |
| | | DokuWiki | ''wiki.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.200 | 8085 | |
| | | Drucker | ''drucker.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.254 | 443 (HTTPS) | |
| | | Home Assistant | ''ha.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.22 | 8123 (HTTP) | |
| | | Plex | ''plex.lynx-consulting.ch'' | 443 (HTTPS) | localhost | 32400 (HTTPS) | |
| | | Grafana | ''grafana.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.200 | 3002 (HTTP) | |
| | | Prometheus | ''prometheus.lynx-consulting.ch'' | 443 (HTTPS) | 192.168.128.200 | 9090 | |
| | |
| | **WebSocket-Header für HA:** Reverse-Proxy-Eintrag → Benutzerdefinierte Kopfzeile → Erstellen → WebSocket. Ohne diesen Header keine WebSocket-Verbindung zu HA. |
| | |
| | ==== Drucker (HP PageWide Pro 477dw) ==== |
| | * IP: 192.168.128.254 |
| | * **Reverse-Proxy Konfiguration:** HTTPS → HTTPS (443 → 443) |
| | |
| | **⚠️ Kritischer Host-Header-Fix:** Der HP-Drucker setzt Session-Cookies für seine eigene IP-Adresse. Der Synology-Reverse-Proxy überschreibt standardmäßig den Host-Header auf die externe Domain ("drucker.lynx-consulting.ch"). Der Drucker akzeptiert die Cookies dann nicht → alle dynamischen Kacheln (Füllstände, Scan, Fax, Energie) schlagen mit 403 Forbidden fehl! |
| | |
| | **Lösung — Benutzerdefinierte Kopfzeile:** |
| | * **Name:** ''Host'' |
| | * **Wert:** ''192.168.128.254'' |
| | |
| | Damit sieht der Drucker seine eigene IP im Host-Header, setzt und akzeptiert Cookies korrekt, und alle dynamischen Inhalte laden einwandfrei. |
| | |
| | **NICHT benötigt:** WebSocket-Header, X-Forwarded-Proto, X-Forwarded-Host — die wurden alle getestet und hatten keinen Effekt. Einzig der Host-Header-Fix löste das Problem. |
| | |
| | ==== Home Assistant (VM) ==== |
| | * IP: 192.168.128.22 (statisch) |
| | * HAOS 10.1, Core von 2023.7.1 → 2024.7.2 aktualisiert |
| | * Läuft als VM im Virtual Machine Manager auf NAS2 |
| | * **Problem:** Nach DSM-Reset kein Netzwerkadapter → VMM → Bearbeiten → "Default VM Network" zuweisen |
| | * **Synology-DSM-Integration:** Neuer Benutzer ''homeassistant'' (muss in Gruppe ''administrators'' sein), Port 5679, SSL-Prüfung deaktiviert |
| | |
| | ==== AdGuard Home ==== |
| | * Port 3000 (Host-Netzwerk), Version v0.107.77 |
| | * **Passwort-Reset:** v0.107 hat KEIN CLI-Reset und KEINE Web-UI-Passwortänderung! Workaround: bcrypt-Hash generieren und in ''/opt/adguardhome/conf/AdGuardHome.yaml'' ersetzen |
| | * Container ist Alpine-basiert → nur ''sh'', kein ''bash'' |
| | * **⚠️ Wichtig:** Vor Zertifikatserneuerung muss AdGuard deaktiviert werden (DNS-Rewrites leiten sonst auf private IPs um und Let's Encrypt lehnt ab) |
| | |
| | ==== Grafana ==== |
| | * Port-Mapping: Docker intern 3000 → Host 3001 (3000 von AdGuard belegt) |
| | * Reverse-Proxy: ''grafana.lynx-consulting.ch'' → localhost:3001 (HTTP) |
| | * **Tippfehler-Falle:** "consulting" mit **g** am Ende — ''consultin.ch'' führt zu nicht erreichbarer Seite |
| | |
| | ==== DokuWiki ==== |
| | * DokuWiki-Container überlebte den DSM-Reset (Docker-Daten erhalten) |
| | * **Problem:** Der Config-Manager war durch das ''markdownextra''-Plugin (Version 2013) blockiert — ParseError beim Laden |
| | * **Lösung:** Plugin über die Erweiterungsverwaltung deaktiviert (nicht gelöscht). Danach Config-Manager wieder funktionsfähig |
| | * **Config gesetzt:** ''baseurl'' auf "https://wiki.lynx-consulting.ch", ''remote'' API-Zugang aktiviert |
| | * **XML-RPC/JSON-RPC:** Core-API (seit DokuWiki 2018 im Kern) läuft, aber Aufrufe werden aktuell mit "forbidden" abgewiesen — wird separat behoben |
| | * **Credentials:** User ''gaston'' (Gruppe: admin) für API-Zugriffe |
| | * Seiten können zuverlässig via CSRF-Formular geschrieben werden (Fallback bis JSON-RPC läuft) |
| | |
| | ==== DSM-Konfigurationssicherung ==== |
| | * Aktiviert → Synology-Konto (Cloud), letzte Sicherung 12.07.2026 12:34 |
| | * Sichern NUR DSM-Konfiguration. **Nicht gesichert:** Docker-Volumes, Reverse-Proxy, Zertifikate, VM-Konfigurationen |
| | * Für vollständige Backups: Hyper Backup oder manuelles Backup von ''/volume1/docker/'' |
| | |
| | ==== Noch offen ==== |
| | * [[https://prometheus.lynx-consulting.ch|Prometheus]] (Reverse-Proxy und Dienst) |
| | * Hetzner DNS-Eintrag für ''llms.lynx-consulting.ch'' (Account-Aussperrung) |
| | * Homebridge wurde durch HA-eigene HomeKit-Bridge ersetzt (wird nicht wiederhergestellt) |
| | * JSON-RPC-Zugriff reparieren (Core-API blockt aktuell) |
| | |
| | ==== Gelernte Lektionen ==== |
| | - Vor jedem Reset komplette ''.dss''-Sicherung exportieren **und lokal speichern** |
| | - Docker-Konfigurationen separat sichern (nicht von DSM-Backup abgedeckt) |
| | - AdGuard vor Let's-Encrypt-Erneuerung deaktivieren |
| | - HA hinter Reverse-Proxy braucht immer ''trusted_proxies'' + WebSocket-Header |
| | - SANs im DSM nur mit Semikolons, ohne Leerzeichen |
| | - HP-Drucker hinter Reverse-Proxy: Host-Header auf Drucker-IP setzen (Cookie-Problem!) |
| | - DokuWiki nach Reset: ''markdownextra''-Plugin kann Config-Manager blockieren |
| |
| ===== Wichtige Links & Dienste (Reverse Proxy) ===== | ===== Wichtige Links & Dienste (Reverse Proxy) ===== |
| * [[https://nas2.lynx-consulting.ch|NAS2 (Synology DSM)]] | ^ Software ^ URL ^ Beschreibung ^ |
| * [[https://adguard.lynx-consulting.ch|AdGuard Home (DNS & Werbeblocker)]] | | **NAS2** | [[https://nas2.lynx-consulting.ch]] | Synology DSM (Hauptsystem) | |
| * [[https://ha.lynx-consulting.ch|Home Assistant (Smart Home Zentrale)]] | | **AdGuard Home** | [[https://adguard.lynx-consulting.ch]] | DNS-Server & Netzwerkweiter Werbeblocker | |
| * [[https://git.lynx-consulting.ch|Gitea (Git-Server)]] | | **Home Assistant** | [[https://ha.lynx-consulting.ch]] | Smart Home Zentrale | |
| * [[https://wiki.lynx-consulting.ch|DokuWiki (Wissensdatenbank)]] | | **Gitea** | [[https://git.lynx-consulting.ch]] | Lokaler Git-Server für Code-Repositories | |
| * [[https://plex.lynx-consulting.ch|Plex Media Server]] | | **DokuWiki** | [[https://wiki.lynx-consulting.ch]] | Diese Wissensdatenbank | |
| * [[https://drucker.lynx-consulting.ch|HP Drucker (Weboberfläche)]] | | **Plex** | [[https://plex.lynx-consulting.ch]] | Media Server | |
| * [[https://home.lynx-consulting.ch|Homebridge]] | | **HP Drucker** | [[https://drucker.lynx-consulting.ch]] | Weboberfläche des Druckers | |
| | | **Homebridge** | [[https://home.lynx-consulting.ch]] | Apple HomeKit Bridge | |
| | | **Grafana** | [[https://grafana.lynx-consulting.ch]] | Monitoring & Dashboards | |
| | | **Prometheus** | [[https://prometheus.lynx-consulting.ch]] | Time-Series Datenbank für Metriken | |
| | |
| | ===== Monitoring (Grafana & Prometheus) ===== |
| | * **Hintergrund:** Grafana und Prometheus wurden als Docker-Container eingerichtet, um die Infrastruktur und Smart Home Temperaturen zu überwachen. |
| | * **Installation:** Die Verwendung von "Named Volumes" in Docker führt auf der Synology dazu, dass Daten versteckt abgelegt werden. Besser ist die Nutzung von "Bind Mounts" (z.B. ''./grafana:/var/lib/grafana''), damit die Konfigurationen sichtbar im Verzeichnis ''/volume1/docker/monitoring'' liegen. Die Berechtigungen der Ordner müssen an die Container-User (UID 472 für Grafana, UID 65534 für Prometheus) angepasst werden. |
| | * **Grafana & Prometheus verbinden:** Grafana und Prometheus müssen "verheiratet" werden. Da Grafana die Weboberfläche manchmal restriktiv behandelt (besonders beim ersten Login via Reverse Proxy), kann die Datenquelle direkt über die "Provisioning"-Funktion von Grafana hart im Hintergrund verdrahtet werden. Die URL lautet dann einfach ''http://prometheus:9090'', da beide im selben Docker-Netzwerk laufen. |
| | * **Home Assistant Sensoren auslesen:** Anstatt jeden Temperatursensor der Wohnung einzeln anzuzapfen, holt Prometheus die Daten elegant gebündelt bei Home Assistant ab. |
| | * **In Prometheus:** Ein neuer Scrape-Job mit einem "Long-Lived Access Token" von Home Assistant muss in die ''prometheus.yml'' eingetragen werden. |
| | * **In Home Assistant:** In der ''configuration.yaml'' muss lediglich das Wort ''prometheus:'' eingetragen und das System neu gestartet werden. |
| | * **Grafana Dashboards:** Mit der Dashboard-ID ''1860'' lassen sich sofort umfassende Metriken der Hardware (via Node-Exporter) importieren. Home Assistant Metriken (z.B. ''homeassistant_sensor_temperature_celsius'') können in eigenen Panels per PromQL visualisiert und gezielt über Label-Filter (z.B. ''friendly_name != FritzBox'') gefiltert werden. |
| | |
| | ===== Home Assistant Reverse Proxy (400 Bad Request) ===== |
| | * **Problem:** Beim Zugriff auf Home Assistant über den Synology Reverse Proxy (''ha.lynx-consulting.ch'') erscheint die Fehlermeldung "400: Bad Request". |
| | * **Ursache:** Home Assistant blockiert sicherheitshalber Zugriffe, die von einem unbekannten Reverse Proxy weitergeleitet werden. |
| | * **Lösung:** In der ''configuration.yaml'' des Home Assistant muss der Reverse Proxy des NAS2 explizit als "Trusted Proxy" eingetragen werden: |
| | <code yaml> |
| | http: |
| | use_x_forwarded_for: true |
| | trusted_proxies: |
| | - 192.168.128.222 |
| | </code> |
| | * **Dateizugriff bei HA-Ausfall:** Wenn HA als VM läuft und der Reverse Proxy streikt, erreicht man die ''configuration.yaml'' entweder, indem man direkt über die lokale IP-Adresse (''http://192.168.128.22:8123'') auf die Weboberfläche zugreift und das Add-on "File editor" bzw. "Studio Code Server" nutzt, oder über die voll funktionsfähige iPhone-App. |
| | |
| | ===== Synology Let's Encrypt Zertifikate (SAN) ===== |
| | * **Problem:** Beim Eintragen mehrerer alternativer Namen (SAN) im Synology DSM blockiert die GUI oft mit kryptischen Fehlermeldungen (z.B. im Feld der Mail-Adresse). |
| | * **Lösung:** Die Synology DSM-Oberfläche verlangt bei den Subject Alternative Names strikt Semikolons anstelle der branchenüblichen Kommas. Außerdem dürfen absolut keine Leerzeichen verwendet werden. |
| | * **Aktuelle SAN-Liste:** ''adguard.lynx-consulting.ch;git.lynx-consulting.ch;drucker.lynx-consulting.ch;wiki.lynx-consulting.ch;home.lynx-consulting.ch;ha.lynx-consulting.ch;plex.lynx-consulting.ch;grafana.lynx-consulting.ch;prometheus.lynx-consulting.ch'' |
| | |
| | {{:home_infrastruktur:cert_san.jpg?800|Zertifikat SANs - Subject Alternative Names}} |
| |
| ===== Gitea & Synology Git-Pakete ===== | ===== Gitea & Synology Git-Pakete ===== |
| * **Hintergrund:** Gitea und AdGuard haben um Port 3000 konkurriert. Zudem hat das offizielle Synology ''Git Server'' Paket die SSH-Zugriffe (''git-shell'') für Administratoren blockiert. | * **Hintergrund:** Gitea und AdGuard haben um Port 3000 konkurriert. Zudem hat das offizielle Synology Git Server Paket die SSH-Zugriffe (git-shell) für Administratoren blockiert. |
| * **Lösung:** Deinstallation der Synology-Pakete ''Git Server'' und des inoffiziellen Gitea-Pakets aus dem Paketzentrum. | * **Lösung:** Deinstallation der Synology-Pakete Git Server und des inoffiziellen Gitea-Pakets aus dem Paketzentrum. Verschieben des Docker-Gitea-Containers auf Port 3010. Reverse Proxy git.lynx-consulting.ch zeigt nun auf localhost:3010. SSH ist wieder frei für normale administrative Befehle. |
| * **Lösung:** Verschieben des Docker-Gitea-Containers auf Port 3010. | |
| * **Lösung:** Reverse Proxy ''git.lynx-consulting.ch'' zeigt nun auf ''localhost:3010''. SSH ist wieder frei für normale administrative Befehle. | |
| |
| ===== AdGuard Home ===== | ===== AdGuard Home ===== |
| * **Problem:** Port 53 (DNS) und 3000 (Setup) wurden von Synology bzw. Gitea blockiert. Ein Macvlan-Setup würde zur Isolation vom Host-System führen (das NAS könnte seinen eigenen DNS nicht nutzen). | * **Problem:** Port 53 (DNS) und 3000 (Setup) wurden von Synology bzw. Gitea blockiert. Ein Macvlan-Setup würde zur Isolation vom Host-System führen (das NAS könnte seinen eigenen DNS nicht nutzen). |
| * **Lösung:** AdGuard läuft nun im Docker **Host-Netzwerk** (''--network host''). | * **Lösung:** AdGuard läuft nun im Docker Host-Netzwerk (--network host). |
| * **Vorteil:** AdGuard sieht die echten Client-IP-Adressen der Geräte im Heimnetzwerk statt der Docker-Bridge-IP (''172.17.0.1''). Reverse Proxy ''adguard.lynx-consulting.ch'' verweist auf den Setup/Admin-Port. | * **Vorteil:** AdGuard sieht die echten Client-IP-Adressen der Geräte im Heimnetzwerk statt der Docker-Bridge-IP (172.17.0.1). Reverse Proxy adguard.lynx-consulting.ch verweist auf den Setup/Admin-Port. |
| |
| ===== HP Drucker - Scan to Network Folder (SMB) ===== | ===== HP Drucker - Scan to Network Folder (SMB) ===== |
| * **Fehlerbilder:** ''pgNetworkFolderAccounts-403'' und ''Ungültige Eingabe''. | * **Fehlerbilder:** pgNetworkFolderAccounts-403 und Ungültige Eingabe. |
| * **Echte Ursache (Firmware-Bug):** HP-Drucker brechen den SMB-Verbindungstest intern ab, wenn man das Drucker-Webmenü über ''https://'' aufgerufen hat. Das führt zu scheinbaren Berechtigungs- und Protokollfehlern. | * **Echte Ursache (Firmware-Bug):** HP-Drucker brechen den SMB-Verbindungstest intern ab, wenn man das Drucker-Webmenü über HTTPS aufgerufen hat. Das führt zu scheinbaren Berechtigungs- und Protokollfehlern. |
| * **Lösung:** Drucker-Weboberfläche zwingend über unverschlüsseltes ''http://192.168.128.254'' aufrufen. Die Einrichtung klappt dann einwandfrei mit dem modernen Protokoll **SMB 3.1.1**. | * **Lösung:** Drucker-Weboberfläche zwingend über unverschlüsseltes HTTP (http://192.168.128.254) aufrufen. Die Einrichtung klappt dann einwandfrei mit dem modernen Protokoll SMB 3.1.1. |
| * **Wichtig:** Keine PIN eintragen und in Schritt 2 ''Stets die folgenden Anmeldedaten verwenden'' (Benutzer: nicolaie + NAS-Passwort) wählen. | * **Wichtig:** Keine PIN eintragen und in Schritt 2 Stets die folgenden Anmeldedaten verwenden (Benutzer: nicolaie + NAS-Passwort) wählen. |
| * **Sicherheit:** Alte Protokolle (NT1/SMB1, NTLMv1) müssen auf der Synology nicht aktiviert werden und sollten aus Sicherheitsgründen deaktiviert bleiben! | * **Sicherheit:** Alte Protokolle (NT1/SMB1, NTLMv1) müssen auf der Synology nicht aktiviert werden und sollten aus Sicherheitsgründen deaktiviert bleiben! |
| |
| ===== Synology Let's Encrypt Zertifikate (SAN) ===== | |
| * **Problem:** Beim Eintragen mehrerer alternativer Namen (SAN) im Synology DSM blockiert die GUI oft mit kryptischen Fehlermeldungen (z.B. im Feld der Mail-Adresse). | |
| * **Lösung:** Die Synology DSM-Oberfläche verlangt bei den ''Subject Alternative Names'' strikt **Semikolons ( ; )** als Trennzeichen anstelle der branchenüblichen Kommas. Außerdem dürfen **absolut keine Leerzeichen** verwendet werden. | |
| * **Aktuelle SAN-Liste:** ''adguard.lynx-consulting.ch;git.lynx-consulting.ch;drucker.lynx-consulting.ch;wiki.lynx-consulting.ch;home.lynx-consulting.ch;ha.lynx-consulting.ch;plex.lynx-consulting.ch'' | |
| |
| ===== Home Assistant vs. Homebridge ===== | ===== Home Assistant vs. Homebridge ===== |
| * **Erkenntnis:** Home Assistant (''ha.lynx-consulting.ch'') verfügt über eine native HomeKit-Bridge, die identisch zu Homebridge (''home.lynx-consulting.ch'') arbeitet. | * **Erkenntnis:** Home Assistant (ha.lynx-consulting.ch) verfügt über eine native HomeKit-Bridge, die identisch zu Homebridge (home.lynx-consulting.ch) arbeitet. |
| * **Empfehlung:** Mittelfristig alle Homebridge-Geräte direkt in Home Assistant einbinden. Das spart einen Docker-Container und man profitiert von der überlegenen Automatisierungs-Logik des Home Assistant. | * **Empfehlung:** Mittelfristig alle Homebridge-Geräte direkt in Home Assistant einbinden. Das spart einen Docker-Container und man profitiert von der überlegenen Automatisierungs-Logik des Home Assistant. |
| |
| ===== Plex Media Server ===== | ===== Plex Media Server ===== |
| * **Hintergrund:** Plex läuft nicht im Docker, sondern als manuell installiertes Paket, um die Datenbank und Rechtestruktur nicht zu gefährden. | * **Hintergrund:** Plex läuft nicht im Docker, sondern als manuell installiertes Paket, um die Datenbank und Rechtestruktur nicht zu gefährden. |
| * **Updates:** Da Synology im Paketzentrum oft sehr alte Plex-Versionen anbietet, muss das Update manuell erfolgen. Dazu im Plex-Webinterface die Update-Datei (''.spk'') herunterladen und im Synology Paketzentrum oben rechts auf **Manuelle Installation** klicken. Dies ist der sicherste Weg, um die Mediathek beim Update nicht zu beschädigen. | * **Updates:** Da Synology im Paketzentrum oft sehr alte Plex-Versionen anbietet, muss das Update manuell erfolgen. Dazu im Plex-Webinterface die Update-Datei (.spk) herunterladen und im Synology Paketzentrum oben rechts auf Manuelle Installation klicken. Dies ist der sicherste Weg, um die Mediathek beim Update nicht zu beschädigen. |
| | |