Установка IMMICH в LXC контейнер Proxmox

Добрый день.

Простейшая инструкция по установке IMMICH.

От создания контейнера, до запуска в браузере.

Просто копируйте команды и запускайте.

По времени 30 минут с кофейком.

Справится любой.

https://disk.yandex.ru/i/w94YmdWWnoADcQ

Полная инструкция по установке Immich в LXC-контейнер Debian на Proxmox

:package: Часть 1: Создание LXC-контейнера в Proxmox

1.1 Создание контейнера

1.1 Создание контейнера

  1. Войдите в веб-интерфейс Proxmox (https://ваш-ip:8006)
  2. В правом верхнем углу нажмите “Create CT”
  3. Заполните параметры на вкладке “General” :
  • Node : выберите ваш сервер
  • CT ID : например, 200 (запомните этот номер)
  • Hostname : immich-server
  • Password : установите надежный пароль для root
  • Confirm Password : повторите пароль
  1. На вкладке “Template” :
  • Storage : выберите ваше хранилище
  • Template : выберите debian-12-standard
  1. Нажмите “Next”

1.2 Настройка диска

  1. Disk size : установите минимум 20 GB (рекомендуется 50+ GB)
  2. Нажмите “Next”

1.3 Настройка CPU

  1. Cores : установите минимум 2 ядра (рекомендуется 4)
  2. Нажмите “Next”

1.4 Настройка памяти

  1. Memory : установите минимум 4096 MB (рекомендуется 8192 MB)
  2. Нажмите “Next”

1.5 Настройка сети

  1. IPv4 : выберите DHCP или Static
  • Если Static, укажите IP-адрес, например: 192.168.1.100/24
  • Gateway: 192.168.1.1
  1. Нажмите “Next” , затем “Finish”

Контейнер создастся за 1-2 минуты.

1.6 КРИТИЧЕСКИ ВАЖНЫЕ настройки безопасности

Эти настройки необходимы для работы Docker внутри LXC:

  1. Остановите созданный контейнер :
  • В Proxmox найдите контейнер immich-server (200)
  • Нажмите “Stop” и дождитесь остановки
  1. Настройте Features :
  • Откройте контейнер → “Options”“Features”
  • Нажмите “Edit”
  • Установите флажки:
    • ✓ nesting: 1
    • ✓ keyctl: 1
  • Нажмите “OK”
  1. Добавьте настройку AppArmor :
  • Войдите на хост Proxmox через SSH или консоль
  • Выполните команду (замените 200 на ваш CT ID):

bash

nano /etc/pve/lxc/200.conf

  1. Добавьте в конец файла строку :

bash

lxc.apparmor.profile: unconfined

  1. Сохраните файл : Ctrl+X, затем Y, затем Enter
  • Запустите контейстер обратно :
    2. В Proxmox нажмите “Start” на контейнере
    3. Дождитесь полной загрузки (30-60 секунд)

:penguin: Часть 2: Настройка LXC-контейнера Debian

2.1 Вход в контейнер

2.1 Вход в контейнер

  1. Откройте консоль контейнера :
  • В Proxmox выберите контейнер immich-server
  • Нажмите “Console”“Open terminal”

ИЛИ

  1. Подключитесь по SSH :
  • Узнайте IP-адрес контейнера в Proxmox (в разделе сеть)
  • С вашего компьютера:

bash

ssh root@IP-АДРЕС-КОНТЕЙНЕРА

  1. Введите пароль, установленный при создании контейнера

2.2 Обновление системы

bash

# Обновите список пакетов

apt update

# Обновите установленные пакеты

apt upgrade -y

# Установите необходимые утилиты

apt install -y curl wget nano sudo gnupg software-properties-common

2.3 Установка Docker

bash

# Скачайте скрипт установки Docker

curl -fsSL https://get.docker.com -o get-docker.sh

# Запустите скрипт установки

sh get-docker.sh

# Добавьте текущего пользователя в группу docker

usermod -aG docker $USER

# Чтобы изменения вступили в силу, выйдите и зайдите обратно

exit

Войдите в контейнер снова (через консоль Proxmox или SSH).

2.4 Установка Docker Compose

bash

# Установите Docker Compose plugin

apt install -y docker-compose-plugin

# Проверьте установку

docker --version

docker compose version

Должны отобразиться версии Docker и Docker Compose.

:rocket: Часть 3: Подготовка Immich

3.1 Создание рабочей директории

Спойлер

bash

# Создайте директорию для Immich

mkdir -p /opt/immich-app

# Перейдите в директорию

cd /opt/immich-app

3.2 Загрузка файлов конфигурации

bash

# Скачайте docker-compose.yml

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

# Скачайте файл переменных окружения

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

3.3 Настройка файла переменных окружения

bash

# Откройте файл для редактирования

nano .env

В файле .env измените следующие строки:

  1. Установите часовой пояс (раскомментируйте строку):

text

TZ=Europe/Moscow

Замените Europe/Moscow на ваш часовой пояс

  1. ОБЯЗАТЕЛЬНО измените пароль базы данных :

text

DB_PASSWORD=ВашНадежныйПароль123

Используйте только буквы A-Z, a-z и цифры 0-9, без спецсимволов

  1. Проверьте пути хранения данных (оставьте по умолчанию или измените):

text

UPLOAD_LOCATION=./library

DB_DATA_LOCATION=./postgres

Сохраните файл : Ctrl+X, затем Y, затем Enter.

3.4 Создание директорий для данных

bash

# Создайте директории для данных

mkdir -p /opt/immich-app/library

mkdir -p /opt/immich-app/postgres

# Проверьте создание

ls -la

Должны отобразиться: .env, docker-compose.yml, library/, postgres/

:wrench: Часть 4: Запуск Immich

4.1 Запуск контейнеров

Спойлер

bash

# Убедитесь, что вы в директории /opt/immich-app

cd /opt/immich-app

# Запустите контейнеры в фоновом режиме

docker compose up -d

4.2 Проверка запуска

bash

# Проверьте статус контейнеров

docker compose ps

Должны отобразиться 4 контейнера:

  1. immich_redis - статус Running
  2. immich_postgres - статус Running
  3. immich_machine_learning - статус Running
  4. immich_server - статус Running и порт 2283

4.3 Если контейнеры не запускаются

bash

# Просмотрите логи для диагностики

docker compose logs

# Если видите ошибку прав, перезапустите контейнеры

docker compose down

docker compose up -d

:globe_with_meridians: Часть 5: Доступ к веб-интерфейсу

Спойлер

5.1 Определение IP-адреса

bash

# Узнайте IP-адрес контейнера

ip addr show eth0

Пример вывода:

text

inet 192.168.1.100/24

Ваш IP-адрес: 192.168.1.100

5.2 Проверка работы веб-сервера

bash

# Проверьте, отвечает ли веб-сервер

curl -I http://localhost:2283

Должен быть ответ:

text

HTTP/1.1 200 OK

5.3 Открытие Immich в браузере

  1. На вашем компьютере откройте браузер (Chrome, Firefox и т.д.)
  2. В адресной строке введите:

text

http://ВАШ-IP-АДРЕС:2283

Замените ВАШ-IP-АДРЕС на IP из шага 5.1

Пример : http://192.168.1.100:2283

  1. Нажмите Enter

5.4 Первый запуск Immich

  1. Вы увидите стартовую страницу Immich
  2. Нажмите кнопку “Getting Started”
  3. Зарегистрируйте первого пользователя - он автоматически станет администратором
  4. Войдите в систему используя созданные учетные данные

:white_check_mark: Часть 6: Проверка работы

6.1 Загрузка тестового фото

Спойлер
  1. После входа нажмите кнопку загрузки (иконка облака)
  2. Выберите несколько тестовых фотографий с вашего компьютера
  3. Дождитесь завершения загрузки

6.2 Проверка всех функций

Спойлер

bash

# На сервере проверьте, что все контейнеры работают

docker compose ps

# Все 4 контейнера должны быть в статусе “healthy”

:gear: Часть 7: Настройка автозапуска (рекомендуется)

7.1 Создание systemd сервиса

Спойлер

bash

# Создайте файл сервиса

nano /etc/systemd/system/immich.service

7.2 Добавьте содержимое:

ini

[Unit]

Description=Immich Photo Service

Requires=docker.service

After=docker.service

[Service]

Type=oneshot

RemainAfterExit=yes

WorkingDirectory=/opt/immich-app

ExecStart=/usr/bin/docker compose up -d

ExecStop=/usr/bin/docker compose down

TimeoutStartSec=0

[Install]

WantedBy=multi-user.target

7.3 Активация сервиса

bash

# Перезагрузите systemd

systemctl daemon-reload

# Включите автозапуск

systemctl enable immich.service

# Запустите сервис

systemctl start immich.service

# Проверьте статус

systemctl status immich.service

:sos_button: Часть 8: Решение проблем

Проблема: Страница не открывается в браузере

Спойлер
  1. Проверьте IP-адрес :

bash

ip addr show eth0

  1. Проверьте фаервол :

bash

# В контейнере

iptables -L -n

  1. Проверьте изнутри контейнера :

bash

curl http://localhost:2283

Проблема: Контейнеры не запускаются

bash

# Просмотрите подробные логи

docker compose logs -f

# Пересоздайте контейнеры

docker compose down

docker compose up -d

Проблема: Не хватает памяти

  • Увеличьте RAM контейнера в настройках Proxmox
  • Перезапустите контейнер в Proxmox

:mobile_phone: Часть 9: Дальнейшие шаги

9.1 Мобильное приложение

Спойлер
  1. Установите Immich из Google Play или App Store
  2. В приложении укажите адрес: http://ВАШ-IP:2283
  3. Войдите под учетной записью администратора

9.2 Резервное копирование

bash

# Создайте задание для бэкапа (в контейнере)

crontab -e

# Добавьте строку для ежедневного бэкапа в 2:00

0 2 * * * tar -czf /backup/immich-$(date +%Y%m%d).tar.gz /opt/immich-app/library

:bullseye: Краткий чеклист успешной установки

  • Контейнер Proxmox создан с ID 200
  • В конфигурацию добавлено lxc.apparmor.profile: unconfined
  • Docker установлен и работает
  • Файлы Immich загружены в /opt/immich-app
  • В файле .env изменен пароль DB_PASSWORD
  • 4 контейнера Immich запущены (docker compose ps)
  • Веб-интерфейс открывается по http://IP:2283
  • Первый пользователь зарегистрирован

Готово! Ваш персональный фотохостинг Immich полностью настроен и готов к использованию.

2 лайка

Добро пожаловать на форум и спасибо за вклад в общее развитие сообщества
PS

  1. Я не знаю корректная ли инструкция, но рад что Вы поделились своим опытом
  2. Хорошим тоном форума - считается оформление материалов внутри форума, без ссылок на файлы. Чуть поправил первый пост.

А чем обусловлен выбор именно 12-го дебиана ?

Ошибки лезут, немогли бы помочь

Хорошим тоном считается прикладывать текст логов\ошибок
Форум позволяет вставлять и как текст и как код

log error... / злая ошибка

Ну и хотя бы картинку, на которой читаемое разрешение.
У Вас не видно букв на картинке.

Судя по мылу ошибка в этом

прошу прощения:

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: open sysctl net.ipv4.ip_unprivileged_port_start file: reopen fd 8: permission denied

а чем это отличается от этого?
очень много полезных скриптов можно найти на этом ресурсе.

в любом случае, спасибо, что поделились практическим опытом)

ну я ссылку скинул выше, проблема с актуальными версия docker, решается или обновлением PVE или отключением механизмов безопасности

  1. Helper Scripts используют нативную установку в debian без docker, а тут практически официальная установка внутри docker
  2. Helper Scripts поддерживается и обновляется сообществом, а тут еще одна установка, мои замечания так и остались комментариями в телеге, на данную инструкцию не повлияли (ряд замечаний довольно критичные)
  3. Helper scripts поддерживается сторонним сообществом, и предоставляет автоматизированный вариант установки. Тут же пошаговая инструкция от человека, который не особо разобрался для ребят, которые тоже не сильно то разбираются, но по сути, обертка над официальной докой