Self-Hosting Immich: Privé foto cloud

Uw foto's op een zelfgehoste AI-gedreven back-up

Inhoud

Immich is een revolutionaire open-source, zelfgehost oplossing voor het beheren van foto’s en video’s die je volledige controle geeft over je herinneringen. Met functies die concurreren met Google Photos - waaronder AI-gestuurde gezichtsherkenning, slimme zoekfuncties en automatische mobiele back-up - terwijl je data privé en veilig blijft op je eigen server.

Net zoals Persoonlijk Kennisbeheer je helpt om je gedachten en informatie te organiseren en te bewaren, helpt Immich je om je visuele herinneringen te organiseren en te bewaren.

immich

Wat is Immich?

Immich is een open-source, zelfgehost alternatief voor proprietaire cloud foto diensten zoals Google Photos en iCloud. Gemaakt met moderne technologieën zoals TypeScript, PostgreSQL en machine learning, biedt Immich een functierijke platform voor het back-uppen, organiseren en browsen van je foto- en videocollectie.

Belangrijke functies

Privacy-First Design: Alle je foto’s blijven op je infrastructuur. Geen derde partij servers, geen data mining, geen privacy zorgen. Je herinneringen behoren tot jou.

Automatische mobiele back-up: Native iOS en Android apps bieden automatische achtergrond back-up, vergelijkbaar met Google Photos. Je foto’s zijn beveiligd kort na het nemen ervan.

AI-gestuurde zoekfunctie: Met behulp van machine learning modellen zoals CLIP en gezichtsherkenning, stelt Immich semantische zoekfunctie mogelijk. Zoek naar “strand zonsondergang”, “hond speelt” of specifieke personen zonder handmatige taggen.

Gezichtsherkenning: Automatische detectie en clustering van gezichten in je foto’s. Immich herkent personen over je hele bibliotheek, waardoor het gemakkelijk is om foto’s van specifieke personen te vinden.

Moderne webinterface: Mooie, responsieve webinterface voor het browsen, organiseren en delen van je foto’s vanaf elk apparaat met een browser.

Multi-gebruikersondersteuning: Maak accounts aan voor familieleden, elk met hun eigen privé bibliotheek. Deel geselecteerde albums terwijl je persoonlijke foto’s privacy behouden.

Live Photo ondersteuning: Volledige ondersteuning voor iOS Live Photos en Android Motion Photos, waardoor zowel de still foto als de video component behouden blijven.

Metadata behouden: EXIF data inclusief locatie, camera instellingen en tijdstempels worden behouden. Bekijk je foto’s op een kaart gebaseerd op GPS coördinaten.

Externe bibliotheek ondersteuning: Importeer bestaande foto bibliotheek van externe opslag zonder bestanden te kopiëren, wat schijf ruimte bespaart. Net zoals tools zoals Obsidian helpen bij het beheren en organiseren van tekstgebaseerde kennis, biedt Immich krachtige organisatie voor visuele media.

Waarom zelfhosten je foto’s?

Volledige privacy controle

Wanneer je commerciële cloud diensten gebruikt, worden je foto’s op servers opgeslagen die je niet controleert. Ze kunnen worden geanalyseerd voor reclame, opgenomen in machine learning training data of toegankelijk gemaakt voor derde partijen. Met Immich blijven je foto’s je server verlaten tenzij je ze expliciet deelt.

Geen opslag limieten

Cloud diensten factureren op basis van opslag niveaus. Met zelfhosting is je enige limiet je hardware capaciteit. Een 10TB harde schijf kost minder dan twee jaar van premium cloud opslag.

Kostenefficiëntie

Na de initiële hardware investering heeft zelfhosting minimale aanhoudende kosten. Geen maandelijkse abonnementen, geen onverwachte kosten wanneer je opslag limieten overschrijdt.

Data duurzaamheid

Cloud diensten kunnen voorwaarden veranderen, prijzen verhogen of volledig sluiten. Je zelfgehoste oplossing blijft onder jouw controle onbepaald.

Leer mogelijkheid

Zelfhosten van Immich biedt hands-on ervaring met Docker, reverse proxies, SSL certificaten, database beheer en server administratie - waardevolle vaardigheden voor elke ontwikkelaar of DevOps professional.

Architectuur overzicht

Immich volgt een microservices architectuur met verschillende componenten:

Immich Server: Hoofd API server die authenticatie, foto uploads en database operaties verwerkt. Gemaakt met Node.js en TypeScript.

Immich Machine Learning: Afzonderlijke Python service die TensorFlow modellen draait voor gezichtsherkenning, object detectie en CLIP gebaseerde semantische zoekfunctie.

Immich Web: React gebaseerde webinterface die de gebruikersgeoriënteerde toepassing biedt.

PostgreSQL: Relationele database die metadata, gebruikersinformatie en relaties tussen foto’s, personen en albums opslaat.

Redis: In-memory cache voor sessiebeheer en job queue coördinatie.

TypeSense (optioneel): Zoekmachine voor verbeterde zoekfunctionaliteit en prestaties.

Alle componenten draaien als Docker containers, georchestreerd met Docker Compose voor vereenvoudigde implementatie en beheer.

Hardware vereisten

Minimum specificaties

  • CPU: 2 cores (x86_64 of ARM64)
  • RAM: 4GB (8GB aanbevolen)
  • Opslag: 10GB voor toepassing + foto bibliotheek grootte
  • Netwerk: 100 Mbps voor lokale toegang

Aanbevolen specificaties

  • CPU: 4+ cores met goede single-thread prestaties
  • RAM: 8-16GB (meer voor grotere bibliotheek)
  • Opslag: SSD voor database en toepassing, HDD voor foto opslag
  • GPU: Optioneel maar versnelt ML taken aanzienlijk (NVIDIA met CUDA ondersteuning)

Opslag overwegingen

Plan voor ongeveer 1,15x je huidige foto bibliotheek grootte om rekening te houden met miniatures en meerdere resoluties. Gebruik SSD opslag voor de PostgreSQL database voor betere prestaties.

Voor grote bibliotheek (100.000+ foto’s), overweeg:

  • NAS met RAID voor data redundantie
  • Afzonderlijke SSD voor database
  • NVMe cache laag voor vaak toegankelijke foto’s

Installatie handleiding

Voorwaarden

Voor de installatie van Immich, zorg ervoor dat je hebt:

  1. Linux Server: Ubuntu 22.04 LTS of Debian 12 aanbevolen (zie onze uitgebreide gids over Hoe Ubuntu 24.04 te installeren & nuttige tools voor gedetailleerde setup instructies)
  2. Docker: Versie 20.10 of nieuwer
  3. Docker Compose: Versie 2.0 of nieuwer
  4. Domeinnaam: Optioneel maar aanbevolen voor externe toegang
  5. Reverse Proxy: Nginx of Caddy voor SSL afhandeling

Stap-voor-stap installatie

1. Installeer Docker en Docker Compose

# Update systeem pakketten
sudo apt update && sudo apt upgrade -y

# Installeer Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Voeg gebruiker toe aan docker groep
sudo usermod -aG docker $USER

# Installeer Docker Compose
sudo apt install docker-compose-plugin

Voor meer details over curl commando’s en opties, zie onze cURL Cheat Sheet. Als je nieuw bent met Docker, biedt onze Docker Cheat Sheet essentiële commando’s en concepten.

2. Maak Immich directory structuur aan

# Maak toepassingsdirectory aan
mkdir -p ~/immich/{library,database,machine-learning}
cd ~/immich

# Download docker-compose.yml
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

# Download omgevings sjabloon
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Als je nieuw bent met bash scripting en command-line operaties, biedt onze Bash Cheat Sheet nuttige referentie voor veelvoorkomende commando’s en directory operaties.

3. Configureer omgevingsvariabelen

Bewerk de .env bestand met je instellingen:

# Database configuratie
DB_PASSWORD=your_secure_password_here
DB_DATABASE_NAME=immich
DB_USERNAME=postgres

# Upload locatie
UPLOAD_LOCATION=./library

# Machine Learning
MACHINE_LEARNING_ENABLED=true

# Tijdzone
TZ=America/New_York

# Publieke URL (voor externe toegang)
IMMICH_SERVER_URL=https://photos.yourdomain.com

Belangrijk: Genereer een sterke willekeurige wachtwoord voor DB_PASSWORD:

openssl rand -base64 32

4. Start Immich

# Start alle diensten
docker compose up -d

# Controleer dienst status
docker compose ps

# Bekijk logs
docker compose logs -f

Dit zijn slechts de basis - voor een uitgebreide referentie van Docker Compose commando’s en operaties, zie onze Docker Compose Cheat Sheet.

5. Toegang tot webinterface

Navigeer naar http://your-server-ip:2283 en maak je admin account aan. Deze eerste account wordt het systeem administrator.

Instellen van externe toegang

Voor veilige externe toegang, configureer een reverse proxy:

Nginx configuratievoorbeeld

server {
    listen 443 ssl http2;
    server_name photos.yourdomain.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    client_max_body_size 50000M;

    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;
    }
}

Caddy configuratievoorbeeld (Eenvoudiger met automatische HTTPS)

photos.yourdomain.com {
    reverse_proxy localhost:2283
    
    @uploads {
        path /api/upload/*
    }
    request_body @uploads {
        max_size 50GB
    }
}

Mobile App Setup

iOS

  1. Download Immich van de App Store
  2. Voer je server URL in (https://photos.yourdomain.com)
  3. Meld je aan met je referenties
  4. Schakel automatische back-up in instellingen
  5. Kies welke albums je wilt back-uppen (of alle foto’s)
  6. Configureer back-up instellingen (alleen via WiFi, alleen bij opladen, etc.)

Android

  1. Download Immich van Google Play Store of F-Droid
  2. Voer server URL en referenties in
  3. Verleen foto/video toegang permissies
  4. Configureer automatische back-up instellingen
  5. Schakel foreground service in voor betrouwbare achtergrond back-up

Back-up configuratie tips

  • Alleen via WiFi: Schakel in om mobiele data kosten te vermijden
  • Alleen bij opladen: Voorkom batterijverbruik bij grote uploads
  • Inclusief video’s: Video’s verbruiken aanzienlijke opslag en bandbreedte
  • Achtergrond app vernieuwing: Schakel in op iOS voor betrouwbare synchronisatie
  • Foreground service: Schakel in op Android voor consistente back-up

Machine Learning functies

Gezichtsherkenning

Immich’s gezichtsherkenning herkent en groepeert gezichten automatisch over je bibliotheek:

  1. Initiële verwerking: Na upload, analyseert de ML service elke foto op gezichten
  2. Gezichtsgroepering: Gelijke gezichten worden gegroepeerd
  3. Handmatige toewijzing: Bekijk groepen en toon namen aan personen
  4. Continue leerproces: Naarmate je meer foto’s tagt, verbetert de nauwkeurigheid

Configuratie:

# In docker-compose.yml, ML service omgeving
MACHINE_LEARNING_MODEL_CACHE=/cache
MACHINE_LEARNING_WORKERS=1  # Verhoog met meer CPU cores

Object detectie en CLIP zoekfunctie

Immich gebruikt CLIP (Contrastive Language-Image Pre-training) voor semantische zoekfunctie:

  • Zoek naar concepten zonder tags: “berg landschap”, “verjaardags taart”, “rode auto”
  • Natuurlijke taal queries begrijpen context en relaties
  • Werkt over talen (hoewel Engels meestal de beste resultaten oplevert)

GPU versnelling

Voor aanzienlijk snellere ML verwerking, schakel GPU ondersteuning in:

NVIDIA GPU met CUDA

# In docker-compose.yml, ML service
services:
  immich-machine-learning:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

Zorg ervoor dat je NVIDIA Container Toolkit geïnstalleerd hebt:

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 update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

Back-up strategieën

Hoewel Immich je foto’s back-uppt van mobiele apparaten, moet je Immich zelf ook back-uppen:

Wat te back-uppen

  1. Foto bibliotheek: De UPLOAD_LOCATION directory met originele foto’s
  2. Database: PostgreSQL database met metadata en relaties
  3. Configuratie: .env bestand en docker-compose.yml

Database back-up

Automatische dagelijkse back-up script

#!/bin/bash
# sla op als ~/immich/backup.sh

BACKUP_DIR=~/immich-backups
DATE=$(date +%Y%m%d_%H%M%S)

# Maak back-up directory aan
mkdir -p $BACKUP_DIR

# Back-up PostgreSQL database
docker exec -t immich-postgres pg_dumpall -c -U postgres | \
    gzip > $BACKUP_DIR/immich_db_$DATE.sql.gz

# Bewaar alleen de laatste 30 dagen van back-ups
find $BACKUP_DIR -name "immich_db_*.sql.gz" -mtime +30 -delete

echo "Back-up voltooid: $BACKUP_DIR/immich_db_$DATE.sql.gz"

Maak uitvoerbaar en plannen met cron:

chmod +x ~/immich/backup.sh
crontab -e
# Voeg regel toe: 0 2 * * * ~/immich/backup.sh

Voor meer informatie over bash scripting, automatisering en cron jobs, verwijzen wij naar onze uitgebreide Bash Cheat Sheet.

Foto bibliotheek back-up

Je foto bibliotheek moet apart back-uppen naar een andere locatie:

Optie 1: Rsync naar NAS

rsync -avz --delete ~/immich/library/ nas:/backups/immich-photos/

Optie 2: Cloud back-up (versleuteld)

# Gebruik rclone met encryptie
rclone sync ~/immich/library/ remote:immich-backup-encrypted/ --encrypt

Optie 3: Lokale externe schijf

rsync -avz --delete ~/immich/library/ /mnt/backup-drive/immich/

Onderhoud en updates

Regelmatige onderhoud taken

Monitor schijfruimte

# Controleer schijfgebruik
df -h ~/immich/library
df -h ~/immich/database

# Controleer Docker volumes
docker system df

Monitor prestaties

# Bekijk resourcegebruik
docker stats

# Controleer specifieke service logs
docker compose logs immich-server --tail=100
docker compose logs immich-machine-learning --tail=100

Immich updaten

Immich wordt vaak bijgewerkt met nieuwe functies en bugfixes. Werk regelmatig bij:

cd ~/immich

# Back-up database voor het updaten
docker exec -t immich-postgres pg_dumpall -c -U postgres > backup_pre_update.sql

# Haal nieuwste images op
docker compose pull

# Stop en verwijder oude containers
docker compose down

# Start met nieuwe images
docker compose up -d

# Controleer logs op eventuele problemen
docker compose logs -f

Database onderhoud

Periodiek database onderhoud zorgt voor optimale prestaties:

# Vacuum en analyseer database
docker exec -it immich-postgres psql -U postgres -d immich -c "VACUUM ANALYZE;"

# Controleer database grootte
docker exec -it immich-postgres psql -U postgres -d immich -c \
    "SELECT pg_size_pretty(pg_database_size('immich'));"

Prestatie optimalisatie

Opslag optimalisatie

Gebruik SSD voor database: PostgreSQL profiteert aanzienlijk van SSD opslag. Overweeg:

volumes:
  pgdata:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /mnt/ssd/immich-db

Afscheiden foto opslag: Houd grote foto bibliotheek op HDD terwijl database op SSD blijft:

UPLOAD_LOCATION=/mnt/hdd/immich-photos

Database prestatie tuning

Voor bibliotheek met 50.000+ foto’s, tune PostgreSQL:

# In docker-compose.yml, postgres service omgeving
POSTGRES_SHARED_BUFFERS=256MB
POSTGRES_EFFECTIVE_CACHE_SIZE=1GB
POSTGRES_MAINTENANCE_WORK_MEM=64MB
POSTGRES_CHECKPOINT_COMPLETION_TARGET=0.9
POSTGRES_WAL_BUFFERS=16MB
POSTGRES_DEFAULT_STATISTICS_TARGET=100

Machine Learning prestatie

Batch verwerking: Verwerk meerdere foto’s tegelijk:

MACHINE_LEARNING_WORKERS=4  # Match CPU core count

GPU versnelling: Zoals eerder vermeld, biedt GPU versnelling 5-10x snelheidstoename voor ML taken.

Beveiligingsbest practices

Authenticatie en toegangscontrole

  1. Sterke wachtwoorden: Gebruik wachtwoordmanager om complexe wachtwoorden te genereren en op te slaan
  2. Twee-factor authenticatie: Schakel 2FA in voor admin account (indien ondersteund in jouw versie)
  3. Regelmatige toegangscontrole: Periodiek overzicht van gebruikersaccounts en verwijder ongebruikte accounts

Netwerkbeveiliging

Reverse proxy met SSL: Nooit Immich direct blootstellen aan internet zonder HTTPS:

# Gebruik Let's Encrypt voor gratis SSL certificaten
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d photos.yourdomain.com

Firewall configuratie:

# Stel alleen benodigde poorten in
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP (omleiden naar HTTPS)
sudo ufw allow 443/tcp   # HTTPS
sudo ufw enable

VPN of Tailscale: Voor maximale beveiliging, toegang tot Immich via VPN:

  • Installeer Tailscale op je server en apparaten
  • Toegang via Tailscale IP (100.x.x.x)
  • Geen poorten blootgesteld aan het publieke internet

Container beveiliging

Regelmatige updates: Houd Docker images up-to-date om beveiligingsproblemen te patchen

Rootloos uitvoeren: Configureer Docker rootloos modus voor extra isolatie

Resource limieten: Voorkom DoS aanvallen door container resources te beperken:

services:
  immich-server:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G

Probleemoplossing van veelvoorkomende problemen

Upload mislukkingen

Symptoom: Foto’s falen om te uploaden vanaf mobiele app

Oplossingen:

  • Controleer server schijfruimte: df -h
  • Controleer reverse proxy client_max_body_size instelling
  • Controleer server logs: docker compose logs immich-server
  • Zorg dat mobiele app de nieuwste versie heeft

Machine Learning niet verwerken

Symptoom: Gezichtsherkenning of zoekfunctie werkt niet

Oplossingen:

  • Controleer ML container status: docker compose ps immich-machine-learning
  • Bekijk ML logs: docker compose logs immich-machine-learning
  • Herstart ML service: docker compose restart immich-machine-learning
  • Controleer of modelbestanden gedownload zijn: ls ~/immich/machine-learning/cache/

Database verbinding fouten

Symptoom: Webinterface toont database verbinding fouten

Oplossingen:

  • Controleer of PostgreSQL container draait: docker compose ps immich-postgres
  • Controleer database logs: docker compose logs immich-postgres
  • Controleer juiste wachtwoord in .env bestand
  • Test verbinding: docker exec -it immich-postgres psql -U postgres

Snelheid problemen

Symptoom: Webinterface of zoekfunctie is traag

Oplossingen:

  • Controleer systeem resources: CPU, RAM, schijf I/O
  • Voer database vacuum uit: VACUUM ANALYZE;
  • Herstart diensten: docker compose restart
  • Bekijk PostgreSQL prestatie instellingen
  • Overweeg hardware upgrade (SSD, meer RAM)

Mobiele app niet synchroniseren

Symptoom: Foto’s worden niet back-upped vanaf mobiele apparaat

Oplossingen:

  • Controleer of achtergrond vernieuwing ingeschakeld is (iOS)
  • Schakel foreground service in (Android)
  • Controleer WiFi-only instellingen als op mobiele data
  • Controleer of server URL toegankelijk is vanaf mobiele netwerk
  • Bekijk app permissies voor foto toegang
  • Wis app cache en herlog in

Migreren van andere diensten

Van Google Photos

Exporteer je data:

  1. Ga naar Google Takeout (takeout.google.com)
  2. Selecteer Google Photos
  3. Kies export formaat en grootte
  4. Download archieven

Importeer naar Immich:

  1. Pak gedownloade archieven uit
  2. Gebruik Immich CLI tool of web upload
  3. Metadata wordt behouden van JSON sidecar bestanden
# Gebruik Immich CLI (installeer vanuit releases)
immich upload --recursive /path/to/google-photos-export/

Van iCloud Photos

Export:

  1. Bezoek iCloud.com
  2. Selecteer foto’s om te downloaden
  3. Of gebruik iCloud voor Windows/Photos app export

Import: Zelfde als Google Photos, upload via webinterface of CLI tool

Van lokale opslag

Externe bibliotheek functie: In plaats van uploaden, wijst Immich naar bestaande foto directory:

  1. Navigeer naar Beheer > Externe bibliotheek
  2. Voeg bibliotheek pad toe (moet toegankelijk zijn vanaf Docker container)
  3. Immich scant en indexeert zonder bestanden te kopiëren
  4. Bespaart aanzienlijke schijfruimte en tijd
# In docker-compose.yml, voeg volume mount toe
volumes:
  - /mnt/existing-photos:/mnt/external-library:ro

Community en ondersteuning

Officiële bronnen

Bijdragen

Immich is open-source en welkom bijdragen:

  • Bugrapporten: Indien gedetailleerde issue rapporten op GitHub
  • Functie-aanvragen: Bespreek op Discord of GitHub Discussies
  • Code bijdragen: Indien pull requests volgens bijdrage richtlijnen
  • Documentatie: Verbeter documentatie voor betere gebruikerservaring
  • Vertalingen: Help Immich te lokaliseren naar jouw taal

Alternatieve tools

Als Immich niet aan jouw behoeften voldoet, overweeg:

  • PhotoPrism: Meer rijp, functierijk, andere architectuur
  • Piwigo: Traditionele galerij-stijl interface
  • Nextcloud Photos: Deel van groter Nextcloud ecosystem
  • Photoview: Simpler, lichtgewicht alternatief
  • LibrePhotos: Een ander alternatief voor Google Photos met AI functies

Conclusie

Zelfhosten van Immich biedt een krachtige, privé alternatief voor commerciële cloud foto diensten. Hoewel het een initiële technische setup en aanhoudend onderhoud vereist, maken de voordelen van volledige privacy controle, geen opslag limieten en vrijheid van abonnementskosten het waard voor veel gebruikers.

De combinatie van automatische mobiele back-up, AI-gestuurde zoekfunctie, gezichtsherkenning en moderne interface creëert een ervaring vergelijkbaar met commerciële aanbiedingen terwijl je data onder jouw controle blijft. Of je nu een privacy enthousiast, kostenefficiënte gebruiker met grote foto bibliotheek of technisch professional die hands-on infrastructuur ervaring wil, biedt Immich een overtuigende oplossing.

Begin klein met een thuis server of VPS, test met een subset van je foto bibliotheek en migreer geleidelijk terwijl je comfortabel wordt met het systeem. De actieve community en frequente updates zorgen ervoor dat Immich blijft verbeteren en functies toevoegen.

Je herinneringen zijn kostbaar - neem controle over ze met Immich.