Du betrachtest gerade Immich unter Docker installieren – Die perfekte Google Photos Alternative

Immich unter Docker installieren – Die perfekte Google Photos Alternative

Immich ist die wohl beste Open-Source-Alternative zu Google Photos – und das Beste: Alle Daten bleiben bei dir! In diesem Blogbeitrag zeige ich dir, wie du Immich unter Docker installieren kannst, inklusive aller wichtigen Einstellungen für die Gesichtserkennung.

Hinweis: Die Installation von Docker selbst wird hier nicht behandelt – ich gehe davon aus, dass Docker und Docker Compose auf deinem System bereits laufen.

Wenn du Docker noch nicht installiert hast, hier findest du eine Anleitung: Docker Desktop für WINDOWS installieren


📋 Was ist Immich?

Immich ist eine leistungsstarke, selbstgehostete Foto- und Video-Backup-Lösung mit folgenden Highlights:

  • 🔒 Datenschutz: Deine Fotos bleiben auf deinem Server
  • 📱 Automatisches Backup via iOS/Android App
  • 🧠 KI-Funktionen: Gesichtserkennung, Objekterkennung, Smart Search
  • 👨‍👩‍👧‍👦 Multi-User-fähig inklusive geteilter Alben
  • 🖼️ Unterstützt RAW, HEIC, Live-Photos und mehr

Video: Immich unter Docker installieren – Die perfekte Google Photos Alternative

Sprache: 🇩🇪|🇬🇧
☝️ Benutze YouTube Untertitel für alle Sprachen.


🚀 Installation von Immich mit Docker

1. Vorbereitung

Erstelle ein Verzeichnis für Immich und wechsle hinein:

bash

mkdir immich 
cd immich

2. Die .env Datei erstellen

Erstelle eine Datei namens .env mit folgendem Inhalt:

env

# Immich - .env Konfiguration
# ====================================

# PFADE (UNBEDINGT ANPASSEN!)
# Wo sollen die Fotos und Videos gespeichert werden?
UPLOAD_LOCATION=/pfad/zu/deinen/fotos

# Wo soll die Datenbank gespeichert werden?
DB_DATA_LOCATION=/pfad/zur/datenbank

# Cache für Machine Learning (optional)
ML_CACHE=./immich-cache

# DATENBANK (Passwort unbedingt ändern!)
DB_USERNAME=postgres
DB_PASSWORD=postgres   # ← ÄNDERN! Nur Buchstaben/Zahlen
DB_DATABASE_NAME=immich

# ALLGEMEIN
TZ=Europe/Berlin
IMMICH_VERSION=release

Wichtig: Passe die Pfade (UPLOAD_LOCATION und DB_DATA_LOCATION) an dein System an und ändere das DB_PASSWORD!

3. Die docker-compose.yml Datei

Jetzt kommt das Herzstück – die docker-compose.yml. Ich habe sie bewusst minimalistisch und übersichtlich gehalten, ohne überflüssige Optionen:

yaml

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:2283
    depends_on:
      - redis
      - database
    restart: always
    networks:
      - immich-network
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  # >>> GESICHTSERKENNUNG - HIER WIRD DIE MAGIE PROGRAMMIERT <<<
  # Der Machine Learning Container ist für alle KI-Funktionen zuständig:
  # - Gesichtserkennung und -zuordnung
  # - Objekterkennung für die Smart Search
  # - OCR (Texterkennung in Bildern)
  # - Scene detection für Videos
  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - ${ML_CACHE:-./ml-cache}:/cache
    environment:
      - MACHINE_LEARNING_WORKER_TIMEOUT=0      # Nie wegen Inaktivität runterfahren
      - MACHINE_LEARNING_CACHE_MODELS=true     # Modelle im RAM behalten
      - MACHINE_LEARNING_MODEL_TTL=0           # Modelle nie entladen
    env_file:
      - .env
    restart: always
    networks:
      - immich-network
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
  # <<< ENDE GESICHTSERKENNUNG >>>

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm
    restart: always
    networks:
      - immich-network
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.1-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always
    networks:
      - immich-network
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

networks:
  immich-network:
    driver: bridge

Wenn du dich für die Watchtower interessierst um deine Docker Anwendungen automatisch updates zu lassen, hier findest du eine Anleitung: Watchtower für automatische Updates einrichten

🔍 Erklärung der Gesichtserkennungs-Einstellungen

Der immich-machine-learning Container ist das Herzstück für alle KI-Funktionen. Die drei wichtigsten Environment-Variablen sorgen für einen stabilen Betrieb:

Achte darauf, das die die Gesichtserkennung noch in den Einstellungen aktivieren musst:
Oben rechts auf das Profilbild klicken -> Verwaltung -> Lehrling-Maschine
„Gesichtserkennung“ und „Gesichter hinzufügen“ müssen beide eingeschaltet sein.

VariableWertBedeutung
MACHINE_LEARNING_WORKER_TIMEOUT0Der Worker fährt nie wegen Inaktivität runter. Sonst passiert es, dass der Container nach 5 Minuten ohne Jobs beendet wird – und dann die Gesichtserkennung nicht mehr funktioniert!
MACHINE_LEARNING_CACHE_MODELStrueDie geladenen KI-Modelle (z.B. buffalo_lfür Gesichter) bleiben im Arbeitsspeicher. Das beschleunigt die Erkennung enorm, weil sie nicht jedes Mal von der Festplatte geladen werden müssen.
MACHINE_LEARNING_MODEL_TTL0Die Modelle werden nie aus dem Cache entfernt. Das ist die perfekte Ergänzung zu CACHE_MODELS=true.

Warum sind diese Einstellungen so wichtig?

Ohne diese Konfiguration passiert folgendes: Der ML-Container fährt nach 5 Minuten Inaktivität runter (um RAM zu sparen). Wenn dann neue Fotos hochgeladen werden oder die Gesichtserkennung starten soll, ist der Container weg – die Jobs schlagen fehl. Mit unseren Einstellungen läuft der ML-Container permanent und ist sofort bereit, wenn er gebraucht wird.

4. Immich starten

bash

# Container starten
docker compose up -d

# Prüfen, ob alles läuft
docker compose ps

# Logs ansehen (optional)
docker compose logs -f

Nach dem Start ist Immich unter http://deine-server-ip:2283 erreichbar. Der erste Benutzer, der sich registriert, wird automatisch Admin.


📱 Mobile Apps verbinden

Lade die offizielle Immich-App aus dem App Store (iOS) oder Play Store (Android) herunter. Als Server-URL gibst du ein:

text

http://<DEINE-SERVER-IP>:2283/api

Die App übernimmt dann das automatische Backup deiner Fotos und Videos.


⚙️ Nach der Installation: Gesichtserkennung testen

  1. Lade ein paar Fotos mit Personen hoch (via Web oder App)
  2. Gehe zu Verwaltung → Jobs in der WebUI
  3. Starte nacheinander:
    • „Miniaturen“ (Thumbnails)
    • „Gesichter erkennen“ (Face Detection)
    • „Gesichtserkennung“ (Facial Recognition)

Nach einiger Zeit (je nach Fotoanzahl) sollten die erkannten Personen im Personen-Tabauftauchen.

Tipp: Falls keine Personen auftauchen, prüf in den Logs: docker compose logs immich-machine-learning. Zeilen mit „Shutting down due to inactivity“ deuten auf fehlende Timeout-Einstellungen hin.


📝 Fazit

Mit dieser Anrichtung hast du eine voll funktionsfähige, datenschutzkonforme Google Photos Alternative am Laufen. Die Gesichtserkennung ist durch die optimierten Einstellungen stabil und zuverlässig.

Wichtige Punkte zum Merken:

  • .env Datei mit eigenen Pfaden anpassen
  • Datenbank-Passwort ändern!
  • ML-Container mit WORKER_TIMEOUT=0 konfigurieren
  • Regelmäßig Backups der UPLOAD_LOCATION und DB_DATA_LOCATION machen

Ein VPN mit Home Netz Zugriff kannst du einfach einrichten, hier findest du eine Anleitung: Cloudflare Home Net Zugriff einrichten

Viel Spaß mit deiner eigenen Foto-Cloud! 📸


Spenden Bild

Link zur Unterstützung / Spende für den Kanal
Wenn meine Beiträge hilfreich sind oder dir geholfen haben, würde ich mich über eine Unterstützung sehr freuen 🙏

PayPal Link
Überweisung, Bitcoin und Lightning


#Docker #Immich #Installation #ErsteSchritte #FotoArchiv #FotoVerwaltung

Schreibe einen Kommentar