Immich — self-hosted фото-библиотека вместо Google Photos
Обновлено
Не удалось запустить аудио. Нажмите кнопку воспроизведения в плеере.
Immich — открытая система для хранения фотографий и видео на собственном сервере с веб-интерфейсом и мобильными приложениями. Она переносит на ваш сервер таймлайн, альбомы, распознавание лиц, поиск по содержимому и автоматическую загрузку снимков с телефона.
Проект распространяется под лицензией GNU AGPL v3 и обычно разворачивается через Docker Compose на сервере, мини-ПК или NAS. Установка сравнительно компактна, но первичная обработка большой библиотеки — создание превью, распознавание лиц и построение поискового индекса — может занять много времени.
Если Immich будет работать на Synology, сначала проверьте базовую настройку Synology DSM с нуля — хранилище, пользователей, общие папки, безопасность и резервное копирование.
Материал проверен по официальной документации и релизам Immich 8 сентября 2026 года.
На дату проверки стабильным релизом считался v3.1.0. Для v3.2.0 в официальном списке были релиз-кандидаты; последний показанный — v3.2.0-rc.3, стабильным он не является.
Проверка ниже основана на документации и релизах; запуск Immich и восстановление базы в рамках этой проверки не выполнялись.
Оглавление
- Что такое Immich — архитектура и отличие от облачной фототеки.
- Основные возможности — мобильный бэкап, поиск, лица и внешние библиотеки.
- Требования к серверу — память, процессор, файловая система и Docker.
- Установка через Docker Compose — файлы, переменные и запуск.
- Настройка после установки — структура хранения, поиск и ускорение.
- Полезные сценарии — телефон, существующий архив и семейный доступ.
- Бэкапы и восстановление — что копировать и в каком порядке.
- Проверка результата — признаки исправной установки.
- Антипаттерны — решения, которые повышают риск потери данных.
Что такое Immich
В типовой установке Immich использует отдельные сервисы для сервера и машинного обучения, а Postgres — как базу метаданных и контекстного поиска. Векторную часть поиска обслуживает расширение VectorChord.
| Задача | Google Photos | Immich |
| Хранение оригиналов | Объём зависит от условий облачного сервиса | Файлы находятся на вашем диске |
| Стоимость | Подписка за объём | Железо, диски и электричество |
| Распознавание лиц | Обрабатывается сервисом Google | Выполняется локальным ML-контейнером |
| Поиск по содержимому | Встроенный поиск | Выбираемая CLIP-модель, включая многоязычные варианты |
| Приватность | Данные хранятся у провайдера | Файлы и индексы остаются на вашем сервере |
| Эксплуатация | Инфраструктурой управляет Google | Обновления, диски и бэкапы обслуживает владелец |
Основные возможности
| Возможность | Практический результат |
| Мобильный автобэкап | Приложение загружает выбранные альбомы с телефона |
| Таймлайн и альбомы | Хронологическая лента, избранное, архив и общие альбомы |
| Распознавание лиц | Группировка снимков по людям и поиск по нескольким лицам |
| Контекстный поиск | Свободные запросы по содержимому фото и видео |
Распознавание текста (OCR) | Поиск текста на скриншотах, документах и вывесках |
| Карта | Поиск по городам, регионам и странам из обратного геокодирования |
| Несколько пользователей | Изолированные библиотеки и партнёрский доступ |
| Внешние библиотеки | Индексация существующих папок без переноса оригиналов |
Как устроен поиск
Immich использует Postgres для поиска по метаданным и контекстного поиска CLIP. Контекстный поиск работает через расширение VectorChord и позволяет формулировать запросы без точных ключевых слов в метаданных файла.
Фильтры охватывают людей, альбомы, имя и расширение файла, исходный путь, описание, распознанный текст, локацию, теги, камеру, объектив, период, тип медиа, архив, избранное и рейтинг.
Модель выбирается в Administration → Settings → Machine Learning Settings → Smart Search. Более крупная модель обычно требует больше памяти и времени, поэтому показатели из документации следует использовать для сравнения, а не как гарантию производительности на конкретном сервере.
| Сценарий | Подходящий вариант |
| Запросы только на английском | ViT-B-16-SigLIP2__webli: около 3038 МиБ памяти, 5,81 мс и 84,86% полноты поиска (recall) в официальном тесте |
| Приоритет скорости | ViT-B-32-SigLIP2-256__webli: около 3061 МиБ, 3,31 мс и 82,28% полноты поиска |
| Запросы преимущественно на русском | Модели nllb; запрос должен быть на языке, указанном в настройках пользователя |
| Смешанные языки одного пользователя | Модели xlm и siglip2, которые понимают текст независимо от выбранного языка интерфейса |
All рядом со Smart Search. Это заново обработает библиотеку новой моделью. Если в базе остались несовместимые данные прежней модели и в логах появились ошибки, официальная документация советует временно вернуть старую модель, сохранить настройку и повторить смену.Требования к серверу
| Параметр | Минимум | Рекомендация |
| ОС | 64-битная Unix-подобная система | Linux или другая поддерживаемая Unix-подобная ОС; для виртуализации — полноценная VM |
| RAM | 6 ГБ; 4 ГБ только при отключённом машинном обучении | 8 ГБ |
| CPU | 2 ядра | 4 ядра |
| Архитектура | amd64 или arm64 | Для контейнера машинного обучения (ML) v3 на amd64 требуется x86-64-v2 или новее |
| Файловая система | С поддержкой Unix-прав и владельцев | EXT4, ZFS, APFS, BTRFS или XFS; локальный SSD для Postgres |
| Docker | Docker и плагин Compose | Команда docker compose; старый docker-compose не поддерживается |
Превью и перекодированные видео в среднем добавляют 10–20% к размеру библиотеки. Файлы Postgres обычно занимают 1–3 ГБ. При использовании ограничений ресурсов базе нужно выделить не менее 2 ГБ RAM.
DB_DATA_LOCATION нельзя размещать на сетевой шаре. В Windows база должна находиться на файловой системе с поддержкой Unix-прав и владельцев: NTFS и exFAT для этого не подходят. В WSL не используйте каталог хоста, смонтированный через /mnt. Если это невозможно, примените именованный том Docker.Начиная с v3 контейнер машинного обучения на amd64 требует x86-64-v2. Последняя версия с поддержкой x86-64-v1 — v2.7.5; этот релиз больше не поддерживается, и сервер должен использовать соответствующую версию Immich. Docker внутри LXC-контейнера официальный проект не рекомендует; при виртуализации предпочтительна полноценная VM.
Установка через Docker Compose
Docker Compose остаётся рекомендуемым способом производственного развёртывания Immich.
1. Скачайте файлы релиза
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.env2. Настройте .env
| Переменная | Значение в примере | Что изменить |
UPLOAD_LOCATION | ./library | Укажите каталог данных медиатеки с достаточным запасом места |
DB_DATA_LOCATION | ./postgres | Разместите на локальном совместимом хранилище, не на сетевой шаре |
TZ | Закомментирована | Раскомментируйте и укажите часовой пояс |
IMMICH_VERSION | v3 | Для контролируемых обновлений закрепите конкретный стабильный релиз |
DB_PASSWORD | postgres | Замените случайным паролем из символов A-Za-z0-9 |
DB_USERNAME, DB_DATABASE_NAME | postgres, immich | Обычно менять не требуется |
Для Windows и WSL можно заменить DB_DATA_LOCATION=./postgres на DB_DATA_LOCATION=pgdata и добавить том в конец docker-compose.yml:
volumes:
model-cache:
pgdata: # именованный том для базы3. Запустите контейнеры
docker compose up -dВеб-интерфейс стандартной установки обычно доступен на порту 2283. Первый зарегистрированный пользователь получает права администратора.
unknown shorthand flag: 'd' in -d и open: permission denied часто указывают на неподходящую установку Docker. Ошибка про поле name возникает со старым docker-compose. Для healthcheck.start_interval нужен Docker Engine 25 или новее; официальный обходной путь — закомментировать start_interval в секции базы.Настройка после установки
Структура хранения
Шаблон хранения (Storage template) задаёт расположение оригиналов на диске. При его включении файлы могут оказаться в UPLOAD_LOCATION/library, поэтому ожидаемую структуру лучше выбрать до массового импорта. Перенос уже существующей большой библиотеки выполняется отдельной задачей и может занять много времени.
Аппаратное ускорение
Транскодирование видео можно вынести на поддерживаемый графический ускоритель. Конфигурация зависит от оборудования и версии Immich: перед изменением docker-compose.yml сверяйтесь с актуальным разделом аппаратного транскодирования. Машинное обучение настраивается отдельно.
Полезные сценарии
Автоматическая загрузка снимков с телефона
Задача: сохранить новые фотографии телефона на собственном сервере.
- Установите мобильное приложение Immich.
- Укажите адрес сервера и войдите в свою учётную запись.
- Включите резервную загрузку и выберите альбомы устройства.
- Для первой большой загрузки оставьте телефон на зарядке и в Wi-Fi.
- Проверьте, что счётчик оставшихся файлов дошёл до нуля, а снимки появились в таймлайне.
Ограничение: синхронизация с Immich не заменяет независимый бэкап. Не удаляйте облачную или локальную копию до проверенного восстановления.
Индексация существующего архива
Задача: показать в Immich фотографии, которые уже разложены по папкам на NAS.
Подключите каталог к контейнеру и создайте внешнюю библиотеку в Administration → External Libraries. Путь библиотеки должен соответствовать пути внутри контейнера. Если исходный архив не должен изменяться, используйте режим только для чтения на уровне монтирования, например :ro. Шаблоны исключений и параметры пересканирования зависят от версии, поэтому перед рабочим запуском сверяйтесь с актуальной документацией.
Наблюдаемый результат: после сканирования файлы отображаются в библиотеке, а оригиналы остаются в исходных папках. Перед подключением большой коллекции проверьте сценарий на небольшой тестовой папке.
Семейная библиотека
Задача: разделить личные архивы и совместно просматривать выбранные фотографии.
Создайте отдельные учётные записи. Для событий используйте общие альбомы, а для постоянного обмена библиотекой — партнёрский доступ. Проверьте результат из второй учётной записи: пользователь должен видеть только явно доступные ему материалы.
Контролируемое обновление
Закрепите стабильный релиз в IMMICH_VERSION, прочитайте примечания к выпуску (release notes), создайте свежий дамп базы и копию файлов. Затем обновите контейнеры. Не устанавливайте релиз-кандидат на основной фотоархив без осознанной готовности к ошибкам и возможным ломающим изменениям.
Бэкапы и восстановление
Immich автоматически создаёт дампы базы для аварийного восстановления. Они хранятся в UPLOAD_LOCATION/backups; по умолчанию дамп создаётся ежедневно в 2:00, а система сохраняет последние 14 копий. Расписание и глубина хранения настраиваются в Administration → Settings → Backup.
Разовый дамп запускается через Administration → Job Queues → Create job → Create Database Dump.
UPLOAD_LOCATION.Что копировать
Официальная документация рекомендует сохранять весь UPLOAD_LOCATION. Для оригиналов критичны:
UPLOAD_LOCATION/upload— загруженные оригиналы;UPLOAD_LOCATION/library— оригиналы при включённом шаблоне хранения;UPLOAD_LOCATION/profile— аватары пользователей.
Папка UPLOAD_LOCATION/backups содержит автоматические дампы базы и должна копироваться вместе с файлами либо в другой независимый контур резервного копирования.
Каталоги thumbs и encoded-video содержат производные файлы. Их можно пересоздать задачами после восстановления, но на большой библиотеке это потребует времени и ресурсов.
Безопасный порядок копирования
Лучший вариант — остановить immich-server на время резервного копирования. Если остановка невозможна, сначала сохраните базу, затем файловую систему. В этом случае возможны лишние файлы, которые база ещё не знает. Обратный порядок опаснее: восстановленная база может ссылаться на отсутствующие файлы.
Простое копирование работающего DB_DATA_LOCATION не заменяет дамп базы и согласованную копию файлов.
Восстановление через интерфейс
На существующей установке откройте Administration → Maintenance → Restore database backup. Можно выбрать дамп из списка или загрузить .sql.gz. Перед заменой базы Immich создаёт точку восстановления, запускает миграции при необходимости и выполняет проверку состояния. При неудаче система пытается вернуться к созданной точке.
На новой установке сначала перенесите прежние каталоги backups, encoded-video, library, profile, thumbs и upload в новый UPLOAD_LOCATION. Затем запустите сервисы и нажмите Restore from backup на приветственном экране.
Дамп желательно восстанавливать в совместимую версию Immich. Процедура резервного копирования и восстановления изменилась в v2.5.0; для более старых дампов используйте документацию соответствующей версии.
Ручное восстановление через командную строку рассчитано на чистую базу, в которую сервер ещё не успел записать схему. Если сервисы трудно запустить без преждевременных миграций, временно задайте DB_SKIP_MIGRATIONS=true, а после восстановления уберите переменную и перезапустите сервисы.
Проверка результата
| Что проверить | Наблюдаемый результат |
| Контейнеры | docker compose ps показывает сервисы в состоянии running или healthy |
| Очереди обработки | Задачи миниатюр, метаданных и Smart Search завершились без повторяющихся ошибок |
| Машинное обучение | Лица группируются, а тестовый свободный запрос возвращает подходящие кадры |
| Мобильная загрузка | Счётчик несинхронизированных файлов равен нулю, новый снимок появляется в таймлайне |
| Резервная копия | Дамп базы и соответствующие файлы успешно разворачиваются на отдельной тестовой установке |
Антипаттерны
| Антипаттерн | Риск | Безопасный вариант |
| Удалить другие копии сразу после импорта | Immich становится единственной точкой отказа | Сохранить независимые копии и проверить восстановление |
| Postgres на сетевой шаре | Нестабильная работа и риск повреждения базы | Локальная совместимая файловая система или том Docker |
| Автоматически ставить любой новый релиз | Ломающие изменения приезжают без проверки | Закрепить стабильную версию и читать примечания к выпуску |
| Открыть порт сервера напрямую в интернет | Личный архив становится доступной извне целью | VPN или корректно настроенный обратный прокси с HTTPS |
| Оставить пароль базы из примера | Используется общеизвестное значение | Случайный пароль из допустимых символов |
| Выбрать тяжёлую модель без оценки ресурсов | Очереди выполняются медленно, возможна нехватка памяти | Сравнить память, скорость и качество моделей в документации |
Чеклист
Подготовка
Установка
UPLOAD_LOCATION, DB_DATA_LOCATION и TZ.DB_PASSWORD.IMMICH_VERSION закреплён выбранный стабильный релиз.Настройка
Эксплуатация
Полезные ссылки
- Документация Immich — установка, настройка и администрирование.
- Требования — RAM, CPU, архитектура и файловые системы.
- Установка через Docker Compose — актуальные файлы и команды запуска.
- Поиск — фильтры, модели и повторная индексация.
- Бэкап и восстановление — дампы, каталоги и процедура восстановления.
- Внешние библиотеки — подключение существующих каталогов.
- Аппаратное транскодирование — настройки ускорения видео.
- Релизы Immich — стабильные версии, релиз-кандидаты и изменения.
- Исходный код — официальный репозиторий и лицензия GNU AGPL v3.
Следующий шаг
Домашнее облако на Synology: Immich и резервная копия 3-2-1
Связанные материалы
- Статья: Как я разобрал Яндекс.Диск через Codex и официальный доступ Яндекса
- Блог: «Пиратская бухта» для ИИ-моделей: скачал и запустил у себя
- База знаний: Synology DSM — NAS как домашний сервер
Собственный фотоархив требует контроля над дисками, обновлениями и восстановлением. Обсуждение особенно полезно перед переносом большой семейной библиотеки или развёртыванием Immich на NAS.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov