Immich – Stable GPU Deployment Guide (v1.105.0) (NOT - TESTED)

Googled777 avatar   
Googled777
This guide installs a fully GPU‑accelerated Immich stack using pinned, stable versions for long‑term reproducibility. Version used: Immich v1.105.0 — a proven, stable baseline.

 

Immich – Stable GPU Deployment Guide (v1.105.0)

Stable Pinned Versions Docker NVIDIA GPU TensorRT 2025

This guide installs a fully GPU‑accelerated Immich stack using pinned, stable versions for long‑term reproducibility. Version used: Immich v1.105.0 — a proven, stable baseline.

1. Install Docker

sudo apt update
sudo apt install -y ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) \
  signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2. Install NVIDIA GPU Drivers

sudo apt install -y nvidia-driver-535
sudo reboot

3. Install NVIDIA Container Toolkit

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit.gpg] https://#' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt update
sudo apt install -y nvidia-container-toolkit

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

4. Verify GPU passthrough

docker run --rm --gpus all nvidia/cuda:12.2.0-base nvidia-smi

5. Create Immich directory

mkdir -p /opt/immich
cd /opt/immich

6. Create .env

IMMICH_VERSION=v1.105.0
DB_USERNAME=immich
DB_PASSWORD=immich
DB_DATABASE_NAME=immich

7. Stable docker-compose.yml (Pinned Versions)

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:v1.105.0
    depends_on:
      - redis
      - database
    env_file:
      - .env
    volumes:
      - immich_upload:/usr/src/app/upload
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:v1.105.0-cuda
    env_file:
      - .env
    volumes:
      - model-cache:/cache
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    restart: always

  redis:
    container_name: immich_redis
    image: redis:7.2.4
    restart: always

  database:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    environment:
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

volumes:
  immich_upload:
  pgdata:
  model-cache:

8. Start Immich

docker compose up -d

9. Access Immich

  • Local / Signal Raider: http://localhost:2283
  • Johannes: via HAProxy backend

10. GPU verification inside Immich

  • Settings → Machine Learning
  • CUDA should show as available
  • Indexing photos should use the GPU heavily

Versioning Philosophy

This deployment uses pinned, stable versions instead of floating tags like latest or release. Pinned versions ensure that every user following this guide gets the exact same behavior, even months later.

Immich evolves quickly, and floating tags can introduce unexpected changes:

  • schema migrations may change
  • Postgres vector extensions may update
  • CUDA builds may shift
  • ML models may be replaced
  • container tags may be removed or made private

By pinning versions:

  • deployments become reproducible
  • tutorials remain accurate over time
  • users avoid surprise breakage
  • debugging becomes consistent
  • future upgrades can be planned instead of forced
This configuration is marked as not yet tested at the time of publication. Each component has been validated individually, but the combined pinned stack will be fully tested on Signal Raider before being marked production‑ready.

Once validated, this section will be updated to:

  • ✔ Fully tested on Signal Raider
  • ✔ Production‑ready for Johannes

This approach ensures that every guide on i9.nu remains trustworthy, predictable, and aligned with real‑world deployments.

0 Bình luận

Không có bình luận nào được tìm thấy