DevOps

Развертывание Immich на сервере

3 мин. чтения
Развертывание Immich на сервере

Immich — это современное, высокопроизводительное решение для управления фото и видео, альтернатива Google Photos, которое можно развернуть на своём сервере. В этой статье мы развернём Immich с помощью Docker, настроим внешнюю библиотеку для доступа к фотографиям из Nextcloud и обеспечим корректную работу веб-интерфейса.

1. Подготовка сервера

Мы предполагаем, что у вас есть сервер на Ubuntu/Debian (или любая другая ОС с поддержкой Docker). Убедитесь, что у вас есть права root или sudo.

1.1. Установка Docker

plaintext
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 sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") 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 sudo systemctl enable docker --now

1.2. Добавление пользователя в группу docker

plaintext
sudo groupadd docker # если группы нет sudo usermod -aG docker $USER

Выйдите и зайдите заново или выполните newgrp docker.

2. Установка Immich
2.1. Создание каталога и загрузка конфигураций

plaintext
mkdir ~/immich-app cd ~/immich-app 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

2.2. Настройка переменных окружения
Отредактируйте файл .env:

plaintext
nano .env

Обязательно задайте:

DB_PASSWORD — надёжный пароль для базы данных

UPLOAD_LOCATION=./library (можно изменить, если нужно)

TZ=Europe/Moscow (или ваш часовой пояс)

Сохраните файл (Ctrl+O, Enter, Ctrl+X).

2.3. Запуск Immich

plaintext
docker compose up -d

Через минуту проверьте статус:

plaintext
docker compose ps

Все контейнеры должны быть в состоянии Up.

3. Доступ к веб-интерфейсу
Immich по умолчанию слушает порт 2283. Откройте в браузере:

plaintext
http://IP_сервера:2283

Создайте учётную запись администратора (это будет ваш первый пользователь).

4. Подключение внешней папки (например, из Nextcloud)
Если вы хотите, чтобы Immich показывал фотографии, уже загруженные в Nextcloud, это делается через внешние библиотеки.

4.1. Монтирование папки в контейнеры
Остановите Immich:

plaintext
cd ~/immich-app docker compose down

Отредактируйте docker-compose.yml и добавьте монтирование для immich-server и immich-microservices (если есть). Добавьте строку в секции volumes:

plaintext
services: immich-server: # ... остальное volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - /путь/к/папке/Nextcloud:/data # Добавьте эту строку immich-microservices: # ... остальное volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - /путь/к/папке/Nextcloud:/data # Добавьте эту строку

Пример для папки ФОТОГРАФИИ пользователя Nextcloud:

plaintext
- /mnt/nextcloud/username/files/ФОТОГРАФИИ/:/data

Перезапустите контейнеры:

plaintext
docker compose up -d

4.2. Добавление библиотеки в веб-интерфейсе
Зайдите в Immich под администратором.

Нажмите на шестерёнку → Администрирование → External Libraries.

Нажмите Create Library.

После создания нажмите на три точки у библиотеки → Edit Import Paths.

Добавьте путь: /data.

Нажмите Save, затем на три точки → Scan New Library Files.

Immich начнёт сканирование папки и создаст миниатюры. Статус можно смотреть в Администрирование → Jobs.

4.3. Права доступа
Если Immich не видит файлы, выполните на хосте:

plaintext
sudo chmod -R a+rX /путь/к/папке/Nextcloud

5. Настройка обратного прокси (Nginx)
Для доступа по домену и HTTPS настройте Nginx. Пример конфигурации:

plaintext
server { listen 443 ssl; server_name photos.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; client_max_body_size 50000M; 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_redirect off; proxy_read_timeout 600s; proxy_send_timeout 600s; send_timeout 600s; location / { proxy_pass http://127.0.0.1:2283; } }

Перезагрузите Nginx:

plaintext
sudo nginx -t && sudo systemctl reload nginx

6. Обновление Immich
Для обновления до последней версии:

plaintext
cd ~/immich-app docker compose down docker compose pull docker compose up -d

7. Управление резервными копиями
База данных хранится в томе pgdata (см. docker volume ls).

Загруженные через Immich оригиналы — в папке, указанной в UPLOAD_LOCATION.

Для бэкапа можно копировать эти данные.

 

Новые статьи на почту

Без спама, только полезное

Подписываясь, вы соглашаетесь с политикой конфиденциальности