Блог и Новости is*hosting - Хостинг-провайдер Нового Поколения

Immich on VPS: Self-Hosted Photo Library Setup Guide

Written by Команда is*hosting | 17 сент. 2026 г., 04:00:00

На бесплатных тарифах Google Фото и iCloud незаметно сжимают оригиналы ваших снимков. А как только выделенное место заканчивается, вам приходится ежемесячно платить просто за возможность хранить собственные воспоминания.

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

В этом руководстве мы разберем установкe Immich на Premium-сервер от is*hosting под управлением CentOS Stream 9, с наглядными примерами вывода команд.

Что понадобится перед установкой

  • Docker Engine с плагином Compose v2 (а не устаревшая утилита docker-compose).
  • Минимум 6 ГБ оперативной памяти (рекомендуется 8 ГБ).
  • Минимум 2 ядра процессора (рекомендуется 4 ядра).
  • Локальный SSD-накопитель для базы данных Postgres (использовать сетевые диски нельзя).
  • Выделенный публичный IPv4-адрес, чтобы веб-версия и мобильное приложение могли подключаться к серверу через интернет.

Сценарий

ОЗУ

Процессор

Тариф is*hosting

Личная или семейная фототека с распознаванием лиц и умным поиском

8 ГБ

4 ядра

Premium VPS

Несколько аккаунтов, большие архивы, ресурсоемкие фоновые ИИ-задачи

16 ГБ

6 ядер

Elite VPS

На всех тарифах is*hosting выделенный IPv4 предоставляется по умолчанию. Это решает вопрос с доступом к Immich из интернета без дополнительных настроек. Кроме того, в стоимость включены еженедельные резервные копии (бэкапы) сервера.

Важный нюанс: в тариф Premium ($31.99/мес) включен SSD на 50 ГБ. После установки ОС свободными останутся около 41 ГБ. Этого хватит для тестов или небольшой галереи, но для полноценного семейного архива стоит сразу добавить дополнительный SSD или NVMe-диск. Объем можно увеличить на 25–300 ГБ без переустановки сервера.

VPS

Root-доступ по SSH, выделенный IPv4 и еженедельные бэкапы на всех тарифах. SSD или NVMe можно расширить по мере роста фототеки.

Выбрать VPS

При заказе выбирайте CentOS 9 x64. Не пугайтесь, если команда cat /etc/os-release выдаст PRETTY_NAME="CentOS Stream 9". Классический CentOS Linux 9 больше не выпускается, и теперь основой для RHEL служит именно ветка Stream. Технически это ровно та система, которая нам нужна.

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

Шаг 1. Установка Docker

На серверах is*hosting Docker не установлен по умолчанию. Поскольку все тарифы включают root-доступ по SSH, команда sudo нам нигде не потребуется.

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

Перед тем как продолжить, стоит проверить настройки сети. По умолчанию встроенный брандмауэр (firewalld) установлен, но отключен (это можно проверить командой systemctl status firewalld еще до установки Docker). В некоторых инструкциях говорится, что скрипт установки Docker сам отключает брандмауэр. В нашем случае отключать было нечего, но итог один: Docker сможет без проблем открывать нужные порты.

Шаг 2. Загрузка и настройка файлов Compose

Создаем рабочую папку и скачиваем конфигурации:

mkdir /root/immich-app && cd /root/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

В базовом файле .env указан стандартный пароль для базы данных и закомментирован часовой пояс. Поскольку в минимальной сборке CentOS 9 нет текстового редактора вроде nano (команда rpm -q nano покажет, что пакет не установлен), мы поменяем настройки прямо из консоли с помощью утилиты sed:

sed -i "s/DB_PASSWORD=postgres/DB_PASSWORD=$(openssl rand -hex 12)/" .env
sed -i "s/^# TZ=Etc\/UTC/TZ=Asia\/Kuala_Lumpur/" .env

(Прим.: замените Asia/Kuala_Lumpur на свой часовой пояс).

Шаг 3. Запуск контейнеров

docker compose up -d

На нашем тарифе Premium скачивание всех четырех образов (включая тяжелый контейнер с ИИ-моделями) и их запуск заняли ровно 1 минуту 5 секунд. После этого команда docker compose ps показала, что все работает исправно (статус healthy):

CONTAINER ID   IMAGE                                                            STATUS                    PORTS
be44ee25f6db   ghcr.io/immich-app/immich-server:v3                              Up 45 seconds (healthy)   0.0.0.0:2283->2283/tcp, [::]:2283->2283/tcp
14704462736a   ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0   Up 46 seconds (healthy)   5432/tcp
98d97c462d7d   ghcr.io/immich-app/immich-machine-learning:v3                    Up 46 seconds (healthy)
43a943403075   valkey/valkey:9                                                  Up 46 seconds (healthy)   6379/tcp

Сетевая безопасность

Immich работает исключительно внутри Docker и не устанавливает никаких служб напрямую в систему. Это значит, что доступ извне контролируется правилами iptables самого Docker, а не системным брандмауэром. Команда ss -tlnp подтверждает: наружу смотрит только один порт – 2283 (по IPv4 и IPv6). База данных Postgres (5432) и кэш Redis (6379) надежно спрятаны во внутренней сети контейнеров. Включать firewalld не нужно, если только вы не планируете запускать на сервере другие приложения вне Docker.

Как использовать Immich: настройка и первая загрузка фото

Откройте в браузере http://<IP-адрес-вашего-сервера>:2283. Вы увидите стартовый экран с кнопками: Getting Started (Начать) и Restore From Backup (Восстановить из резервной копии).

Жмите Getting Started – откроется форма регистрации администратора. Первый созданный аккаунт получает права админа, и именно через него впоследствии можно будет добавлять профили для семьи или друзей.

Далее запустится пошаговый мастер настройки. Вы сможете выбрать тему оформления, язык, а затем попадете на важные экраны приватности:

На экране Server Privacy по умолчанию активны две функции, отправляющие запросы на внешние серверы: загрузка карт (tiles.immich.cloud) и проверка обновлений (version.immich.cloud). Immich прекрасно работает и без них. Если полная изоляция данных для вас в приоритете, лучше отключить обе опции сразу.

Следующий шаг – User Privacy. Здесь предложат настроить трансляцию через Google Cast. По умолчанию она отключена, так как требует загрузки модулей от Google.

Мастер также предложит включить Storage Template – удобную систему автоматической сортировки файлов по папкам (по умолчанию выключена).

На экране Backups разработчики напомнят о золотом правиле бэкапов «3-2-1» (три копии данных: две на разных устройствах, одна – удаленно). Еженедельные автоматические бэкапы от is*hosting решают вопрос с удаленной копией, а как сделать локальный бэкап базы данных, мы расскажем ниже.

В финале вам дадут ссылки на скачивание мобильного приложения (из Google Play/App Store или через Obtainium для Android).

После настройки вы попадете в пустую галерею (Photos). В боковом меню удобно отображается свободное место на диске и текущая версия сервера.

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

  • Умный поиск. Введите слово «пляж» (или «beach»), и нейросеть мгновенно найдет нужные кадры, даже если вы их никак не подписывали.
  • Вкладка Explore (Обзор). Immich автоматически найдет и сгруппирует лица людей на фото – вам останется лишь добавить их имена.

Как обновлять Immich

Автоматические бэкапы от is*hosting отлично выручают при критических сбоях сервера. Однако при обычном обновлении откатывать всю систему целиком нерационально. Гораздо удобнее сделать быстрый бэкап только базы данных Postgres:

docker exec immich_postgres pg_dumpall -U postgres | gzip > /root/immich-backup-$(date +%F).sql.gz

После этого можно обновить приложение:

cd /root/immich-app
docker compose pull
docker compose up -d

Важно: в файле .env версия Immich жестко привязана к конкретному релизу (например, v3), а не к плавающему тегу (latest). Приложение не будет обновляться самостомтельно при каждом перезапуске. Чтобы получить новую версию, нужно вручную изменить номер в конфигурации и заново выполнить команду pull.

Итоги

Вся установка на тариф Premium (4 ядра, 8 ГБ ОЗУ, 50 ГБ SSD за $31.99/мес) заняла менее двух минут. В сеть открыт только один порт (2283). После установки операционной системы и самого приложения на диске занято 8.3 ГБ, то есть для хранения фото остается около 41 ГБ. Когда место начнет заканчиваться, можно просто расширить дисковое пространство. Мобильное приложение будет автоматически выгружать ваши снимки на сервер, сохраняя их в 100% оригинальном качестве без скрытых сжатий.

Ознакомиться с серверами можно в линейке тарифов is*hosting. Если это ваш первый Linux-сервер, рекомендуем почитать базовое руководство по настройке VPS.

Хранилище бэкапов

Еженедельные бэкапы VPS сохраняют весь диск. Backup Storage хранит отдельную копию фототеки вне сервера, чтобы восстановление не зависело от той же машины.

Подробнее