Технологии #Immich #Домашний сервер #Docker #Proxmox #Фото

Immich: своё хранилище фотографий вместо Google Фото

Immich — самостоятельная замена Google Фото на своём сервере: автозагрузка с телефона, распознавание лиц, поиск по содержимому. Требования к железу, установка в Docker и в контейнере Proxmox, перенос библиотеки из Google Takeout, бэкапы и обновление без потери данных.

10 минут 2

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

Ниже — что Immich умеет, какое железо ему нужно, два способа установки, перенос библиотеки из Google Takeout вместе с альбомами и датами, и главное: как всё это не потерять. Конструктор ниже соберёт команды под ваши пути.

Конструктор команд: Immich

Выберите задачу и подставьте свои пути — получите команды для установки, переезда из Google Фото, бэкапа и обновления.

Команды выполняются по порядку сверху вниз

Что это такое

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

Из того, что реально используется каждый день:

  • Автозагрузка с телефонов. Фоновая, с выбором альбомов, по Wi-Fi или по мобильной сети. Освобождать место на телефоне можно прямо из приложения.
  • Лица. Сервер сам находит людей и группирует снимки; имена вы проставляете один раз.
  • Умный поиск. Ищет по содержимому, а не по подписям: «кот на подоконнике», «горы в снегу». Работает на своей модели, без облаков.
  • Карта и хронология. Точки съёмки на карте, лента по годам, «воспоминания» вроде «этот день пять лет назад».
  • Общий доступ. Альбомы по ссылке, совместные альбомы с семьёй, отдельные учётные записи домашним.
  • Распознавание текста на снимках — чеки, вывески, скриншоты находятся по словам с картинки.
  • Редактор прямо в приложении, без порчи оригинала.

Клиенты есть для iOS, Android и в браузере. Оригиналы лежат обычными файлами: даже если Immich однажды надоест, фотографии остаются доступны и без него.

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

Какое железо нужно

ПараметрМинимумКомфортно
Оперативная память6 ГБ8 ГБ и больше
Процессор2 ядра4 ядра
Диск под базулокальный SSDлокальный SSD
Диск под фотографиилюбойHDD большого объёма

Про память: если отключить машинное обучение, Immich уместится и в 4 ГБ, но тогда не будет ни лиц, ни умного поиска — а это половина смысла.

Три вещи, на которых спотыкаются чаще всего:

База данных только на локальном диске. PostgreSQL нельзя держать на сетевой шаре, на NTFS или в смонтированной папке Windows — это прямой путь к повреждению базы. Сами фотографии на сетевом хранилище лежать могут, база — нет.

Процессор не старше 2012 года. Третья ветка Immich требует набор инструкций x86-64-v2. Для совсем старых машин последней рабочей версией остаётся 2.7.5, но она больше не развивается.

Файловая система должна понимать права Unix. EXT4, XFS, ZFS, APFS — подойдут. FAT32 и exFAT — нет.

Мини-ПК вроде того, что я использую под домашний сервер, тянет библиотеку на десятки тысяч снимков без напряжения. Отдельная видеокарта не нужна: для ускорения хватает встроенного видеоядра Intel.

Два способа установки

Docker Compose — официальный и основной путь. Работает на любом Linux, обновляется двумя командами, все инструкции в интернете написаны про него. Минус один: если сервер уже занят под другое, Docker добавляет свой слой.

Отдельный контейнер LXC на Proxmox — вариант для тех, у кого уже есть гипервизор. Immich ставится напрямую в систему, без Docker, готовым сценарием от сообщества. Плюсы: меньше накладных расходов, снимки контейнера и бэкапы делает сам Proxmox. Минусы: первая установка собирает библиотеки из исходников и занимает от получаса до пары часов, а обновления иногда требуют ручного вмешательства.

Сами команды для обоих путей — в конструкторе выше. Что важно решить до установки:

  • Где будут лежать фотографии. Это отдельная папка (UPLOAD_LOCATION), и лучше сразу отвести под неё большой диск или точку монтирования. Переезжать потом можно, но муторно.
  • Где будет база. Всегда локальный SSD.
  • Как будете заходить. Порт 2283 наружу выставлять нельзя. Подробнее ниже.

После первого запуска интерфейс открывается на http://адрес-сервера:2283, и там создаётся администратор. Первым делом стоит зайти в настройки и включить шаблон хранения — тогда файлы лягут на диск по понятной схеме с датами, а не одной кучей.

Переезд из Google Фото

Забрать библиотеку из Google можно через Google Takeout: выбираете «Google Фото», формат ZIP по 50 ГБ, и через несколько часов получаете ссылки на архивы.

Главная ловушка: не заливайте распакованные фотографии обычной загрузкой через браузер. Google хранит даты съёмки, геометки и альбомы не в самих файлах, а в отдельных JSON рядом. При простой загрузке вся библиотека получит сегодняшнюю дату, а альбомы исчезнут.

Правильный инструмент — immich-go. Он читает архивы Takeout как есть, восстанавливает даты, геометки, альбомы и даже имена людей, которые вы проставляли в Google. Команды — в конструкторе, в задаче «Переехать из Google Фото». Порядок такой:

  1. Скачать архивы Takeout на компьютер, который подключён к сети проводом.
  2. Создать ключ API в профиле Immich.
  3. Прогнать --dry-run, чтобы увидеть, что будет сделано.
  4. Запустить загрузку и оставить её на ночь.
  5. Потом запустить в интерфейсе задания «Распознавание лиц» и «Умный поиск», чтобы сервер обработал всю библиотеку.

На нескольких десятках тысяч снимков обработка займёт часы и хорошо нагрузит процессор — это нормально и делается один раз.

Ускорение: видеоядро вместо процессора

Две задачи в Immich едят процессор: перекодирование видео и машинное обучение.

Перекодирование. Поддерживаются Quick Sync (Intel), NVENC (NVIDIA), VAAPI (AMD и Intel), RKMPP (Rockchip). Включается подключением файла hwaccel.transcoding.yml к вашему compose и галочкой в настройках администратора. На встроенном видеоядре Intel перекодирование идёт в разы быстрее и почти не греет машину.

Машинное обучение. Тут выбор шире: OpenVINO для встроенной графики Intel, CUDA для NVIDIA, ROCm для AMD, RKNN для Rockchip. По надёжности лучше всего ведёт себя CUDA, но и OpenVINO на современном встроенном видеоядре заметно ускоряет распознавание. Учтите, что OpenVINO ест больше оперативной памяти, чем обработка на процессоре.

Если сервер у вас не круглосуточно занят чем-то ещё, можно вообще не трогать: Immich спокойно работает и на процессоре, просто первичная обработка библиотеки затянется.

Бэкапы: что спасать, а что нет

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

Что где лежит в Immich и что из этого нужно бэкапить

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

  • База данных — в ней пути к файлам, альбомы, лица, метки. Без неё фотографии останутся набором файлов без структуры.
  • upload — оригиналы, загруженные из браузера, с телефонов и через консоль.
  • library — оригиналы, разложенные по шаблону хранения.
  • profile — аватары пользователей.

Можно не бэкапить: thumbs (миниатюры) и encoded-video (перекодированные видео). Они занимают много места и пересоздаются из оригиналов.

Immich умеет делать дампы базы сам: по умолчанию каждую ночь в два часа, хранит 14 последних, складывает их в папку backups внутри библиотеки. Это удобно, но это не бэкап: дампы лежат на том же диске. Настоящая копия — та, что уехала на другой носитель.

Разумный минимум для дома: раз в сутки rsync папок и дампа базы на второй диск, а раз в неделю — на внешний, который лежит отдельно. Команды есть в конструкторе.

И проверьте восстановление хотя бы раз. Бэкап, который ни разу не разворачивали, — это надежда, а не бэкап.

Обновление: где реально больно

Immich развивается быстро, и обновляться приходится регулярно. Правила, которые экономят нервы:

Откат не поддерживается. Вообще, даже внутри одной минорной версии. Единственный способ вернуться — восстановить базу из дампа или откатить снимок виртуальной машины. Поэтому дамп перед обновлением обязателен.

Приложения на телефонах обновляйте первыми. Приложение работает с текущей и предыдущей мажорной версией сервера, а сервер — только со своей. Если обновить сервер раньше, телефоны временно отвалятся.

Мажорные версии читайте. В третьей ветке, например, выкинули поддержку старого векторного расширения pgvecto.rs: если база ещё на нём, сначала нужен переход на VectorChord, и только потом обновление. Проверяется одной командой: \dx в базе должен показывать vchord.

Что бывает при обрыве обновления. Здесь говорю по собственному опыту, обновляя контейнер с версии 2.7.5 на 3.2.2. Сценарий останавливает службы и включает режим обслуживания, а если обрывается на середине — так в нём и остаётся. Внешне это выглядит как «сервер не запускается»: служба падает с ошибкой, в логе непонятное. Лечится командой immich-admin disable-maintenance-mode, после чего всё поднимается.

Вторая ловушка того же случая: при сборке из исходников часть файлов тянется со сторонних серверов, и если один из них не отвечает, обновление падает в произвольном месте. Тогда недостающий файл проще положить руками и запустить сценарий заново — он пропустит уже сделанные шаги.

Третья: после прерванного обновления в приложении могли остаться пути от докер-образа (/build/...), которых в обычной установке нет. Сервер тогда падает с ошибкой вида ENOENT: no such file or directory, open '/build/geodata/...'. Это тоже чинится, но только если знать, где смотреть — в логах, а не в интерфейсе.

Вывод из всего этого простой: снимок или дамп перед обновлением — не перестраховка, а часть процедуры.

Доступ снаружи

Соблазн пробросить порт 2283 на роутере большой, но делать так не надо: сканеры находят открытые сервисы за часы, а внутри — вся ваша семейная библиотека.

Два нормальных варианта:

  • VPN до домашней сети. Самый простой и безопасный: в роутерах вроде Keenetic поднимается за пять минут, телефон подключается автоматически. Immich при этом остаётся полностью внутренним.
  • Обратный прокси с HTTPS — если хотите делиться альбомами с теми, у кого VPN нет. Нужен свой домен и сертификат, а на стороне Immich имеет смысл ограничить публичный доступ только ссылками на альбомы.

Для публикации отдельных альбомов существует и специальное решение — небольшой прокси, который наружу отдаёт только то, чем вы поделились, не открывая сам сервер.

Частые вопросы

Immich бесплатный?

Да, сервер полностью бесплатен и открыт. Есть добровольная лицензия поддержки проекта, она ничего не отключает.

Сколько места займёт библиотека?

Примерно столько же, сколько занимают оригиналы, плюс 10–20% на миниатюры и перекодированные видео. Immich не сжимает исходники.

Можно ли хранить фотографии на сетевом хранилище?

Библиотеку — можно, базу данных — нельзя, только локальный диск. Это официальное требование, и нарушение приводит к повреждению базы.

Что будет, если сервер сгорит?

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

Работает ли автозагрузка на iPhone в фоне?

Работает, но iOS агрессивно усыпляет фоновые задачи. Надёжнее время от времени открывать приложение, тогда оно догружает накопившееся.

Чем Immich отличается от Nextcloud?

Nextcloud — это про файлы вообще, фотографии там второстепенны. Immich сделан именно под снимки: лента, лица, поиск по содержанию, мобильная автозагрузка. Многие держат оба и не мешают им пересекаться.

Что дальше

Immich — хороший повод завести домашний сервер, если его ещё нет. Начать можно с установки Ubuntu Server, а чтобы заранее развести систему и данные по разным дискам, загляните в ручную разметку диска. Когда фотографии поедут на сервер, рядом обычно появляется и общая папка для остальных файлов — про неё есть отдельный разбор: настройка Samba.

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.