Docker
March 23

Установка immich в докер с помощью Portainer.

Portainer, конечно же, должен быть установлен заранее.

В этой установке включено хардварное ускорение (для процессоров n100, n150) и вся конфигурация описана в одном yaml-файле.

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    user: "1026:100"
    group_add:
      - "937" 
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - NET_RAW
    devices:
      - /dev/dri:/dev/dri
    volumes:
      - /volume1/docker/immich/library:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      - /volume1/homes/sergey/Photos:/mnt/media/sergey:ro
      - /volume1/homes/olga/Photos:/mnt/media/olga:ro
    environment:
      - DB_PASSWORD=MyStrongPASS
      - DB_USERNAME=postgres
      - DB_DATABASE_NAME=immich
      - TZ=Europe/Samara
      - REDIS_HOSTNAME=immich_redis
      #- IMMICH_LOG_LEVEL=log
      - IMMICH_LOG_LEVEL=warn
    ports:
      - '2283:2283'
    depends_on:
      - immich_redis
      - database
    restart: unless-stopped
    healthcheck:
      #disable: false
      disable: true
    networks:
      - immich

  immich-machine-learning:
    container_name: immich_ml
    image: ghcr.io/immich-app/immich-machine-learning:release-openvino
    user: "1026:100"
    group_add:
      - "937"
    device_cgroup_rules:
      - 'c 189:* rmw'
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - NET_RAW
    volumes:
      - /volume1/docker/immich/ml_cache:/cache
      - /volume1/docker/immich/matplotlib:/matplotlib
      - /dev/bus/usb:/dev/bus/usb
    devices:
      - /dev/dri:/dev/dri
    environment:
      - MPLCONFIGDIR=/matplotlib
      - DB_PASSWORD=MyStrongPASS
      - DB_USERNAME=postgres
      - DB_DATABASE_NAME=immich
      - TZ=Europe/Samara
      - REDIS_HOSTNAME=immich_redis
      - MACHINE_LEARNING_MODEL_TTL=3600
      #- IMMICH_LOG_LEVEL=log
      #- IMMICH_LOG_LEVEL=warn
    restart: unless-stopped
    healthcheck:
      #disable: false
      disable: true
    networks:
      - immich

  immich_redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm
    user: "1026:100"
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - NET_RAW
    environment:
      - TZ=Europe/Samara
    volumes:
      - /volume1/docker/immich/redis:/data
    sysctls:
      - net.core.somaxconn=511
    healthcheck:
      #test: redis-cli ping || exit 1
      disable: true
    command: redis-server --loglevel warning
    restart: unless-stopped
    networks:
      - immich

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.2-pgvectors0.2.0
    user: "1026:100"
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - NET_RAW
    environment:
      REDIS_HOSTNAME: immich_redis
      TZ: Europe/Samara
      POSTGRES_PASSWORD: MyStrongPASS
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - /volume1/docker/immich/pg_db:/var/lib/postgresql/data
    restart: unless-stopped
    networks:
      - immich

networks:
  immich:
    name: immich_net
    external: false
  • В строчках user: "1026:100" (все вхождения) измените 1026 и 100 на свои значение user и group.
  • Директории /volume1/docker/immich/* и /volume1/homes/*/Photos измените на желаемые и создайте заранее.
  • В разделах group_add (все вхождения) замените значение 937 на свое, узнать его можно командами: ls -la /dev/dri и cat /etc/group | grep videodriver.
  • В разделах healthcheck: можно включить проверку здоровья контейнеров.
  • Измените фразу MyStrongPASS (все вхождения) - придумайте свой пароль базы данных.
  • В параметре TZ=Europe/Samara измените часовой пояс на свой