Tropic Host

Immich на VPS: создаём собственное облако для фото и видео

6 мин чтения
Tropic
Immich на VPS: создаём собственное облако для фото и видео

Language: ru

Immich: как создать собственное облако для фото и видео на VPS

Immich — сервис для самостоятельного хранения и автоматической загрузки фотографий и видео. Он предлагает мобильные приложения, веб-интерфейс, альбомы, умный поиск и распознавание лиц, а библиотека при этом остаётся на выбранном вами сервере.

Ниже рассмотрим требования Immich, установку на Ubuntu с Docker Compose, настройку HTTPS, подключение телефона и резервное копирование во внешнее хранилище.

Immich за шесть шагов

  1. Создайте Linux VPS с достаточным объёмом RAM и диска.
  2. Направьте поддомен, например photos.example.com, на IP-адрес сервера.
  3. Установите Docker и скачайте официальную конфигурацию Immich.
  4. Укажите пути к медиатеке и базе данных, затем запустите контейнеры.
  5. Закройте внутренний порт и включите HTTPS.
  6. Установите мобильное приложение и настройте внешнюю резервную копию.

Что такое Immich

Immich — приложение с открытым исходным кодом для управления собственной библиотекой фото и видео. Фотографии отображаются на временной шкале, их можно объединять в альбомы, находить через поиск и автоматически загружать с телефона на сервер.

Главное отличие от обычного облачного фотосервиса — контроль над серверной частью. Файлы хранятся на вашем VPS или домашнем сервере, но владелец отвечает за свободное место, обновления, безопасность и резервные копии.

ПараметрОблачный фотосервисImmich
Где хранятся файлыВ инфраструктуре провайдераНа вашем сервере
ОбслуживаниеВыполняет провайдерВыполняет владелец
СтоимостьТариф зависит от хранилищаVPS, место на диске и резервные копии

Сам по себе Immich не является резервной копией. Если фотографии существуют только на одном VPS, сбой диска или случайное удаление всё ещё могут уничтожить архив.

Основные возможности Immich

  • Автоматическая загрузка. Приложения для Android и iOS загружают фотографии и видео из выбранных альбомов. По умолчанию используется Wi-Fi, а уже существующие файлы пропускаются на основе контрольной суммы.
  • Умный поиск. Сервис умеет искать людей, места, даты, камеры, текст на изображении и описание содержимого. Лица группируются, после чего им можно назначить имена.
  • Альбомы и общий доступ. Immich поддерживает нескольких пользователей, общие альбомы, доступ для партнёра и публичные ссылки с паролем и сроком действия.
  • Карта и метаданные. Immich читает данные EXIF, показывает место съёмки, создаёт воспоминания и поддерживает избранное, архив и внешние библиотеки.

Машинное обучение создаёт наибольшую нагрузку на CPU и RAM во время первоначального импорта. После создания миниатюр и индексов повседневное потребление ресурсов обычно ниже.

Требования к серверу Immich

Официальные требования для актуальных версий:

  • 64-разрядная Linux- или Unix-подобная система;
  • не менее 2 ядер CPU, рекомендуется 4;
  • не менее 6 GB RAM, рекомендуется 8 GB;
  • Docker Engine с плагином docker compose;
  • локальный SSD для базы данных PostgreSQL;
  • место для оригинальных файлов, миниатюр и перекодированных видео.

Immich может работать на сервере с 4 GB RAM, если отключить функции машинного обучения. Для распознавания лиц и умного поиска лучше сразу выбрать 8 GB.

Миниатюры и перекодированные файлы в среднем добавляют 10–20% к размеру медиатеки. Для архива на 200 GB выделите не менее 240–260 GB. Каталог базы данных DB_DATA_LOCATION должен находиться на локальном SSD, а не на сетевом диске.

Практичная стартовая конфигурация — 4 vCPU, 8 GB RAM, Ubuntu 24.04 LTS и SSD с запасом ёмкости 20–30% относительно исходной библиотеки. Выделенная видеокарта не требуется, хотя она может ускорить обработку большого архива.

Как установить Immich на VPS

В примере используются Ubuntu 24.04 и поддомен photos.example.com.

1. Настройте DNS и подготовьте Ubuntu

Создайте DNS-запись A, указывающую на IPv4-адрес VPS. Затем подключитесь по SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Не закрывайте текущую SSH-сессию, пока не убедитесь, что новое подключение работает.

2. Установите Docker и Docker Compose

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

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

Используйте именно команду docker compose: устаревшая команда docker-compose больше не поддерживается проектом.

3. Скачайте и настройте Immich

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

Откройте файл:

nano /opt/immich/.env

Измените основные параметры:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

Укажите свой часовой пояс. Пароль PostgreSQL должен содержать латинские буквы и цифры; случайное значение сгенерирует команда openssl rand -hex 24. Остальные строки оставьте такими, как они указаны в текущем файле example.env.

4. Закройте внутренний порт и запустите контейнеры

В docker-compose.yml найдите порт сервиса immich-server:

ports:
  - '2283:2283'

Замените его на:

ports:
  - '127.0.0.1:2283:2283'

Теперь порт доступен только с самого VPS. Запустите сервис:

cd /opt/immich
docker compose up -d
docker compose ps

Для диагностики используйте docker compose logs --tail=200.

5. Включите HTTPS с Caddy

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Caddy автоматически запросит сертификат, если DNS указывает на VPS, а порты 80 и 443 доступны. Immich должен работать в корне домена или поддомена; адрес вроде example.com/immich не поддерживается.

6. Создайте администратора и подключите телефон

Откройте https://photos.example.com. Первый зарегистрированный пользователь становится администратором и может создавать дополнительные учётные записи.

Установите Immich из App Store или Google Play. На экране входа укажите адрес без /api:

https://photos.example.com

Выберите альбомы и включите резервное копирование. Первый импорт может занять некоторое время: сервер создаёт миниатюры, распознаёт лица, индексирует данные поиска и обрабатывает видео.

Обновление Immich

Перед обновлением прочитайте примечания к выпуску, особенно при переходе на новую мажорную версию:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

Сначала обновите мобильные приложения, затем сервер. Откат базы данных на старую версию может быть неподдерживаемым, если для этого не приведены отдельные инструкции.

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

Immich автоматически создаёт дампы PostgreSQL, но в них содержатся только база данных и метаданные, а не фотографии и видео. Для полного восстановления сохраняйте:

  • весь каталог /srv/immich-data;
  • /opt/immich/.env и docker-compose.yml;
  • конфигурацию Caddy.

Копия на том же VPS не защищает от отказа диска или удаления сервера. Отправляйте данные на отдельный сервер, NAS или в объектное хранилище и придерживайтесь стратегии резервного копирования 3-2-1. Периодически проверяйте восстановление, а не только наличие файлов копии.

Какой VPS выбрать для Immich

Для полноценной работы с распознаванием лиц и умным поиском разумно выбрать VPS минимум с 4 vCPU и 8 GB RAM. Рассчитайте размер диска по медиатеке и заложите дополнительное место для миниатюр, видео и роста архива.

Для этой задачи подходит Linux VPS от tropic.host со статическим IP-адресом и SSD. Можно начать с конфигурации на 8 GB RAM и увеличивать ресурсы по мере роста библиотеки. Держите базу PostgreSQL на быстром локальном диске, а резервную копию — за пределами этого VPS.

VPS удобен для круглосуточного доступа из любой сети. Для архива объёмом несколько терабайт домашний сервер может оказаться дешевле, но питание, внешний доступ и резервирование придётся обеспечивать самостоятельно.

Ограничения Immich

Самостоятельное размещение не гарантирует надёжность. Слабый пароль, открытый порт 2283, устаревшие контейнеры или отсутствие внешней резервной копии создают риск потери данных.

Immich также не является точной копией Google Photos или iCloud: возможности редактирования и фоновой синхронизации отличаются, а скорость анализа зависит от оборудования. Перед переносом единственного архива протестируйте сервис на небольшой библиотеке.

Заключение

Immich позволяет создать собственную фотогалерею с загрузкой с телефона, альбомами, распознаванием лиц, поиском и общим доступом. Для актуальной версии лучше подготовить Linux VPS с 4 ядрами, 8 GB RAM и SSD с запасом ёмкости не менее 20–30%.

После установки настройте HTTPS, обновления и внешнюю резервную копию медиакаталога вместе с базой данных. От потери фотографий защищает именно резервная копия, а не самостоятельное размещение само по себе.

FAQ

Immich бесплатен?

Сервер Immich имеет открытый исходный код и может работать без обязательной подписки. При этом нужно оплачивать VPS, домен, место на диске и резервные копии.

Сколько RAM нужно Immich?

Официальный минимум — 6 GB RAM, а рекомендуемый объём — 8 GB. При 4 GB потребуется отключить машинное обучение.

Можно ли установить Immich без домена?

Технически да, но для постоянного доступа с телефона лучше использовать домен и HTTPS. Это защищает аутентификацию и передачу файлов.

Заменяет ли Immich резервную копию фотографий?

Нет. Отдельно копируйте медиатеку и базу данных на другое устройство или в другое место.

Можно ли перенести существующий архив фотографий?

Да. Файлы можно загрузить через веб-интерфейс или CLI либо подключить каталог как внешнюю библиотеку. Перед масштабным импортом создайте копию исходных данных.