Files
docs/proxmox/immich-podman-install.md

3.8 KiB

Dokumentation: Immich Setup auf CachyOS (LXC) mit Podman Quadlets

Status: Initiales Setup abgeschlossen, Web-Interface erreichbar. Datum: 24. Mai 2026 Besonderheit: Nutzung der Intel Arc A310 für Hardware-Transcoding und KI (OpenVINO), sowie VectorChord als High-Performance Vektorsuche.


1. Verzeichnisstruktur & Berechtigungen

Die Daten liegen persistent auf einem gemounteten ZFS-Pool (oder Host-Mount) unter /mnt/immich-data.

# Verzeichnisse anlegen
mkdir -p /mnt/immich-data/{upload,database,redis,cache}

# Rechte setzen (LXC-Root entspricht Host-User je nach ID-Mapping)
chown -R root:root /mnt/immich-data
chmod -R 755 /mnt/immich-data


2. Netzwerk-Konfiguration

Ein dediziertes Podman-Netzwerk für die interne Kommunikation der Container.

Datei: /etc/containers/systemd/immich-net.network

[Network]
NetworkName=immich-net


3. Datenbank (PostgreSQL + VectorChord)

Einsatz des modernsten Vektor-Index-Algorithmus für die Bildsuche.

Datei: /etc/containers/systemd/immich-db.container

[Container]
ContainerName=immich-db
Image=docker.io/tensorchord/vchord-postgres:pg16-v1.1.1
Environment=POSTGRES_USER=postgres
Environment=POSTGRES_PASSWORD=[Dein_Passwort]
Environment=POSTGRES_DB=immich
Volume=/mnt/immich-data/database:/var/lib/postgresql/data:Z
Network=immich-net

[Service]
Restart=always

[Install]
WantedBy=multi-user.target


4. Redis (Cache)

Datei: /etc/containers/systemd/immich-redis.container

[Container]
ContainerName=immich-redis
Image=docker.io/library/redis:7-alpine
Volume=/mnt/immich-data/redis:/data:Z
Network=immich-net

[Service]
Restart=always

[Install]
WantedBy=multi-user.target


5. Machine Learning (OpenVINO + Intel GPU)

Optimiert für die Intel Arc A310 GPU zur Gesichtserkennung und Objekterkennung.

Datei: /etc/containers/systemd/immich-ml.container

[Container]
ContainerName=immich-ml
Image=ghcr.io/immich-app/immich-machine-learning:release-openvino
Volume=/mnt/immich-data/cache:/cache:Z
Network=immich-net

# GPU-Passthrough
AddDevice=/dev/dri/card0:/dev/dri/card0
AddDevice=/dev/dri/renderD128:/dev/dri/renderD128

[Service]
Restart=always

[Install]
WantedBy=multi-user.target


6. Immich Server (Hauptapplikation)

Hardware-Transcoding aktiviert; OIDC aktuell noch deaktiviert für Ersteinrichtung.

Datei: /etc/containers/systemd/immich-server.container

[Container]
ContainerName=immich-server
Image=ghcr.io/immich-app/immich-server:release
Volume=/mnt/immich-data/upload:/usr/src/app/upload:Z
Network=immich-net
PublishPort=2283:2283

# GPU-Passthrough für Video-Transcoding
AddDevice=/dev/dri/card0:/dev/dri/card0
AddDevice=/dev/dri/renderD128:/dev/dri/renderD128

# Umgebungsvariablen
Environment=DB_HOSTNAME=immich-db
Environment=DB_USERNAME=postgres
Environment=DB_PASSWORD=[Dein_Passwort]
Environment=DB_DATABASE_NAME=immich
Environment=REDIS_HOSTNAME=immich-redis
Environment=IMMICH_MACHINE_LEARNING_URL=http://immich-ml:3003

# OIDC Vorbereitung (aktuell deaktiviert)
Environment=IMMICH_OIDC_ENABLED=false

[Service]
Restart=always

[Install]
WantedBy=multi-user.target


7. Management & Monitoring

Portainer Agent zur Überwachung der Container-Struktur.

Datei: /etc/containers/systemd/portainer-agent.container

[Container]
ContainerName=portainer_agent
Image=docker.io/portainer/agent:latest
PublishPort=9001:9001
Volume=/run/podman/podman.sock:/var/run/docker.sock
Volume=/var/lib/containers/storage/volumes:/var/lib/docker/volumes

[Service]
Restart=always

[Install]
WantedBy=multi-user.target


8. Befehle zur Verwaltung

  • Neu einlesen: systemctl daemon-reload
  • Starten: systemctl start immich-server portainer-agent
  • Status prüfen: podman ps
  • Logs einsehen: podman logs -f immich-server