На бесплатных тарифах Google Фото и iCloud незаметно сжимают оригиналы ваших снимков. А как только выделенное место заканчивается, вам приходится ежемесячно платить просто за возможность хранить собственные воспоминания.
Immich предлагает такое же умное распознавание лиц и ИИ-поиск. Разница в том, что размер хранилища ограничен только объемом подключенного диска, а оригиналы фотографий остаются в исходном качестве – никто не меняет ваши файлы за вашей спиной.
В этом руководстве мы разберем установкe Immich на Premium-сервер от is*hosting под управлением CentOS Stream 9, с наглядными примерами вывода команд.
|
Сценарий |
ОЗУ |
Процессор |
Тариф is*hosting |
|
Личная или семейная фототека с распознаванием лиц и умным поиском |
8 ГБ |
4 ядра |
Premium VPS |
|
Несколько аккаунтов, большие архивы, ресурсоемкие фоновые ИИ-задачи |
16 ГБ |
6 ядер |
Elite VPS |
На всех тарифах is*hosting выделенный IPv4 предоставляется по умолчанию. Это решает вопрос с доступом к Immich из интернета без дополнительных настроек. Кроме того, в стоимость включены еженедельные резервные копии (бэкапы) сервера.
Важный нюанс: в тариф Premium ($31.99/мес) включен SSD на 50 ГБ. После установки ОС свободными останутся около 41 ГБ. Этого хватит для тестов или небольшой галереи, но для полноценного семейного архива стоит сразу добавить дополнительный SSD или NVMe-диск. Объем можно увеличить на 25–300 ГБ без переустановки сервера.
Root-доступ по SSH, выделенный IPv4 и еженедельные бэкапы на всех тарифах. SSD или NVMe можно расширить по мере роста фототеки.
При заказе выбирайте CentOS 9 x64. Не пугайтесь, если команда cat /etc/os-release выдаст PRETTY_NAME="CentOS Stream 9". Классический CentOS Linux 9 больше не выпускается, и теперь основой для RHEL служит именно ветка Stream. Технически это ровно та система, которая нам нужна.
На серверах is*hosting Docker не установлен по умолчанию. Поскольку все тарифы включают root-доступ по SSH, команда sudo нам нигде не потребуется.
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
Перед тем как продолжить, стоит проверить настройки сети. По умолчанию встроенный брандмауэр (firewalld) установлен, но отключен (это можно проверить командой systemctl status firewalld еще до установки Docker). В некоторых инструкциях говорится, что скрипт установки Docker сам отключает брандмауэр. В нашем случае отключать было нечего, но итог один: Docker сможет без проблем открывать нужные порты.
Создаем рабочую папку и скачиваем конфигурации:
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 на свой часовой пояс).
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.
Откройте в браузере 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). В боковом меню удобно отображается свободное место на диске и текущая версия сервера.
Обязательно попробуйте две функции после загрузки первых фото:
Автоматические бэкапы от 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 хранит отдельную копию фототеки вне сервера, чтобы восстановление не зависело от той же машины.