Eintrag

Immich: Selbstgehostete Google-Photos-Alternative mit KI

Immich: Selbstgehostete Google-Photos-Alternative mit KI

Über 90.000 GitHub-Stars, mehr als 500 Contributors und eines der am schnellsten wachsenden Self-Hosted-Projekte überhaupt: Immich hat in kürzester Zeit die Herzen der Privacy-Enthusiasten erobert. Während Google Photos seine kostenlosen unbegrenzten Uploads gestrichen hat und die Abo-Preise stetig steigen, suchen immer mehr Menschen nach Alternativen, die ihnen die volle Kontrolle über ihre Erinnerungen zurückgeben. Immich verspricht genau das: Eine vollwertige Google-Photos-Alternative mit KI-gestützter Gesichtserkennung, intelligenter Suche und automatischem Backup - alles auf deiner eigenen Hardware. In diesem ausführlichen Guide zeige ich dir, wie du Immich in deinem Homelab zum Laufen bringst und was die Software wirklich kann.


Was ist Immich?

Immich ist eine Open-Source-Plattform zur Verwaltung von Fotos und Videos, die als vollwertiger Ersatz für Google Photos konzipiert wurde. Das Projekt startete 2022 und hat seitdem eine beeindruckende Entwicklung hingelegt. Der Name ist eine Anspielung auf “I’m Mich” (I’m Michael), den Namen des Hauptentwicklers.

Die Software bietet alle Features, die du von einer modernen Foto-Plattform erwartest: Automatisches Backup von mobilen Geräten, eine übersichtliche Timeline-Ansicht, Alben und Sharing-Funktionen. Der Clou sind jedoch die KI-Features: Immich nutzt moderne Machine-Learning-Modelle für Gesichtserkennung und eine intelligente Suchfunktion, mit der du deine Fotos nach natürlichsprachlichen Begriffen durchsuchen kannst - ganz ohne manuelles Tagging.

Das Projekt ist auf GitHub unter https://github.com/immich-app/immich verfügbar und wird aktiv weiterentwickelt. Monatliche Releases bringen neue Features und Verbesserungen. Die Community ist lebhaft und hilfsbereit, sowohl auf Discord als auch auf Reddit.

Ein wichtiger Punkt vorab: Immich ist noch nicht Version 1.0 und befindet sich in aktiver Entwicklung. Das bedeutet, dass zwischen Updates auch mal Breaking Changes auftreten können. Die Entwickler arbeiten hart daran, die Software production-ready zu machen, aber du solltest dich darauf einstellen, dass Updates manchmal manuelle Anpassungen erfordern.

Immich befindet sich in aktiver Entwicklung und hat noch keine stabile Version 1.0 erreicht. Breaking Changes zwischen Updates sind möglich. Erstelle immer ein Backup vor einem Update!


Features im Überblick

Immich bringt eine beeindruckende Feature-Liste mit, die sich nicht vor kommerziellen Alternativen verstecken muss. Hier ein detaillierter Überblick über die wichtigsten Funktionen:

Foto-Management

Timeline-Ansicht: Die Hauptansicht zeigt deine Fotos in einer chronologischen Timeline, ähnlich wie bei Google Photos. Du kannst zwischen Tages-, Monats- und Jahresansicht wechseln. Die Timeline ist performant optimiert und lädt auch bei großen Bibliotheken (100.000+ Fotos) flüssig nach.

Alben: Erstelle manuelle Alben für besondere Anlässe oder nutze automatische Alben, die Immich basierend auf Datum, Ort oder KI-Tags generiert. Alben können mit anderen Nutzern geteilt werden, sowohl intern als auch über öffentliche Links.

Favoriten und Archiv: Markiere wichtige Fotos als Favoriten oder archiviere Bilder, die du behalten, aber nicht ständig sehen möchtest. Archivierte Fotos verschwinden aus der Timeline, bleiben aber durchsuchbar.

Papierkorb: Gelöschte Fotos landen zunächst im Papierkorb und können dort wiederhergestellt werden. Nach einer konfigurierbaren Zeitspanne (Standard: 30 Tage) werden sie endgültig gelöscht.

Duplikat-Erkennung: Immich erkennt automatisch Duplikate basierend auf Checksummen und bietet dir an, diese zu entfernen. Das spart Speicherplatz und hält deine Bibliothek sauber.

KI-Features

Gesichtserkennung: Immich verwendet das InsightFace-Modell, um Gesichter in deinen Fotos zu erkennen und automatisch zu gruppieren. Du kannst den Clustern dann Namen zuweisen und hast so eine automatische Kategorisierung nach Personen. Die Erkennung funktioniert auch bei Seitenansichten und verschiedenen Altersstufen erstaunlich gut.

CLIP-basierte Textsuche: Das absolute Killer-Feature: Dank des CLIP-Modells von OpenAI kannst du deine Fotos mit natürlichsprachlichen Begriffen durchsuchen. Suche nach “Sonnenuntergang am Meer”, “roter Sportwagen” oder “Geburtstagskuchen” - Immich findet die passenden Bilder, ohne dass du vorher Tags vergeben hättest. Die Suche funktioniert mehrsprachig und versteht auch abstrakte Konzepte wie “Romantik” oder “Abenteuer”.

Smart Albums: Basierend auf den KI-Tags generiert Immich automatisch Smart Albums. Das können ortsbezogene Sammlungen sein (“Fotos aus Paris”), zeitbasierte Erinnerungen (“Dieser Tag vor einem Jahr”) oder thematische Alben (“Tiere”, “Essen”, “Sport”).

Objekt-Erkennung: Neben Gesichtern erkennt Immich auch Objekte, Szenen und Aktivitäten. Das bildet die Grundlage für die intelligente Suche und automatische Kategorisierung.

Sharing und Zusammenarbeit

Shared Albums: Teile Alben mit anderen Immich-Nutzern auf deiner Instanz. Alle Beteiligten können Fotos hinzufügen und kommentieren - perfekt für gemeinsame Urlaube oder Familien-Events.

Externe Freigaben: Generiere öffentliche Links für Alben, die auch ohne Immich-Account zugänglich sind. Du kannst festlegen, ob die Empfänger Fotos herunterladen dürfen oder nur anschauen können.

Partner-Sharing: Eine besonders praktische Funktion: Definiere einen Partner-Account, dessen Fotos automatisch in deiner Timeline erscheinen. So haben Paare oder Familien eine gemeinsame Foto-Sammlung, ohne Fotos doppelt speichern zu müssen.

Mobile Apps

iOS und Android: Native Apps für beide Plattformen bieten die volle Funktionalität. Die Apps sind schnell, zuverlässig und fühlen sich modern an.

Auto-Backup: Konfiguriere automatische Uploads im Vordergrund oder Hintergrund. Die Apps können mehrere Alben gleichzeitig synchronisieren und merken sich, welche Fotos bereits hochgeladen wurden.

Multi-Account-Support: Verwalte mehrere Immich-Instanzen in einer App - praktisch, wenn du sowohl eine private als auch eine Familien-Instanz betreibst.

Video-Support

Immich ist nicht nur für Fotos gedacht: Videos werden ebenfalls unterstützt, inklusive Hardware-beschleunigter Transcoding-Funktionen. Die Video-Player sind in die Web- und Mobile-Apps integriert und bieten Scrubbing, Untertitel und mehr.


Architektur

Immich folgt einer modernen Microservice-Architektur und besteht aus mehreren spezialisierten Komponenten. Das Design ist auf Skalierbarkeit und Performance ausgelegt.

Immich Architektur

flowchart LR
    subgraph Clients
        Mobile[Mobile App<br/>iOS & Android]
        Web[Web UI<br/>Browser]
        CLI[immich-cli<br/>Bulk Upload]
    end

    subgraph Server
        API[immich-server<br/>REST API & WebUI]
        ML[immich-machine-learning<br/>Python ML Server]
    end

    subgraph Data
        PG[(PostgreSQL<br/>+ pgvector)]
        Redis[(Redis<br/>Cache & Queue)]
        Storage[File Storage<br/>Fotos & Videos]
    end

    Mobile --> API
    Web --> API
    CLI --> API
    API --> PG
    API --> Redis
    API --> Storage
    API <--> ML
    ML --> Storage

Komponenten im Detail

immich-server: Der Haupt-Server ist in TypeScript/Node.js geschrieben und stellt sowohl die REST API als auch das Web-Frontend bereit. Er koordiniert alle Operationen, verwaltet Uploads, generiert Thumbnails und kommuniziert mit der Datenbank und dem ML-Server.

immich-machine-learning: Ein separater Python-Server übernimmt alle Machine-Learning-Aufgaben: Gesichtserkennung, CLIP-Embeddings für die Suche, Objekt-Detection und Smart Tagging. Die Trennung erlaubt es, den ML-Server auf einem anderen Host mit GPU laufen zu lassen.

PostgreSQL mit pgvector: Als Datenbank kommt PostgreSQL zum Einsatz, erweitert um die pgvector-Extension. Diese ermöglicht es, hochdimensionale Vektoren (CLIP-Embeddings) effizient zu speichern und per Ähnlichkeitssuche abzufragen - das Herzstück der intelligenten Suche.

Redis: Dient als Cache und Message Queue für asynchrone Jobs wie Thumbnail-Generierung und ML-Processing.

File Storage: Die Original-Fotos und -Videos werden im Dateisystem gespeichert, organisiert nach User-ID und Upload-Datum. Immich generiert automatisch verschiedene Thumbnail-Größen und speichert diese separat.


Voraussetzungen (Hardware)

Die Hardware-Anforderungen hängen stark von der Größe deiner Foto-Bibliothek und der Nutzung der KI-Features ab. Hier eine Übersicht:

Komponente Minimum Empfohlen Für 100k+ Fotos
CPU 2 Cores 4 Cores 8+ Cores
RAM 4 GB 8 GB 16+ GB
Storage 50 GB + Fotos SSD für DB, HDD für Fotos NVMe für DB
GPU - Optional (CUDA/OpenVINO) NVIDIA GPU empfohlen

Detaillierte Empfehlungen

CPU: Der CPU-Bedarf kommt hauptsächlich durch Thumbnail-Generierung und Video-Transcoding. Bei großen Bibliotheken solltest du mindestens 4 Cores einplanen. Für das initiale Processing einer großen Sammlung sind mehr Cores von Vorteil.

RAM: PostgreSQL, Redis und die beiden Server-Komponenten wollen alle im RAM laufen. 8 GB sind ein guter Startpunkt für mittelgroße Bibliotheken (bis 50.000 Fotos). Bei größeren Sammlungen plane 16 GB oder mehr ein, besonders wenn du viele gleichzeitige Nutzer hast.

Storage: Plane den dreifachen Speicherplatz deiner Original-Bibliothek ein: Originale + Thumbnails + Datenbank + Puffer. Die Datenbank sollte auf einer SSD liegen, da Immich viele Index-Lookups macht. Die Foto-Dateien selbst können auch auf günstigeren HDDs liegen.

GPU-Beschleunigung: Hier wird es interessant: Eine dedizierte GPU beschleunigt die ML-Verarbeitung dramatisch. Der Unterschied ist gewaltig:

Eine dedizierte GPU (NVIDIA mit CUDA) beschleunigt die ML-Verarbeitung erheblich. Ohne GPU dauert das initiale Processing von 50.000 Fotos mehrere Tage statt weniger Stunden.

Ohne GPU rechnet der ML-Server auf der CPU und braucht pro Foto mehrere Sekunden für alle Analysen. Mit einer NVIDIA-GPU (z.B. GTX 1660, RTX 3060 oder besser) reduziert sich das auf unter eine Sekunde pro Foto. Für das initiale Setup einer großen Bibliothek ist eine GPU also fast Pflicht - später kannst du sie wieder entfernen, wenn alle Fotos processed sind.

Alternativen zu CUDA sind OpenVINO (Intel-GPUs und CPUs) oder CoreML (Apple Silicon), aber CUDA liefert die beste Performance.


Installation mit Docker

Die empfohlene Installation erfolgt über Docker Compose. Immich stellt eine vollständige Compose-Datei bereit, die alle Komponenten orchestriert.

Vorbereitung

Erstelle zunächst ein Verzeichnis für Immich:

1
2
mkdir -p /opt/immich
cd /opt/immich

Docker Compose Konfiguration

Erstelle eine docker-compose.yml mit folgendem Inhalt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich-server
    command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:2283
    depends_on:
      - redis
      - database
    restart: unless-stopped

  immich-microservices:
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich-microservices
    command: ['start.sh', 'microservices']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    depends_on:
      - redis
      - database
    restart: unless-stopped

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: immich-ml
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    container_name: immich-redis
    healthcheck:
      test: redis-cli ping || exit 1
    restart: unless-stopped

  database:
    image: tensorchord/pgvecto-rs:pg16-v0.2.0
    container_name: immich-db
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1
      interval: 5s
      timeout: 5s
      retries: 5
    command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
    restart: unless-stopped

volumes:
  pgdata:
  model-cache:

Umgebungsvariablen

Erstelle eine .env-Datei im gleichen Verzeichnis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Pfad zum Upload-Verzeichnis (Fotos und Videos)
UPLOAD_LOCATION=./library

# Datenbank-Credentials
DB_PASSWORD=immich
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

# Immich-Server Einstellungen
IMMICH_VERSION=release

# Optional: Redis Password
# REDIS_PASSWORD=

# Optional: GPU Support für ML (CUDA)
# NVIDIA_VISIBLE_DEVICES=all
# NVIDIA_DRIVER_CAPABILITIES=compute,utility

# Optional: Log Level
# LOG_LEVEL=log

Container starten

Starte alle Services mit:

1
docker compose up -d

Docker lädt die Images herunter und startet die Container. Das kann beim ersten Mal ein paar Minuten dauern, da der ML-Server auch die Modelle herunterladen muss (ca. 2 GB).

Initiales Setup

Öffne deinen Browser und navigiere zu http://deine-server-ip:2283. Du wirst durch einen Setup-Wizard geführt:

  1. Admin-Account erstellen: Wähle einen Benutzernamen und ein sicheres Passwort.
  2. Storage Template: Lege fest, wie Immich die Dateien organisiert (empfohlen: Standard).
  3. Machine Learning: Die ML-Features sind standardmäßig aktiviert - lass sie an.
  4. Fertig! Du landest auf der Hauptseite und kannst beginnen, Fotos hochzuladen.

GPU-Support aktivieren (Optional)

Wenn du eine NVIDIA-GPU nutzen möchtest, füge in der docker-compose.yml beim immich-machine-learning-Service folgendes hinzu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
immich-machine-learning:
  image: ghcr.io/immich-app/immich-machine-learning:release
  container_name: immich-ml
  volumes:
    - model-cache:/cache
  env_file:
    - .env
  restart: unless-stopped
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities: [gpu]

Stelle sicher, dass du das NVIDIA Container Toolkit installiert hast:

1
2
3
4
5
6
7
8
9
# Ubuntu/Debian
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

Mobile App einrichten

Die Mobile Apps sind das Herzstück von Immich - sie ersetzen Google Photos’ automatisches Backup und sorgen dafür, dass alle deine Fotos sicher auf deinem Server landen.

Installation

iOS: Lade die App aus dem App Store: Suche nach “Immich” oder nutze den direkten Link vom Immich-Projekt.

Android: Die App ist im Google Play Store verfügbar. Alternativ kannst du die APK auch direkt von GitHub herunterladen, falls du Play Store meidest.

Erstes Setup

  1. Server-URL eingeben: Öffne die App und gib die URL deines Immich-Servers ein. Format: http://192.168.1.100:2283 oder https://immich.deinedomain.de falls du einen Reverse Proxy nutzt.

  2. Login: Melde dich mit dem Admin-Account an, den du im Web-Setup erstellt hast.

  3. Backup-Einstellungen: Die App führt dich durch die Backup-Konfiguration. Hier die wichtigsten Optionen:

    • Alben auswählen: Standardmäßig wird die Kamera-Roll gesichert. Du kannst weitere Alben hinzufügen.
    • Vordergrund vs. Hintergrund: Vordergrund-Backup ist schneller, Hintergrund-Backup läuft automatisch.
    • Nur WLAN: Aktiviere diese Option, um mobile Daten zu schonen.
    • Originale behalten: Lege fest, ob Fotos nach dem Upload vom Gerät gelöscht werden sollen.
  4. Benachrichtigungen: Erlaube Benachrichtigungen, um über den Backup-Status informiert zu werden.

  5. Backup starten: Tippe auf “Backup starten” - die App beginnt mit dem Upload deiner Fotos.

Backup-Strategien

Initiales Backup: Beim ersten Sync kann der Upload einer großen Bibliothek (z.B. 10.000 Fotos) mehrere Stunden bis Tage dauern. Tipps für den initialen Upload:

Für den initialen Upload einer großen Bibliothek empfiehlt sich die immich-cli statt der Mobile App. Sie ist deutlich schneller und kann unterbrochene Uploads fortsetzen.

Laufender Betrieb: Nach dem initialen Backup arbeitet die App im Hintergrund und lädt neue Fotos automatisch hoch. Bei iOS musst du die App gelegentlich im Vordergrund öffnen, um den Background-Upload zu triggern - iOS limitiert Hintergrund-Aktivitäten strikt.

Mehrere Geräte: Du kannst mehrere Geräte mit dem gleichen Account verbinden. Immich erkennt Duplikate und lädt jedes Foto nur einmal hoch, auch wenn es auf mehreren Geräten existiert.


KI-Features im Detail

Die Machine-Learning-Funktionen sind das, was Immich von einfachen Foto-Galleries abhebt. Schauen wir uns die einzelnen Features genauer an.

Gesichtserkennung

Immich nutzt das InsightFace-Modell für die Gesichtserkennung - eines der genauesten Open-Source-Modelle überhaupt. Der Prozess läuft in mehreren Schritten:

Face Detection: Zunächst werden alle Gesichter in deinen Fotos erkannt. Das Modell findet auch Gesichter in ungünstigen Winkeln, bei schlechter Beleuchtung oder teilweise verdeckt.

Face Embedding: Für jedes erkannte Gesicht berechnet Immich einen 512-dimensionalen Vektor (Embedding), der die Merkmale des Gesichts repräsentiert. Ähnliche Gesichter haben ähnliche Embeddings.

Clustering: Alle Embeddings werden geclustert - Gesichter, die sich ähneln, landen in einer Gruppe. Das läuft vollautomatisch und ist erstaunlich akkurat.

Manuelle Nachbearbeitung: Im Web-Interface kannst du die Cluster überprüfen und nachbessern:

  • Namen zuweisen: Gib den Clustern Namen - dann sind alle Fotos dieser Person durchsuchbar.
  • Merge: Verbinde fälschlicherweise getrennte Cluster.
  • Split: Trenne Cluster, wenn mehrere Personen zusammengeworfen wurden.
  • Ausblenden: Markiere Gesichter als “nicht relevant” (z.B. Fremde im Hintergrund).

Privacy-Aspekt: Die gesamte Gesichtserkennung läuft lokal auf deinem Server. Keine Bilder oder Daten verlassen dein Netzwerk. Das ist ein riesiger Vorteil gegenüber Cloud-Services.

CLIP (Contrastive Language-Image Pre-Training) ist ein Modell von OpenAI, das die semantische Lücke zwischen Text und Bildern überbrückt. Immich nutzt CLIP, um deine Fotos durchsuchbar zu machen - ohne dass du ein einziges Tag setzen musst.

Wie es funktioniert: Für jedes Foto berechnet Immich ein CLIP-Embedding - einen Vektor, der den Inhalt des Bildes repräsentiert. Wenn du eine Suche startest, wird dein Suchbegriff ebenfalls in einen Vektor umgewandelt. Immich findet dann die Fotos, deren Vektoren dem Suchvektor am ähnlichsten sind.

Beispiel-Suchen:

  • Konkret: “Roter Sportwagen”, “Golden Retriever”, “Pizza”
  • Szenen: “Sonnenuntergang am Meer”, “Berggipfel mit Schnee”, “Stadtbild bei Nacht”
  • Aktivitäten: “Skifahren”, “Schwimmen”, “Geburtstag feiern”
  • Abstrakt: “Romantisch”, “Abenteuer”, “Gemütlich”
  • Farben: “Blaue Blumen”, “Orange sunset”

Mehrsprachig: CLIP wurde auf Dutzenden von Sprachen trainiert. Suche auf Deutsch, Englisch, Französisch - es funktioniert alles.

Kombination mit Metadaten: Du kannst die CLIP-Suche mit klassischen Filtern kombinieren: “Sonnenuntergang” + Ort: “Spanien” + Zeitraum: 2024.

Smart Albums

Basierend auf den KI-Tags erstellt Immich automatisch Smart Albums. Diese werden dynamisch generiert und aktualisieren sich selbst, wenn neue Fotos hinzukommen.

Kategorien:

  • Orte: “Fotos aus Paris”, “Berlin”, “Zuhause”
  • Objekte: “Tiere”, “Essen”, “Autos”, “Pflanzen”
  • Personen: Automatische Alben für jede erkannte Person
  • Zeitbasiert: “Dieser Tag vor einem Jahr”, “Letzte Woche”
  • Events: Immich erkennt Event-Cluster (viele Fotos in kurzer Zeit) und gruppiert sie automatisch

Anpassung: Du kannst eigene Smart-Album-Regeln definieren, z.B. “Alle Fotos von Person X an Ort Y”.


Externe Bibliothek einbinden

Viele Nutzer haben bereits eine große Foto-Sammlung auf einem NAS oder einer externen Festplatte. Statt alles neu hochzuladen, kannst du externe Bibliotheken direkt in Immich einbinden.

Vorteile

  • Keine Duplikate: Die Originale bleiben, wo sie sind.
  • Schneller: Kein Upload nötig.
  • Speicher-effizient: Immich erstellt nur Thumbnails und Metadaten.

Setup

1. Volume in Docker Compose mounten:

Erweitere die docker-compose.yml um ein zusätzliches Volume beim immich-server und immich-microservices:

1
2
3
4
volumes:
  - ${UPLOAD_LOCATION}:/usr/src/app/upload
  - /mnt/nas/photos:/usr/src/app/external:ro
  - /etc/localtime:/etc/localtime:ro

Das :ro macht das Volume read-only - Immich kann die Originale nicht verändern.

2. Container neu starten:

1
2
docker compose down
docker compose up -d

3. Externe Bibliothek in Immich konfigurieren:

Im Web-Interface:

  • Gehe zu AdministrationExternal Libraries
  • Klicke auf Add Library
  • Name: z.B. “NAS Photos”
  • Import Path: /usr/src/app/external
  • Klicke auf Scan Library

Immich durchsucht nun das externe Verzeichnis und importiert alle Fotos. Dabei werden Thumbnails generiert und die KI-Analyse angestoßen - die Originaldateien bleiben unangetastet.

Best Practices

Read-Only Mount: Mounte externe Bibliotheken immer als read-only. So stellst du sicher, dass Immich deine Originale nicht versehentlich verändert oder löscht.

Verzeichnisstruktur: Immich erkennt automatisch die Ordnerstruktur und behält sie bei. Wenn deine Fotos in Ordnern nach Jahr/Monat organisiert sind, bleibt das erhalten.

Mehrere Bibliotheken: Du kannst beliebig viele externe Bibliotheken einbinden - z.B. eine pro NAS-Share oder Festplatte.

Rescan: Wenn du neue Fotos zur externen Bibliothek hinzufügst, triggere einen manuellen Scan in den Admin-Einstellungen. Immich kann auch automatische Rescans schedulen.


Backup-Strategie

Immich verwaltet deine wertvollsten Erinnerungen - ein solides Backup ist Pflicht. Die Backup-Strategie muss drei Komponenten abdecken:

Was muss gesichert werden?

  1. PostgreSQL-Datenbank: Enthält alle Metadaten, Alben, Sharing-Infos, Gesichts-Cluster, etc.
  2. Upload-Verzeichnis: Die Original-Fotos und -Videos.
  3. Thumbnails: Optional - können notfalls neu generiert werden.
  4. Konfiguration: Docker Compose Files und .env-Datei.

Datenbank-Backup

PostgreSQL bietet mit pg_dump ein robustes Backup-Tool:

1
2
3
4
5
6
7
8
9
#!/bin/bash
# Backup-Verzeichnis mit Datum
BACKUP_DIR=/backup/immich/$(date +%Y-%m-%d)
mkdir -p $BACKUP_DIR

# Datenbank-Dump
docker exec immich-db pg_dumpall -U postgres | gzip > $BACKUP_DIR/db_dump.sql.gz

echo "Database backup completed: $BACKUP_DIR/db_dump.sql.gz"

Wiederherstellung:

1
gunzip < db_dump.sql.gz | docker exec -i immich-db psql -U postgres

Upload-Verzeichnis sichern

Die Fotos und Videos sind das Herzstück. Nutze ein Tool wie rsync für inkrementelle Backups:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
BACKUP_DIR=/backup/immich/$(date +%Y-%m-%d)
mkdir -p $BACKUP_DIR

# Inkrementelles Backup mit rsync
rsync -avh --progress \
  ./library/ \
  $BACKUP_DIR/library/

echo "Upload directory backup completed: $BACKUP_DIR/library/"

Alternative: Snapshots Wenn dein Storage-System Snapshots unterstützt (ZFS, Btrfs, LVM), nutze diese. Sie sind schnell, effizient und erlauben Point-in-Time-Recovery.

Komplettes Backup-Script

Kombiniere beide Ansätze in einem Script:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
set -e

# Konfiguration
BACKUP_ROOT=/backup/immich
DATE=$(date +%Y-%m-%d_%H-%M-%S)
BACKUP_DIR=$BACKUP_ROOT/$DATE
RETENTION_DAYS=30

# Backup-Verzeichnis erstellen
mkdir -p $BACKUP_DIR

echo "Starting Immich backup: $BACKUP_DIR"

# 1. Datenbank
echo "Backing up database..."
docker exec immich-db pg_dumpall -U postgres | gzip > $BACKUP_DIR/db_dump.sql.gz

# 2. Upload-Verzeichnis (inkrementell)
echo "Backing up uploads..."
rsync -ah --info=progress2 \
  ./library/ \
  $BACKUP_DIR/library/

# 3. Konfiguration
echo "Backing up configuration..."
cp docker-compose.yml .env $BACKUP_DIR/

# 4. Alte Backups löschen (älter als RETENTION_DAYS)
echo "Cleaning up old backups..."
find $BACKUP_ROOT -maxdepth 1 -type d -mtime +$RETENTION_DAYS -exec rm -rf {} \;

# 5. Backup-Größe anzeigen
BACKUP_SIZE=$(du -sh $BACKUP_DIR | cut -f1)
echo "Backup completed: $BACKUP_DIR ($BACKUP_SIZE)"

# Optional: Backup auf Remote-Storage sync (z.B. S3, Backblaze)
# rclone sync $BACKUP_DIR remote:immich-backups/$DATE

Mache das Script ausführbar und richte einen Cronjob ein:

1
2
3
4
chmod +x backup-immich.sh

# Cronjob: Täglich um 3 Uhr nachts
0 3 * * * /opt/immich/backup-immich.sh >> /var/log/immich-backup.log 2>&1

3-2-1-Regel

Befolge die Backup-Best-Practice:

  • 3 Kopien: Original + 2 Backups
  • 2 Medien: z.B. SSD + externe HDD
  • 1 Offsite: z.B. Cloud-Backup (verschlüsselt)

Vergleich: Immich vs. Google Photos vs. PhotoPrism vs. LibrePhotos

Immich ist nicht die einzige Option für selbstgehostete Fotoverwaltung. Hier ein detaillierter Vergleich mit den wichtigsten Alternativen:

Feature Immich Google Photos PhotoPrism LibrePhotos
Mobile App Ja (iOS & Android) Ja (iOS & Android) Web-only (PWA) Web-only
Auto-Backup Ja Ja Nein (manuell) Nein
Gesichtserkennung Ja (InsightFace) Ja Ja (TensorFlow) Ja (face_recognition)
Smart Search (CLIP) Ja Ähnlich Teilweise Ja
Map-Ansicht Ja Ja Ja Ja
Sharing Ja (intern + extern) Ja (sehr gut) Ja Eingeschränkt
Partner-Sharing Ja Ja Nein Nein
External Libraries Ja (read-only) Nein Ja Ja
Video-Support Ja (mit Transcoding) Ja Ja Ja
Live Photos Ja Ja Eingeschränkt Nein
Kosten Kostenlos (Self-Hosted) Abo ab 1,99€/Monat Abo oder Self-Hosted Kostenlos (Self-Hosted)
Self-Hosted Ja Nein Ja Ja
Aktive Entwicklung Sehr aktiv (monatlich) Aktiv Aktiv Weniger aktiv
GPU-Support Ja (CUDA, OpenVINO) N/A (Cloud) Ja Ja
Community Groß, wachsend Groß Mittel Klein
Komplexität Setup Mittel (Docker) Einfach (Cloud) Mittel (Docker) Hoch
Ressourcen-Bedarf Mittel-hoch N/A (Cloud) Hoch Mittel
Multi-User Ja Ja (Familie) Ja Ja
API Ja (REST) Ja (eingeschränkt) Ja Ja

Interpretation

Immich vs. Google Photos: Immich ist die beste Self-Hosted-Alternative zu Google Photos. Es bildet fast alle Features nach, inklusive der hervorragenden Mobile Apps. Der Hauptunterschied: Bei Immich hostest du selbst und behältst volle Kontrolle. Dafür musst du selbst für Hardware, Wartung und Backups sorgen. Google Photos ist bequemer, kostet aber monatlich und deine Daten liegen bei Google.

Immich vs. PhotoPrism: PhotoPrism ist älter und ausgereifter, aber auch komplexer und ressourcenhungriger. Es richtet sich eher an Foto-Enthusiasten mit großen RAW-Sammlungen. Immich ist moderner, schneller und hat bessere Mobile Apps. Wenn du einen Google-Photos-Ersatz suchst, nimm Immich. Wenn du eine professionelle Photo-Management-Software brauchst, schau dir PhotoPrism an.

Immich vs. LibrePhotos: LibrePhotos war lange der CLIP-Search-Vorreiter, hat aber in letzter Zeit an Momentum verloren. Immich hat mittlerweile aufgeholt und bietet deutlich mehr Features. LibrePhotos hat keine nativen Mobile Apps und fühlt sich insgesamt weniger poliert an.

Fazit des Vergleichs

Für die meisten Nutzer, die einen Google-Photos-Ersatz suchen, ist Immich die beste Wahl. Es kombiniert moderne Technologie mit einem durchdachten Feature-Set und aktiver Entwicklung.


Tipps und Best Practices

Nach mehreren Monaten Immich-Nutzung haben sich ein paar Best Practices herauskristallisiert:

Vor dem großen Import

Test-Bibliothek: Starte mit einer kleinen Test-Bibliothek (ein paar hundert Fotos), bevor du deine gesamte Sammlung importierst. So bekommst du ein Gefühl für die Performance und kannst die Einstellungen optimieren.

Duplikate vorher bereinigen: Nutze Tools wie fdupes oder rdfind, um Duplikate aus deiner Sammlung zu entfernen, bevor du sie importierst. Das spart Speicher und macht die Bibliothek übersichtlicher.

Metadaten prüfen: Stelle sicher, dass deine Fotos vernünftige EXIF-Daten haben (Datum, GPS). Immich nutzt diese für die Timeline und Karten-Ansicht.

Bulk-Import mit immich-cli

Für große initiale Imports ist die CLI deutlich effizienter als die Mobile App:

1
2
3
4
5
# Installation
npm install -g @immich/cli

# Upload
immich upload --key YOUR_API_KEY --server http://localhost:2283 /path/to/photos

Die CLI kann unterbrochene Uploads fortsetzen, zeigt Fortschrittsanzeigen und ist generell robuster.

Externe Bibliotheken als Read-Only

Mounte externe Bibliotheken immer als read-only (:ro in Docker). So vermeidest du versehentliche Änderungen an deinen Originalen.

Monitoring

Behalte folgende Metriken im Auge:

Disk Space: Immich generiert viele Thumbnails. Plane den dreifachen Speicherplatz deiner Original-Bibliothek ein.

1
2
3
# Disk Usage prüfen
du -sh ./library
df -h

RAM-Nutzung: PostgreSQL cached aggressiv im RAM. Wenn der Server andere Dienste hostet, limitiere den RAM:

1
2
3
4
5
6
7
database:
  # ...
  command: [
    "postgres",
    "-c", "shared_buffers=512MB",
    "-c", "effective_cache_size=2GB"
  ]

ML-Queue: Im Web-Interface unter Administration siehst du den Status der ML-Jobs. Bei großen Bibliotheken kann die Queue Tage lang voll sein - das ist normal.

Automatisierte Backups

Richte unbedingt automatische Backups ein, bevor du Immich produktiv nutzt. Siehe Abschnitt “Backup-Strategie” weiter oben.

Updates

Immich released monatlich neue Versionen. Update-Prozess:

1
2
3
4
5
6
7
8
9
10
11
12
# Backup erstellen!
./backup-immich.sh

# Images pullen
docker compose pull

# Container neu starten
docker compose down
docker compose up -d

# Logs prüfen
docker compose logs -f

Lies immer die Release Notes - manchmal sind manuelle Migrations-Schritte nötig.

Community nutzen

Bei Problemen oder Fragen:

  • Discord: Sehr aktiv, schnelle Antworten
  • GitHub Issues: Für Bugs und Feature Requests
  • r/immich: Reddit-Community mit vielen Tipps
  • Docs: https://immich.app/docs - sehr gute offizielle Dokumentation

Performance-Tuning

PostgreSQL: Für große Bibliotheken (100k+ Fotos) tune PostgreSQL:

1
2
3
4
5
6
7
command: [
  "postgres",
  "-c", "shared_buffers=2GB",
  "-c", "effective_cache_size=6GB",
  "-c", "work_mem=64MB",
  "-c", "max_wal_size=4GB"
]

Thumbnail-Qualität: In den Admin-Einstellungen kannst du die Thumbnail-Qualität anpassen. Höhere Qualität = mehr Speicher, aber bessere Vorschau.

ML-Models: Die Standard-Modelle sind ein guter Kompromiss. Für maximale Genauigkeit gibt es größere Modelle in den Einstellungen - die brauchen aber deutlich mehr RAM und Rechenzeit.


Erweiterte Features

Reverse Proxy mit SSL

Fuer den Zugriff von unterwegs solltest du Immich hinter einen Reverse Proxy mit SSL stellen. Hier beide gaengigen Varianten:

Variante 1: Nginx Proxy Manager (NPM)

Die komfortabelste Loesung mit grafischer Oberflaeche:

  1. Domain: immich.example.com
  2. Forward Hostname: immich-server (Container-Name oder IP)
  3. Forward Port: 2283
  4. SSL: Let’s Encrypt aktivieren
  5. Custom Nginx Configuration (Advanced-Tab):
1
2
3
4
client_max_body_size 50G;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_connect_timeout 600s;
  1. Websockets Support: Aktivieren

Das client_max_body_size-Limit ist entscheidend - ohne diese Einstellung blockiert Nginx Uploads ueber 1 MB. Fuer Video-Uploads von mehreren GB sollte der Wert grosszuegig bemessen sein.

Variante 2: Nginx (manuell)

Falls du Nginx direkt konfigurierst:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
    listen 443 ssl http2;
    server_name immich.example.com;

    ssl_certificate /etc/letsencrypt/live/immich.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/immich.example.com/privkey.pem;

    client_max_body_size 50G;

    location / {
        proxy_pass http://localhost:2283;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

Variante 3: Traefik

Fuer Traefik-Setups via Docker-Labels im docker-compose.yml:

1
2
3
4
5
6
7
8
9
10
11
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:release
    # ... restliche Config ...
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.immich.rule=Host(`immich.example.com`)"
      - "traefik.http.routers.immich.entrypoints=websecure"
      - "traefik.http.routers.immich.tls.certresolver=letsencrypt"
      - "traefik.http.services.immich.loadbalancer.server.port=2283"
      - "traefik.http.middlewares.immich-body.buffering.maxRequestBodyBytes=53687091200"

Bei Traefik muss das Upload-Limit ueber eine Buffering-Middleware gesetzt werden, da Traefik standardmaessig kein Body-Size-Limit hat - was fuer Immich praktisch ist, aber bei Memory-Problemen eingeschraenkt werden sollte.

OAuth/OIDC Integration

Immich unterstützt Single Sign-On via OAuth2/OIDC. Konfiguriere das in der Web-UI unter Administration → Authentication. Kompatibel mit Authentik, Authelia, Keycloak, etc.

Reverse Geocoding

Immich kann GPS-Koordinaten automatisch in Ortsnamen übersetzen. Aktiviere das Feature in den Admin-Einstellungen. Es nutzt OpenStreetMap-Daten und läuft komplett offline.

Public Sharing

Erstelle öffentliche Links für Alben:

  1. Öffne ein Album
  2. Klicke auf “Share”
  3. Wähle “Create public link”
  4. Optional: Passwort-Schutz, Ablaufdatum, Download-Rechte

Der Link ist dann ohne Login zugänglich - perfekt zum Teilen mit Freunden oder Familie, die keinen Immich-Account haben.

Multi-User-Setup

Immich ist multi-user-fähig. Lege in den Admin-Einstellungen neue Benutzer an. Jeder Nutzer hat:

  • Eigenen Upload-Bereich
  • Eigene Alben und Favoriten
  • Optional: Partner-Sharing mit anderen Nutzern
  • Optional: Shared Albums

Gut für Familien oder WGs.


Troubleshooting

Häufige Probleme

ML-Jobs hängen fest: Wenn die ML-Queue nicht weiterläuft:

1
2
3
4
5
# ML-Container neu starten
docker restart immich-ml

# Logs prüfen
docker logs immich-ml

Oft hilft es, die Jobs in der Admin-UI komplett zurückzusetzen und neu zu starten.

Uploads schlagen fehl: Check die Logs:

1
2
docker logs immich-server
docker logs immich-microservices

Häufige Ursachen:

  • Disk voll
  • Permission-Probleme beim Upload-Volume
  • RAM-Limit erreicht

Langsame Timeline: Bei sehr großen Bibliotheken kann die Timeline langsam werden. Hilft:

  • PostgreSQL-Tuning (siehe oben)
  • Thumbnails auf SSD legen
  • RAM erhöhen

Gesichter werden nicht erkannt:

  • Prüfe, ob der ML-Service läuft
  • Schau in die Job-Queue (Admin → Jobs)
  • Eventuell Modelle neu herunterladen (Delete Model Cache in Einstellungen)

Logs und Debugging

Container-Logs:

1
2
3
4
5
6
7
8
# Alle Services
docker compose logs -f

# Nur Server
docker compose logs -f immich-server

# Nur ML
docker compose logs -f immich-ml

Log-Level erhöhen: In der .env:

1
LOG_LEVEL=debug

Container neu starten, dann sind die Logs viel ausführlicher.

Datenbank-Konsole:

1
docker exec -it immich-db psql -U postgres -d immich

Performance-Probleme

Hoher RAM-Verbrauch: PostgreSQL, Redis und der ML-Server brauchen alle RAM. Limitiere sie bei Bedarf in der docker-compose.yml:

1
2
3
4
5
6
7
8
services:
  database:
    # ...
    mem_limit: 4g

  immich-ml:
    # ...
    mem_limit: 2g

Hohe CPU-Last: Während des initialen ML-Processings normal. Wenn es dauerhaft hoch ist:

  • Prüfe, ob stuck jobs existieren
  • Eventuell ML-Features temporär deaktivieren

Roadmap und Zukunft

Immich entwickelt sich rasant weiter. Hier ein Blick auf geplante Features und die Projekt-Roadmap:

Geplante Features (2026)

Version 1.0: Die größte Milestone steht an: Version 1.0 mit Stabilitäts-Garantie. Breaking Changes sollen dann der Vergangenheit angehören.

Collaborative Editing: Gemeinsames Bearbeiten von Fotos (Cropping, Filter, Rotation) direkt im Web-Interface.

Advanced Search: Kombinierte Filter mit UND/ODER-Logik, gespeicherte Suchen, Smart Search API.

Video-Features: Besserer Video-Player, Clip-Extraktion, Video-Transcoding-Presets.

Offline-Modus: Die Mobile Apps sollen auch ohne Netzwerk funktionieren und später synchronisieren.

Langfristige Vision

Das Immich-Team hat eine klare Vision: Eine vollständige, selbstgehostete Alternative zu Google Photos, die in allen Aspekten mithalten kann. Das beinhaltet:

  • Feature-Parität mit Google Photos
  • Enterprise-Readiness: Multi-Tenancy, LDAP, SSO, Audit-Logs
  • Erweiterte KI: Video-Analyse, automatische Kategorisierung, Empfehlungen
  • Cloud-Backup-Integration: Optionales verschlüsseltes Cloud-Backup für Redundanz
  • Plugins: Erweiterbarkeit durch Third-Party-Plugins

Die Community ist aktiv und die Entwickler sehr zugänglich. Es lohnt sich, das Projekt zu verfolgen.


Fazit

Immich ist in kurzer Zeit zu einer der besten Self-Hosted-Lösungen für Fotoverwaltung geworden. Die Kombination aus moderner Technologie, durchdachtem Feature-Set und aktiver Entwicklung macht es zur ersten Wahl für alle, die von Google Photos weg wollen, ohne auf Komfort zu verzichten.

Die KI-Features sind beeindruckend und funktionieren auch lokal erstaunlich gut. Die Mobile Apps sind ausgereift und bieten ein Nutzererlebnis, das kommerziellen Alternativen in nichts nachsteht. Die Installation via Docker ist unkompliziert, und die Community hilft bei Problemen schnell weiter.

Wann lohnt sich Immich?

  • Du hast die Hardware (oder bist bereit zu investieren)
  • Privacy ist dir wichtig - deine Fotos sollen bei dir bleiben
  • Du bist bereit, dich um Wartung und Backups zu kümmern
  • Du möchtest langfristig unabhängig von Abo-Modellen sein

Wann vielleicht nicht?

  • Du willst null Aufwand - dann ist Google Photos bequemer
  • Du hast keine zuverlässige Backup-Strategie - dann riskierst du Datenverlust
  • Deine Hardware ist zu schwach - dann wird die ML-Verarbeitung zur Qual

Für mich persönlich hat sich der Umstieg gelohnt. Die initiale Setup-Zeit war überschaubar, und seitdem läuft Immich stabil und zuverlässig. Ich habe wieder die volle Kontrolle über meine Fotos, ohne auf moderne Features verzichten zu müssen. Wenn du ein Homelab betreibst und einen Google-Photos-Ersatz suchst, ist Immich definitiv einen Test wert.


Ressourcen

Hier findest du weitere Informationen und Hilfe zu Immich:

Offizielle Quellen:

Community:

  • Discord Server: Der aktivste Support-Kanal, sehr hilfsbereit
  • r/immich: Reddit-Community mit vielen Tipps und Showcases
  • GitHub Discussions: Für Feature-Requests und längere Diskussionen

Verwandte Projekte:

  • PhotoPrism: Alternative für RAW-Fotografen
  • LibrePhotos: Weitere Alternative mit CLIP-Suche
  • Photoview: Minimalistischere Galerie-Software

Tools:

  • Nginx Proxy Manager: Einfacher Reverse Proxy mit Let’s Encrypt
  • Authentik: OAuth/OIDC-Provider für SSO
  • rclone: Für Cloud-Backups (S3, Backblaze, etc.)

Viel Erfolg mit deiner Immich-Installation!

Dieser Eintrag ist vom Autor unter CC BY 4.0 lizensiert.