Diese Anleitung beschreibt Schritt für Schritt die Bereitstellung deiner selbstgehosteten Foto- und Videoverwaltung Immich basierend auf deiner angepassten Docker-Compose-Konfiguration (optimiert für DietPi und externe Speicher).
📋 Voraussetzungen
Bevor du startest, stelle sicher, dass folgende Komponenten auf deinem System bereitstehen:
- 🐳 Docker & Docker Compose installiert (Offizielle Anleitung)
- 🗄️ Eingehängte Speichermedien:
- Das Verzeichnis
/mnt/dietpi_userdata/wd/photos (Haupt-Upload-Ziel) muss existieren und beschreibbar sein.
- Das Verzeichnis
/mnt/externeeins/ (für Postgres-Daten und zusätzliche Fotos) muss gemountet und aktiv sein.
- 🛡️ Sicherheitshinweis: Ändere vor dem produktiven Start die Standardpasswörter (
DB_PASSWORD, POSTGRES_PASSWORD) in der docker-compose.yml sowie in der stack.env ab!
🛠️ Schritt-für-Schritt Installation
📁 Schritt 1: Ordnerstruktur vorbereiten
Erstelle die notwendigen Verzeichnisse auf deinen Speichermedien, um Berechtigungsprobleme beim Starten der Container zu vermeiden.
# Verzeichnisse auf der Hauptfestplatte / DietPi-Speicher erstellen
sudo mkdir -p /mnt/dietpi_userdata/wd/photos
# Verzeichnisse auf dem externen Laufwerk erstellen
sudo mkdir -p /mnt/externeeins/immich/postgres \
/mnt/externeeins/photos
Setze die korrekten Berechtigungen für das Postgres-Datenverzeichnis, damit der Datenbank-Container darin schreiben darf:
sudo chown -R 999:999 /mnt/externeeins/immich/postgres
📝 Schritt 2: Projektordner & Umgebungsvariablen anlegen
Erstelle ein Verzeichnis für deine Docker-Konfiguration (z. B. in deinem Home-Verzeichnis) und wechsle hinein:
mkdir -p ~/immich-stack && cd ~/immich-stack
Da dein Stack eine stack.env voraussetzt, legen wir diese zuerst an:
nano stack.env
Füge dort notwendige Umgebungsvariablen ein, die von Immich benötigt werden (oder halte sie bereit, falls du spezifische API-Schlüssel oder Konfigurationen nutzt). Mindestens sollte folgendes definiert sein:
# Kern-Einstellungen für Immich
TZ=Europe/Berlin
IMMICH_VERSION=release
(Nutze Strg+O -> Enter zum Speichern und Strg+X zum Schließen)
📄 Schritt 3: Docker Compose Datei anlegen
Erstelle nun die Datei docker-compose.yml:
nano docker-compose.yml
Füge den folgenden Inhalt ein:
version: "3.8"
services:
immich_server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich_server
environment:
- DB_DATABASE_NAME=immich
- DB_USERNAME=postgres
- DB_PASSWORD=postgres # ⚠️ In Produktion ändern!
- DB_HOSTNAME=immich_postgres
- REDIS_HOSTNAME=immich_redis
- UPLOAD_LOCATION=/mnt/dietpi_userdata/wd/photos
- DB_DATA_LOCATION=/mnt/externeeins/immich/postgres
ports:
- "2283:2283"
depends_on:
- immich_redis
- immich_postgres
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ${UPLOAD_LOCATION}:/data
- /mnt/externeeins/photos:/mnt/externeeins/photos
env_file:
- stack.env
immich_machine_learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: immich_machine_learning
environment:
- DB_DATABASE_NAME=immich
- DB_USERNAME=postgres
- DB_PASSWORD=postgres # ⚠️ In Produktion ändern!
restart: always
volumes:
- immich_model-cache:/cache
immich_postgres:
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
container_name: immich_postgres
environment:
- POSTGRES_DB=immich
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres # ⚠️ In Produktion ändern!
- DB_STORAGE_TYPE=HDD # Optimiert das Indizieren für klassische Festplatten
restart: always
volumes:
- /mnt/externeeins/immich/postgres:/var/lib/postgresql/data
immich_redis:
image: docker.io/valkey/valkey:8-bookworm
container_name: immich_redis
restart: always
volumes:
- immich_redis_data:/data
volumes:
immich_model-cache:
immich_redis_data:
🚀 Schritt 4: Stack starten
Lade die Container-Images herunter und starte den gesamten Stack im Hintergrund:
docker compose up -d
Hinweis: Der erste Start kann etwas dauern, da Immich die Datenbankstrukturen initialisiert und die Machine-Learning-Modelle vorbereitet.
🌐 Weboberfläche & Ersteinrichtung
Nach dem erfolgreichen Start ist Immich über dein Netzwerk erreichbar:
- 🔐 Web-UI:
http://DEINE-SERVER-IP:2283
- 👤 Registrierung: Beim ersten Aufruf wirst du aufgefordert, das Admin-Konto zu erstellen (E-Mail-Adresse und Passwort).
- 📱 Mobile Apps: Lade dir die offizielle Immich-App aus dem Apple App Store oder Google Play Store herunter und verbinde sie mit derselben URL (
http://DEINE-SERVER-IP:2283).
⚙️ Externe Bibliotheken einbinden (Optional)
Da du das Verzeichnis /mnt/externeeins/photos in den Server-Container durchgereicht hast, kannst du dort bereits existierende Fotosammlungen als "Externe Bibliothek" einbinden, ohne sie neu hochzuladen:
- Gehe in der Web-UI auf Administration -> External Libraries.
- Klicke auf Create Library und wähle deinen Benutzer aus.
- Füge als Pfad
/mnt/externeeins/photos hinzu (das ist der Pfad innerhalb des Containers).
- Starte den Scan-Vorgang.
🛑 Nützliche Befehle
- Status der Container prüfen:
docker compose ps
- Echtzeit-Logs einsehen:
docker compose logs -f immich_server
- Logs des Machine-Learnings prüfen:
docker compose logs -f immich_machine_learning
- Stack stoppen:
docker compose down