| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
| it:thinkcentreserver [2026/06/29 23:35] – [6.10 Immich (Foto-Infrastruktur)] matthias | it:thinkcentreserver [2026/06/30 15:43] (aktuell) – [6.1 Nginx Proxy Manager (NPM)] matthias |
|---|
| |
| ==== 5.2 Docker-Updates ==== | ==== 5.2 Docker-Updates ==== |
| | Da die Docker-Infrastruktur aus Performance- und Strukturgründen in zwei separate Stacks aufgeteilt ist (Haupt-Infrastruktur und Immich), müssen Updates in den jeweiligen Projektverzeichnissen getriggert werden. |
| | |
| | === Manueller Update-Prozess === |
| | Der optimierte Dreischritt holt die neuesten Images, startet geänderte Container neu und räumt verwaiste Image-Leichen direkt auf: |
| <code bash> | <code bash> |
| # Standard-Vierzeiler für Updates über docker-compose: | # 1. Haupt-Infrastruktur updaten |
| cd /opt/docker/ | cd /opt/docker/ |
| docker compose pull | docker compose pull && docker compose up -d --remove-orphans && docker image prune -a |
| docker compose up -d | |
| docker image prune -f | # 2. Immich Foto-Infrastruktur separat updaten |
| | cd /opt/docker/immich/ |
| | docker compose pull && docker compose up -d --remove-orphans && docker image prune -a |
| | </code> |
| | |
| | === Automatisierung via Bash-Alias (Empfohlen) === |
| | Um im Alltag nicht manuell in die Verzeichnisse springen zu müssen, ist in der ''~/.bashrc'' des Users ''matthias'' ein globaler Verkettungs-Alias hinterlegt: |
| | |
| | <code> |
| | alias update-server='cd /opt/docker && sudo docker compose pull && sudo docker compose up -d --remove-orphans && cd /opt/docker/immich && sudo docker compose pull && sudo docker compose up -d --remove-orphans && docker image prune -af && cd ~' |
| | </code> |
| | |
| | **Wartungsbefehl im Alltag:** |
| | <code bash> |
| | update-server |
| </code> | </code> |
| |
| </code> | </code> |
| |
| ==== 5.4 Shell-Befehle ==== | |
| ==== 5.4 Shell-Befehle ==== | ==== 5.4 Shell-Befehle ==== |
| ^ Kategorie ^ Befehl ^ Beschreibung / Parameter ^ | ^ Kategorie ^ Befehl ^ Beschreibung / Parameter ^ |
| | **Speicher** | ''du -hd 1 /pfad/ | sort -h'' | Zeigt Ordnergröße der ersten Unterebene, menschlich lesbar (''-h''), numerisch sortiert (''sort -h''). | | | **Speicher** | ''du -hd 1 /pfad/ | sort -h'' | Zeigt Ordnergröße der ersten Unterebene, menschlich lesbar (''-h''), numerisch sortiert (''sort -h''): | |
| | | ''df -h'' | Zeigt freien/belegten Speicherplatz aller gemounteten Partitionen. | | | | ''df -h'' | Zeigt freien/belegten Speicherplatz aller gemounteten Partitionen. | |
| | **Transfer** | ''scp -r user@ip:/quelle/ "C:\ziel"'' | **Lokal in Win-PowerShell:** Rekursiver Download (''-r'') vom Server zu Windows. | | | **Transfer** | ''scp -r user@ip:/quelle/ "C:\ziel"'' | **Lokal in Win-PowerShell:** Rekursiver Download (''-r'') vom Server zu Windows. | |
| | | ''scp /quelle user@ip:/ziel/'' | Kopiert Datei via SSH von Linux zu Linux. | | | | ''scp /quelle user@ip:/ziel/'' | Kopiert Datei via SSH von Linux zu Linux. | |
| | | **Immich-CLI** | **In Win-PowerShell (Sitzungsvariablen):** ''$env:IMMICH_INSTANCE="http://192.168.178.128:2283/api"'' ''$env:IMMICH_KEY="wVujBLe3..."'' | Setzt die Verbindungsparameter für das Immich-CLI in der aktuellen Windows-Sitzung, um Parameter-Fehler zu vermeiden. | |
| | | | ''immich upload --recursive "C:\pfad\"'' | Schiebt lokale Windows-Ordnerstrukturen stabil und parallel über das Netzwerk auf das TC (Sitzungsvariablen vorausgesetzt). | |
| | **Rsync** | ''rsync -avzP --delete /quell/ /ziel/'' | **Backup-Standard:** Synchronisiert Ordner. ''-a'' (Rechte), ''-v'' (Details), ''-z'' (Kompression), ''-P'' (Fortschritt+Resume), ''--delete'' (löscht verwaiste Ziel-Dateien). | | | **Rsync** | ''rsync -avzP --delete /quell/ /ziel/'' | **Backup-Standard:** Synchronisiert Ordner. ''-a'' (Rechte), ''-v'' (Details), ''-z'' (Kompression), ''-P'' (Fortschritt+Resume), ''--delete'' (löscht verwaiste Ziel-Dateien). | |
| | **Docker** | ''docker compose up -d'' | Startet alle Container des Verzeichnisses im Hintergrund (Detached). | | | **Docker** | ''docker compose up -d'' | Startet alle Container des Verzeichnisses im Hintergrund (Detached). | |
| | | ''sudo chmod -R 755 /pfad/'' | Setzt Rechte rekursiv: Besitzer darf alles (7), Gruppe/Andere nur Lesen/Ausführen (5). | | | | ''sudo chmod -R 755 /pfad/'' | Setzt Rechte rekursiv: Besitzer darf alles (7), Gruppe/Andere nur Lesen/Ausführen (5). | |
| |
| **Tipp für Updates (Dreischritt):** | |
| <code> | |
| docker compose pull && docker compose up -d --remove-orphans && docker image prune -a | |
| </code> | |
| ===== 6. Dienst-spezifische Notizen ===== | ===== 6. Dienst-spezifische Notizen ===== |
| |
| ==== 6.1 Nginx Proxy Manager (NPM) ==== | ==== 6.1 Nginx Proxy Manager (NPM) ==== |
| | |
| === Installation & Protokoll === | === Installation & Protokoll === |
| * **Interner Port / Protokoll:** 80 (HTTP), 443 (HTTPS), 81 (Web-UI Admin) | * **Interner Port / Protokoll:** 80 (HTTP), 443 (HTTPS), 81 (Web-UI Admin) |
| * **Externer Zugriff:** Ports 80 & 443 direkt im Router auf das TC weitergeleitet. | * **Externer Zugriff:** Ports 80 & 443 direkt im Router auf das TC weitergeleitet. |
| * **Abhängigkeiten:** Keinerlei Abhängigkeiten. Das Einfallstor für alle HTTP-Dienste. | * **Abhängigkeiten:** Keinerlei Abhängigkeiten. Das Einfallstor für alle HTTP-Dienste. |
| | |
| === Bedienung & Wichtige Befehle === | === Bedienung & Wichtige Befehle === |
| * **Web-UI:** [[http://192.168.178.200:81]] (temporär [[http://192.168.178.128:81]]) | * **Web-UI:** [[http://192.168.178.128:81]] (Zentral auf dem ThinkCentre) |
| * **Tuning:** In den Proxy-Hosts standardmäßig "Block Common Exploits" und "HTTP/2 Support" für Performance und Sicherheit aktivieren. Für Datei-Uploads (Nextcloud/Immich) ''client_max_body_size 512M;'' unter Advanced eintragen. | * **Tuning:** In den Proxy-Hosts standardmäßig "Block Common Exploits" und "HTTP/2 Support" für Performance und Sicherheit aktivieren. Für massive Datei-Uploads (Nextcloud/Immich) zwingend ''client_max_body_size 0;'' (hebt das Limit komplett auf) oder ''client_max_body_size 10G;'' unter Advanced eintragen. |
| | |
| | === Aktive Domain-Struktur (Manitu CNAME) === |
| | Alle Subdomains der Hauptdomain ''tietge.org'' sind im Manitu-Kundencenter als **CNAME-Eintrag** auf das DynDNS ''pfogel.selfhost.bz.'' gemappt, um dynamische IP-Wechsel der FritzBox abzufangen: |
| | |
| | ^ Subdomain ^ Internes Docker-Ziel (TC) ^ Beschreibung / Zweck ^ |
| | | ''wg-wiki.tietge.org'' | ''wg-wiki:80'' | WG-DokuWiki Instanz | |
| | | ''band-wiki.tietge.org'' | ''band-wiki:80'' | Band-DokuWiki Instanz | |
| | | ''ak-wiki.tietge.org'' | ''ak-wiki:80'' | Arbeitskreis-DokuWiki Instanz | |
| | | ''nextcloud.tietge.org'' | ''nextcloud:80'' | Neue Familien-Zentrale auf dem TC | |
| | | ''fotos.tietge.org'' | ''immich_server:2283'' | Immich Foto-Infrastruktur | |
| | | ''porgys.tietge.org'' | ''ghost:2368'' | Ghost CMS Band-Webseite | |
| | |
| | === Migrations- & Routing-Architektur (Fernzugriff) === |
| | Um während der Migrationsphase Ausfallzeiten zu verhindern, fungiert der NPM auf dem ThinkCentre als **zentrale Weiche (Reverse Proxy)** im Heimnetzwerk. Da er sowohl im isolierten ''server-network'' als auch im normalen LAN agiert, routet er den Traffic anhand der aufrufenden Domain bzw. des Subpfads: |
| | |
| | == 1. Fallback für bestehende Alt-Systeme (Raspberry Pi) == |
| | Damit alte Lesezeichen und Smartphone-Syncs über die Selfhost-Domain nicht brechen, leitet ein "Catch-All"-Proxy-Host Anfragen an ''pfogel.selfhost.bz'' per internem HTTPS (Port 443) direkt weiter an den alten Raspberry Pi (''192.168.178.200''). Da dort aktuell unter anderem noch die aktive Nextcloud läuft, bleibt dieser Haupt-Forward unberührt, bis alle Altdienste vollständig migriert sind. SSL-Zertifikate kollidieren hierbei nicht, da der NPM die äußere Verschlüsselung übernimmt und intern verschlüsselt mit dem Pi spricht (SSL-Terminierung). |
| | |
| | == 2. Nahtlose Wiki-Migration via Custom Locations (Zwei-Wege-System) == |
| | Die drei DokuWikis wurden erfolgreich auf das ThinkCentre migriert und laufen nativ und ohne Unterordner auf ihren jeweiligen ''tietge.org''-Subdomains. Damit alte Lesezeichen über die Selfhost-Unterpfade nicht ins Leere laufen (oder auf dem RPi sterben), fängt der NPM diese Pfade gezielt ab und leitet sie per Nginx-Rewrite transparent und unter Beibehaltung aller Unterseiten auf die neuen Domains um. |
| | |
| | Dazu sind im NPM unter dem Proxy-Host ''pfogel.selfhost.bz'' drei **Custom Locations** definiert: |
| | |
| | **Band-Wiki:** |
| | * **Define Location:** ''/band-wiki'' |
| | * **Scheme & Ziel:** ''http://192.168.178.128:8081'' |
| | * **Erweiterte Nginx-Konfiguration (Zahnrad):** |
| | <code nginx> |
| | rewrite ^/band-wiki(.*)$ https://band-wiki.tietge.org$1 permanent; |
| | </code> |
| | |
| | **WG-Wiki:** |
| | * **Define Location:** ''/wg-wiki'' |
| | * **Scheme & Ziel:** ''http://192.168.178.128:8083'' |
| | * **Erweiterte Nginx-Konfiguration (Zahnrad):** |
| | <code nginx> |
| | rewrite ^/wg-wiki(.*)$ https://wg-wiki.tietge.org$1 permanent; |
| | </code> |
| | |
| | **AK-Wiki:** |
| | * **Define Location:** ''/ak-wiki'' |
| | * **Scheme & Ziel:** ''http://192.168.178.128:8082'' |
| | * **Erweiterte Nginx-Konfiguration (Zahnrad):** |
| | <code nginx> |
| | rewrite ^/ak-wiki(.*)$ https://ak-wiki.tietge.org$1 permanent; |
| | </code> |
| |
| | == 3. Zukünftiger Nextcloud-Umzug == |
| | Sobald die Nextcloud auf das TC migriert wird, wird analog zu den Wikis eine Custom Location für ''/nextcloud'' eingerichtet, um den Traffic aus dem Selfhost-Proxy herauszuschneiden. Bis dahin verbleibt der Nextcloud-Traffic im globalen Fallback auf den Raspberry Pi (''192.168.178.200''). |
| ==== 6.2 Pi-hole ==== | ==== 6.2 Pi-hole ==== |
| === Installation & Protokoll === | === Installation & Protokoll === |