Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| it:thinkcentreserver [2026/06/29 15:58] – [7.2 Multi-User-Workflows & Speicherpfade] matthias | it:thinkcentreserver [2026/06/30 15:43] (aktuell) – [6.1 Nginx Proxy Manager (NPM)] matthias | ||
|---|---|---|---|
| Zeile 353: | Zeile 353: | ||
| ==== 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 / | cd / | ||
| - | 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 / | ||
| + | docker compose pull && | ||
| + | </ | ||
| + | |||
| + | === Automatisierung via Bash-Alias (Empfohlen) === | ||
| + | Um im Alltag nicht manuell in die Verzeichnisse springen zu müssen, ist in der '' | ||
| + | |||
| + | < | ||
| + | alias update-server=' | ||
| + | </ | ||
| + | |||
| + | **Wartungsbefehl im Alltag:** | ||
| + | <code bash> | ||
| + | update-server | ||
| </ | </ | ||
| Zeile 367: | Zeile 385: | ||
| </ | </ | ||
| - | ==== 5.4 Shell-Befehle ==== | ||
| ==== 5.4 Shell-Befehle ==== | ==== 5.4 Shell-Befehle ==== | ||
| ^ Kategorie ^ Befehl ^ Beschreibung / Parameter ^ | ^ Kategorie ^ Befehl ^ Beschreibung / Parameter ^ | ||
| - | | **Speicher** | '' | + | | **Speicher** | '' |
| | | '' | | | '' | ||
| | **Transfer** | '' | | **Transfer** | '' | ||
| | | '' | | | '' | ||
| + | | **Immich-CLI** | **In Win-PowerShell (Sitzungsvariablen): | ||
| + | | | '' | ||
| | **Rsync** | '' | | **Rsync** | '' | ||
| | **Docker** | '' | | **Docker** | '' | ||
| Zeile 387: | Zeile 406: | ||
| | | '' | | | '' | ||
| - | **Tipp für Updates (Dreischritt): | ||
| - | < | ||
| - | docker compose pull && docker compose up -d --remove-orphans && docker image prune -a | ||
| - | </ | ||
| ===== 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: | * **Interner Port / Protokoll: | ||
| * **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: | * **Abhängigkeiten: | ||
| + | |||
| === Bedienung & Wichtige Befehle === | === Bedienung & Wichtige Befehle === | ||
| - | * **Web-UI: | + | * **Web-UI:** [[http:// |
| - | * **Tuning:** In den Proxy-Hosts standardmäßig "Block Common Exploits" | + | * **Tuning:** In den Proxy-Hosts standardmäßig "Block Common Exploits" |
| + | |||
| + | === Aktive Domain-Struktur (Manitu CNAME) === | ||
| + | Alle Subdomains der Hauptdomain '' | ||
| + | |||
| + | ^ Subdomain ^ Internes Docker-Ziel (TC) ^ Beschreibung / Zweck ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | === 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 '' | ||
| + | |||
| + | == 1. Fallback für bestehende Alt-Systeme (Raspberry Pi) == | ||
| + | Damit alte Lesezeichen und Smartphone-Syncs über die Selfhost-Domain nicht brechen, leitet ein " | ||
| + | |||
| + | == 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 '' | ||
| + | |||
| + | Dazu sind im NPM unter dem Proxy-Host '' | ||
| + | |||
| + | **Band-Wiki: | ||
| + | * **Define Location:** ''/ | ||
| + | * **Scheme & Ziel:** '' | ||
| + | * **Erweiterte Nginx-Konfiguration (Zahnrad): | ||
| + | <code nginx> | ||
| + | rewrite ^/ | ||
| + | </ | ||
| + | |||
| + | **WG-Wiki: | ||
| + | * **Define Location:** ''/ | ||
| + | * **Scheme & Ziel:** '' | ||
| + | * **Erweiterte Nginx-Konfiguration (Zahnrad): | ||
| + | <code nginx> | ||
| + | rewrite ^/ | ||
| + | </ | ||
| + | |||
| + | **AK-Wiki: | ||
| + | * **Define Location:** ''/ | ||
| + | * **Scheme & Ziel:** '' | ||
| + | * **Erweiterte Nginx-Konfiguration (Zahnrad): | ||
| + | <code nginx> | ||
| + | rewrite ^/ | ||
| + | </ | ||
| + | == 3. Zukünftiger Nextcloud-Umzug == | ||
| + | Sobald die Nextcloud auf das TC migriert wird, wird analog zu den Wikis eine Custom Location für ''/ | ||
| ==== 6.2 Pi-hole ==== | ==== 6.2 Pi-hole ==== | ||
| === Installation & Protokoll === | === Installation & Protokoll === | ||
| Zeile 514: | Zeile 579: | ||
| //Hinweis für die Weboberfläche: | //Hinweis für die Weboberfläche: | ||
| ==== 6.10 Immich (Foto-Infrastruktur) ==== | ==== 6.10 Immich (Foto-Infrastruktur) ==== | ||
| + | |||
| + | Selbstgehostete Foto- und Videoplattform als performanter Ersatz für Google Photos. | ||
| + | |||
| === Installation & Protokoll === | === Installation & Protokoll === | ||
| - | * **Interner Port / Protokoll: | + | * **Interner Port/ |
| - | * **Externer Zugriff:** NPM Proxy Host mit aktiven Websockets. | + | * **Lokale Web-UI:** http://192.168.178.128: |
| - | * **Abhängigkeiten:** Benötigt '' | + | * **Externer Zugriff:** Über NPM Proxy Host mit aktiven Websockets |
| - | === Besonderheiten (Das perfekte Scroll-Tuning) === | + | * **Abhängigkeiten:** Nutzt eine isolierte PostgreSQL-Datenbank mit Vektorerweiterung |
| - | Um das flüssige Durchscrollen der Handy-Timeline ohne NVMe-Verschleiß zu realisieren, | + | |
| - | | + | |
| - | 2. **SATA-SSD: | + | |
| - | 3. **4TB HDD1:** Speicherort für ''/ | + | |
| + | === Das 3-Zonen-Speicher-Mapping === | ||
| + | |||
| + | Um maximales Scroll-Tuning in der App ohne NVMe-Verschleiß zu realisieren, | ||
| + | * **1. High-End Layer (NVMe SSD):** Die kritische PostgreSQL-Datenbank liegt zwecks maximaler IOPS unter ''/ | ||
| + | * **2. Stoßdämpfer Layer (SATA-SSD): | ||
| + | * **3. Vorläufiger Massenspeicher (SATA-SSD): | ||
| + | |||
| + | === Lokale Docker-Infrastruktur === | ||
| + | |||
| + | Im Gegensatz zur globalen '' | ||
| + | |||
| + | == 1. Umgebungsvariablen (/ | ||
| + | <code env> | ||
| + | IMMICH_VERSION=release | ||
| + | TZ=Europe/ | ||
| + | PUID=1000 | ||
| + | PGID=1000 | ||
| + | |||
| + | # Vorläufiger Pfad auf SATA-SSD (Datengrab) | ||
| + | UPLOAD_LOCATION=/ | ||
| + | DB_PASSWORD=ImmichPostgresPasswort789! | ||
| + | </ | ||
| + | |||
| + | == 2. Docker-Compose (/ | ||
| + | Die Konfiguration nutzt explizit das '' | ||
| + | |||
| + | <code yaml> | ||
| + | name: immich | ||
| + | |||
| + | services: | ||
| + | immich-server: | ||
| + | container_name: | ||
| + | image: ghcr.io/ | ||
| + | cpuset: " | ||
| + | volumes: | ||
| + | - ${UPLOAD_LOCATION}:/ | ||
| + | - / | ||
| + | - / | ||
| + | - / | ||
| + | env_file: | ||
| + | - .env | ||
| + | ports: | ||
| + | - 2283:2283 | ||
| + | depends_on: | ||
| + | - redis | ||
| + | - database | ||
| + | restart: unless-stopped | ||
| + | networks: | ||
| + | - server-network | ||
| + | |||
| + | immich-machine-learning: | ||
| + | container_name: | ||
| + | image: ghcr.io/ | ||
| + | cpuset: " | ||
| + | volumes: | ||
| + | - / | ||
| + | env_file: | ||
| + | - .env | ||
| + | restart: unless-stopped | ||
| + | networks: | ||
| + | - server-network | ||
| + | |||
| + | redis: | ||
| + | container_name: | ||
| + | image: docker.io/ | ||
| + | restart: unless-stopped | ||
| + | networks: | ||
| + | - server-network | ||
| + | |||
| + | database: | ||
| + | container_name: | ||
| + | image: docker.io/ | ||
| + | environment: | ||
| + | POSTGRES_DB: | ||
| + | POSTGRES_USER: | ||
| + | POSTGRES_PASSWORD: | ||
| + | volumes: | ||
| + | - / | ||
| + | restart: unless-stopped | ||
| + | networks: | ||
| + | - server-network | ||
| + | |||
| + | networks: | ||
| + | server-network: | ||
| + | external: true | ||
| + | </ | ||
| + | |||
| + | === Wartung & Zukünftiger HDD-Umbau === | ||
| + | |||
| + | == Initialer Bulk-Upload über Windows-PowerShell == | ||
| + | Um große Medienmengen (z.B. >20 GB) stabil ohne Browser-Timeouts zu importieren, | ||
| + | < | ||
| + | # CLI installieren und einloggen | ||
| + | npm install -g @immich/cli | ||
| + | immich login http:// | ||
| + | |||
| + | # Ordner rekursiv hochladen | ||
| + | immich upload --recursive --yes " | ||
| + | </ | ||
| + | |||
| + | == Spätere Migration auf das 4TB HDD-Datengrab == | ||
| + | Sobald der Testbetrieb beendet ist, wird der Massenspeicher verlustfrei auf die '' | ||
| + | |||
| + | 1. Immich-Stack stoppen: | ||
| + | < | ||
| + | cd / | ||
| + | </ | ||
| + | |||
| + | 2. Daten per '' | ||
| + | < | ||
| + | sudo rsync -avzP / | ||
| + | </ | ||
| + | |||
| + | 3. Pfad in der ''/ | ||
| + | < | ||
| + | # Neue Zuweisung in der .env: | ||
| + | UPLOAD_LOCATION=/ | ||
| + | |||
| + | # Start: | ||
| + | docker compose up -d | ||
| + | </ | ||
| ==== 6.11 Ghost (CMS für die Porgys) ==== | ==== 6.11 Ghost (CMS für die Porgys) ==== | ||
| === Installation & Protokoll === | === Installation & Protokoll === | ||
| Zeile 644: | Zeile 829: | ||
| * **Profil Jana:** Zielordner: '' | * **Profil Jana:** Zielordner: '' | ||
| * **Profil Gemeinsam: | * **Profil Gemeinsam: | ||
| - | |||
| - | --- | ||
| - | |||
| ==== 7.2 Multi-User-Workflows & Speicherpfade ==== | ==== 7.2 Multi-User-Workflows & Speicherpfade ==== | ||