В процессе создания для себя автоматизированного семейного архива столкнулся с некоторыми ограничениями Immich, нашел обход штатными средствами, буду использовать в проекте. Возможно кому-то будет интересно и полезно для собственного использования (много писать не люблю поэтому доверил формулировку ИИшке, но суть понятна) :
Общая фотобиблиотека в Immich с распознаванием лиц у каждого пользователя
Зачем
Partner Sharing и общие альбомы не запускают распознавание лиц на чужих фото.
People / Faces привязаны к владельцу ассета.
Нужно: несколько пользователей видят одни и те же файлы, у каждого работает своё распознавание лиц, файлы на диске нельзя удалить через Immich.
Решение
-
Одна общая папка на диске (например
/mnt/HDD2TB/FOTO_External/SEMYAFOTOARHIV). -
В
docker-composeImmich смонтировать её read-only:- /mnt/HDD2TB/FOTO_External:/external/foto:ro -
Админ создаёт отдельную External Library для каждого пользователя.
-
У всех библиотек один и тот же import path (например
/external/foto/SEMYAFOTOARHIV). -
Имена библиотек могут совпадать — это не проблема.
Как новые файлы появляются у всех
Файл на диске ≠ сразу видно в Immich. У каждого пользователя свой library_id; ассеты создаются только после обработки его библиотеки.
| Способ | Когда срабатывает | Для всех library на один путь |
|---|---|---|
| Watch filesystem (эксперим.) | Почти сразу после появления файла | Да — watcher на каждую library |
| Периодическое сканирование (cron) | По расписанию (ночь / каждые N часов) | Да — «все библиотеки» |
| Ручной Scan | Когда нажал админ | Только выбранные / Scan all |
API POST /libraries/{id}/scan |
По вызову (например family-archive-sync) | Только указанный library_id |
Watch (проверено на Immich v3.1.0)
Administration → Управление внешними библиотеками:
- включить [ЭКСПЕРИМЕНТАЛЬНО] Слежение за библиотекой
- сохранить (перезапуск Immich обычно не нужен)
- периодическое сканирование лучше оставить как страховку
Условия:
- путь лучше локальный диск на хосте Immich (на чистом NFS/SMB Watch часто не работает — так в доке);
- при большом архиве поднять
fs.inotify.max_user_watches(иначеENOSPC); - функция экспериментальная — после крупных апдейтов Immich стоит перепроверить.
На v3.1.0 при локальном /mnt/HDD2TB/... подтверждено: новый файл в общей папке подхватывается без ручного Scan, в том числе у нескольких пользователей с library на один path.
Результат
| Что | Как |
|---|---|
| Фото видят все | Да, через свои External Library |
| Распознавание лиц | У каждого своё, на «своих» ассетах |
| Удаление файлов с диска | Невозможно (:ro) |
| Удалил в Immich | При следующем Scan / Watch фото вернётся |
| Новые файлы у всех | Watch и/или периодический scan |
Ограничения
- Thumbnails, faces и ML считаются отдельно для каждого пользователя → больше места и нагрузка (порядок: единицы–десятки ГБ на пользователя на ~100 ГБ архива, не удвоение оригиналов).
- Имена людей не синхронизируются между аккаунтами.
- Создавать External Library может только администратор.
- Watch — experimental; на сетевых дисках ненадёжен.
Итог
Штатная схема Immich: общая папка + External Library на пользователя + mount :ro + Watch (или частый cron).
Даёт общее хранилище, защиту файлов от удаления и полноценное распознавание лиц без Partner Sharing. На Immich v3.1.0 Watch для локального диска подтверждён на практике.