pimenov.ai

База знаний

Домашнее облако на Synology: Immich и резервная копия 3-2-1

Пошаговый сценарий домашнего облака на Synology: Immich через Container Manager, удалённый доступ и резервные копии по правилу 3-2-1.

Опубликовано Обновлено

Практический сценарий домашнего облака: Synology хранит файлы, Immich — фотогалерею, а резервирование строится по правилу 3-2-1. Установка выполняется через DSM и Container Manager; конкретные названия пунктов могут зависеть от версии DSM.

📌
Дата проверки: 8 сентября 2026. Требования, установка, резервное копирование и восстановление сверены с документацией Immich. Страница Immich для Synology опубликована как материал сообщества и не поддерживается командой Immich официально. Перед установкой или обновлением проверяйте release notes выбранной версии.

Целевая схема

flowchart LR
    P[Телефоны и ноутбуки] --> N[Synology NAS]
    N --> I[Immich: фотобиблиотека]
    N --> D[Общие папки: документы и архив]
    I --> U[Копия на внешнем диске]
    D --> U
    I --> S[Копия в S3-хранилище]
    D --> S

Контур состоит из трёх уровней:

  • Рабочие данные. Оригиналы фотографий и файлов на NAS.
  • Локальная копия. Внешний USB-диск для быстрого восстановления.
  • Внешняя копия. S3-совместимое хранилище вне дома.

RAID или зеркало дисков повышает доступность тома при отказе диска, но не заменяет резервирование. Снапшот на том же томе также не является независимой копией.

Когда сценарий подходит

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

От сценария лучше отказаться, если нужен нулевой уровень обслуживания, дома нестабильное питание без источника бесперебойного питания или бюджета хватает только на NAS без дополнительных копий.

Что нужно до старта

  • Платформа. Immich работает на amd64 и arm64. Начиная с версии 3 контейнер машинного обучения на amd64 требует микроархитектуру не ниже x86-64-v2. Большинство процессоров примерно с 2012 года её поддерживают.
  • Ресурсы. Минимум — 6 ГБ RAM и 2 ядра CPU, рекомендуемый уровень — 8 ГБ и 4 ядра. На системе с 4 ГБ Immich можно запускать с отключённым машинным обучением. При ограничениях Docker PostgreSQL требуется не меньше 2 ГБ RAM.
  • Файловая система и база. Immich рекомендует Unix-совместимую файловую систему с поддержкой владельцев и прав доступа. DB_DATA_LOCATION размещайте на локальном SSD и не используйте для него сетевую папку.
  • DSM и пакеты. Нужны Container Manager и инструмент резервного копирования, например Hyper Backup. Если нужны снапшоты, отдельно проверьте поддержку Btrfs и Snapshot Replication вашей моделью NAS.
  • Питание и сеть. Используйте источник бесперебойного питания с корректным завершением работы NAS и постоянный локальный адрес устройства.
  • Резервные носители. Нужны внешний диск подходящего объёма и бакет в S3-совместимом хранилище, если вы выбираете внешнюю копию.

Шаг 1. Подготовьте том и общие папки

  1. Создайте пул и том на файловой системе, которую поддерживает ваша модель NAS. Btrfs нужна для сценариев со снапшотами, но не является требованием Immich.
  2. Создайте общие папки docker, photo и docs.
  3. Заведите отдельную служебную учётную запись с доступом только к нужным папкам.
  4. Включите регулярную проверку данных и уведомления о состоянии дисков.
  5. Настройте письма об ошибках задач резервного копирования.

Шаг 2. Установите Immich через Container Manager

  1. Создайте docker/immich-app, а внутри — каталоги postgres и library.
  2. Скачайте из выбранного релиза Immich файлы docker-compose.yml и example.env.
  3. Поместите их в docker/immich-app, переименуйте example.env в .env и заполните переменные по документации выбранного релиза.
  4. В Container Manager → Проект → Создать укажите имя проекта и путь к каталогу. Подтвердите использование найденного docker-compose.yml.
  5. Если данные лежат на жёстких дисках, раскомментируйте предусмотренный в Compose параметр DB_STORAGE_TYPE: 'HDD'.
  6. Пропустите настройку портала Web Station и завершите сборку.
  7. После запуска найдите IP-адрес контейнера immich-server. В брандмауэре DSM добавьте правило для IP-адреса контейнера и отдельное правило для порта 2283.
  8. Откройте http://IP-адрес-NAS:2283 и завершите первоначальную настройку Immich.

Пример переменных. Замените /volume1 на имя тома DSM, если оно отличается:

# Каталог фотографий, видео и автоматических дампов
UPLOAD_LOCATION=/volume1/docker/immich-app/library

# Локальный каталог PostgreSQL
DB_DATA_LOCATION=/volume1/docker/immich-app/postgres

# Для контролируемого обновления замените release на конкретный тег версии
IMMICH_VERSION=release

# Сгенерируйте собственный пароль и сохраните его отдельно
DB_PASSWORD=CHANGE_ME_STRONG_PASSWORD

TZ=Europe/Moscow
⚠️
Внимание: не пробрасывайте порт 2283 через роутер в интернет. Для внешнего доступа используйте личную сеть или другой защищённый способ доступа.

Docker может менять подсеть после пересборки. Если вы фиксируете подсеть, добавьте в docker-compose.yml сеть и подключите к ней все четыре сервиса: immich-server, immich-machine-learning, redis и database.

networks:
  immich-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16
          gateway: 172.20.0.1

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

Шаг 3. Подключите телефоны и старый архив

Автозагрузка с телефона. Установите приложение Immich, войдите по адресу сервера и настройте загрузку фотографий. Загруженными файлами и их размещением внутри UPLOAD_LOCATION управляет Immich.

Внешняя библиотека. Существующий архив можно подключить как внешнюю библиотеку. Сохраните в Compose те же точки монтирования, которые использовались раньше. Если исходная структура должна оставаться неизменной, выдайте контейнеру права только на чтение и не редактируйте файлы вручную.

⚠️
Перед очисткой телефона убедитесь, что загрузка завершена и фотографии присутствуют в резервной копии. Сначала проверьте несколько файлов вручную, затем освобождайте место на устройстве.

Шаг 4. Организуйте доступ вне дома

Используйте личную сеть или VPN, при котором NAS и телефон получают внутренние адреса, а порты роутера остаются закрытыми. Если выбран обратный прокси, настройте шифрование соединения и многофакторную аутентификацию.

Порт 2283 не публикуйте напрямую в интернет. Перед поездкой проверьте доступ с телефона через мобильную сеть и убедитесь, что Immich открывается только ожидаемым способом.

Шаг 5. Соберите схему 3-2-1

КопияНосительИнструментПроверка
РабочаяДиски NASImmich и общие папкиФайлы и библиотека открываются
ЛокальнаяВнешний USB-дискHyper Backup или другой инструментЗадача завершилась без ошибок
ВнешняяS3-совместимое хранилищеИнструмент резервного копированияПроверка целостности и пробное восстановление

Immich рекомендует стратегию 3-2-1, но сам не выполняет файловое резервирование. Инструмент, расписание и проверку копий нужно настроить отдельно.

Шаг 6. Настройте копию на внешний диск

  1. Подключите USB-диск и убедитесь, что DSM его видит.
  2. В Hyper Backup или другом выбранном инструменте создайте задачу для внешнего устройства.
  3. Добавьте общие папки с документами и фотографиями, а также весь каталог UPLOAD_LOCATION.
  4. Настройте хранение версий и проверку целостности, если эти функции доступны в выбранном инструменте.
  5. Если включаете клиентское шифрование, сохраните пароль и файл ключа отдельно от NAS и проверьте их во время тестового восстановления.
🔴
Каталог DB_DATA_LOCATION не заменяет дамп базы. Immich хранит пути к файлам и метаданные в PostgreSQL и не восстанавливает библиотеку простым сканированием каталога. Автоматические дампы находятся в UPLOAD_LOCATION/backups и содержат метаданные, но не фотографии и видео. Дамп нужно хранить вместе с файлами.

Immich рекомендует копировать весь UPLOAD_LOCATION. Если копируются только отдельные данные, учитывайте режим Storage Template: исходные файлы могут находиться в upload или library, аватары — в profile, а сгенерированные миниатюры и перекодированные видео — в thumbs и encoded-video. Дампы находятся в backups.

По умолчанию Immich создаёт один дамп в день в 2:00 и хранит последние 14 копий. Расписание и глубина хранения меняются в Administration → Settings → Backup.

📌
Порядок имеет значение. Лучший вариант — остановить контейнер immich-server на время копирования. Если это невозможно, сначала создайте и сохраните дамп базы, затем копируйте файлы. Так база не будет ссылаться на фотографии, которых нет в копии.

Шаг 7. Настройте внешнюю копию в S3

  1. Создайте отдельный бакет и ключи доступа, ограниченные этим бакетом.
  2. Создайте в выбранном инструменте задачу с назначением S3-совместимого хранилища.
  3. Укажите адрес точки доступа, бакет, ключ и секрет. Оставьте шифрование канала включённым, если инструмент его поддерживает.
  4. При необходимости включите клиентское шифрование и сохраните ключ восстановления отдельно от NAS.
  5. Запустите первую полную выгрузку при свободном канале.
  6. До выбора провайдера проверьте стоимость хранения, операций и обратного трафика.

Блокировку объектов и другие режимы неизменяемого хранения сначала проверяйте на отдельном тестовом бакете. Убедитесь, что они совместимы с удалением старых версий, иначе ротация может перестать работать.

Шаг 8. Добавьте защиту от шифровальщика

  • Если модель поддерживает Btrfs и Snapshot Replication, настройте снапшоты общих папок. Они ускоряют откат, но не заменяют независимую копию.
  • Храните несколько версий в локальной и внешней копиях.
  • Используйте отдельные ключи доступа к бакету.
  • Держите сменный USB-диск отключённым между сеансами.
  • Проверяйте не только успешное завершение задачи, но и восстановление выбранных файлов и базы.

Как восстановить Immich

  1. Подготовьте свежую установку с версией Immich, совместимой с дампом. Восстановление из другой версии может потребовать миграций.
  2. Настройте docker-compose.yml и .env, сохранив значения UPLOAD_LOCATION и DB_DATA_LOCATION. Для внешних библиотек повторите прежние точки монтирования.
  3. Верните в UPLOAD_LOCATION каталоги backups, encoded-video, library, profile, thumbs и upload.
  4. Запустите свежий экземпляр и на экране первоначальной настройки выберите Restore from backup.
  5. Проверьте доступность каталогов, выберите дамп и запустите восстановление.
  6. В уже работающем экземпляре используйте Administration → Maintenance → Restore database backup.
  7. Проверьте таймлайн, альбомы и внешние библиотеки. Если вы восстановили только исходные файлы, повторно запустите задания генерации миниатюр и перекодирования.
⚠️
Восстановление заменяет текущую базу выбранным дампом. Immich создаёт точку восстановления перед операцией и пытается откатиться к ней при ошибке. Для восстановления через первоначальную настройку нужен свежий экземпляр, который ещё не был инициализирован.

Проверка результата

Контур работает, если:

  • все контейнеры находятся в состоянии running и не перезапускаются по кругу;
  • Immich открывается по локальному адресу и через выбранную личную сеть;
  • новый снимок появляется в библиотеке;
  • задачи копирования на USB-диск и во внешнее хранилище завершаются успешно;
  • автоматические дампы присутствуют в UPLOAD_LOCATION/backups;
  • контрольное восстановление файлов и базы проходит на отдельном экземпляре.
🔴
Проводите контрольное восстановление не реже раза в квартал и записывайте дату. Успешное завершение задачи подтверждает создание архива, но не гарантирует, что процедура восстановления отработана.

Пример расписания

ВремяЗадача
Каждый час, если поддерживается модельюСнапшот общих папок
00:30Дамп базы Immich
01:00Копия на внешний диск
03:00Копия в S3
Раз в неделюПроверка целостности копий
Раз в кварталТестовое восстановление

В стандартной конфигурации Immich создаёт дамп в 2:00. Если ночные задачи резервного копирования начинаются раньше, перенесите дамп на время до них.

Место и время

  • Миниатюры и перекодированные видео увеличивают размер библиотеки в среднем на 10–20% сверх оригиналов.
  • Файлы PostgreSQL обычно занимают 1–3 ГБ, но размер зависит от библиотеки и метаданных.
  • Версионной копии нужен запас на историю изменений.
  • 500 ГБ при стабильной отдаче 50 Мбит/с передаются примерно за 22 часа без учёта накладных расходов и перерывов.

Типичные ошибки

СимптомЧто проверить
Контейнер сразу останавливаетсяСовпадает ли правило брандмауэра с текущим IP или подсетью контейнера
Immich падает при массовой загрузкеХватает ли памяти; при 4 ГБ отключено ли машинное обучение
Обновление не запускаетсяПрочитаны ли release notes, сохранены ли .env и Compose-файл, выполнены ли остановка, очистка и новая сборка
Архив нельзя расшифроватьСохранились ли пароль и файл ключа, если шифрование было включено
После восстановления пустой таймлайнВосстановлена ли база из UPLOAD_LOCATION/backups; Immich не строит библиотеку одним сканированием файлов
Внешняя библиотека не виднаСовпадают ли точки монтирования и права доступа с прежней конфигурацией

Обслуживание

Раз в месяц: проверяйте диски, свободное место и отчёты задач резервного копирования.

Перед обновлением Immich: прочитайте release notes, убедитесь в наличии свежей копии, остановите проект, выполните очистку контейнеров по инструкции Container Manager, удалите неиспользуемые образы и соберите проект заново. После сборки проверьте адрес контейнера и правило брандмауэра.

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

Чеклист быстрой проверки

Том и файловая система поддерживают выбранную схему хранения
Уведомления об ошибках приходят
Все контейнеры Immich находятся в состоянии running
Правило брандмауэра соответствует подсети контейнеров
Порт 2283 не проброшен в интернет
Внешний доступ работает через защищённую личную сеть или другой выбранный способ
Автозагрузка проверена на новом снимке
Копия на USB-диск выполняется по расписанию
Внешняя копия выполняется по расписанию
Дампы базы создаются до задач резервного копирования
В копии есть содержимое UPLOAD_LOCATION и каталог backups
Пароли и ключи шифрования сохранены вне NAS, если шифрование включено
Настроены снапшоты, если их поддерживает выбранная модель
Настроено хранение версий
Контрольное восстановление проведено и записано

Следующий шаг

Правило 3-2-1: рабочая схема резервного копирования

Связанные материалы

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

Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov