pimenov.ai

База знаний

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

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

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

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

📌
Дата проверки: 8 августа 2026. Требования и порядок установки сверены с официальной документацией 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-диск, подключённый к NAS. Нужен для быстрого восстановления после ошибки или отказа тома.
  • Внешняя копия. Бакет в S3-совместимом хранилище. Страховка от кражи, пожара и залива.

RAID относится только к первому уровню и копией не является.

Словарь на входе

ТерминЧто это значит
Пул и томПул объединяет физические диски, том создаётся внутри пула и хранит общие папки
Общая папкаКаталог верхнего уровня со своими правами доступа, всё остальное лежит внутри него
Container ManagerПакет DSM для запуска контейнеров Docker и проектов из файла docker-compose.yml
ПроектНабор контейнеров, описанный одним файлом. Immich запускается именно так
СнапшотМгновенный слепок общей папки на файловой системе Btrfs, откат занимает секунды
Hyper BackupПакет DSM для версионных резервных копий на диск, второй NAS или в облако
Offsite-копияКопия, которая физически находится вне вашего дома

Кому подходит и когда не подходит

⚖️
Домашнее облако убирает подписку и возвращает контроль над архивом, но переносит на вас работу администратора: обновления, контроль дисков и тестовые восстановления. Если этого часа в месяц взять неоткуда, облачная подписка честнее.

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

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

Сценарии применения

Собранный контур нужен не ради самого себя. Вот ситуации, в которых он отрабатывает вложенное время.

СитуацияЧто вы делаетеГде описано
На телефоне кончилось местоУбеждаетесь, что автозагрузка дошла до конца, и чистите память устройства. Оригиналы остаются на NAS и в двух копияхШаги 3 и 6
Надоела подписка на облакоВыгружаете архив в общую папку и подключаете её как внешнюю библиотеку: ваша структура папок сохраняется, подписка отключается после проверкиШаг 3
Нужно показать фото в поездке или достать документОткрываете Immich и общие папки по адресу личной сети с телефона, не открывая ни одного порта наружуШаг 4
Архивом пользуется вся семьяЗаводите отдельную учётную запись Immich каждому и делитесь общими альбомами вместо пересылки файлов в мессенджерахШаги 2 и 4
Случайно удалили папку с документамиОткатываете общую папку к часовому снапшоту за минуты, не трогая резервные копииШаг 8
Шифровальщик на ноутбуке добрался до сетевой папкиБерёте версию Hyper Backup за день до заражения, потому что ротация хранит историю, а не один последний слепокШаги 6 и 8
NAS украли или залило водойСтавите новое устройство, тянете копию из S3 и восстанавливаете библиотеку вместе с альбомами и датамиШаг 7 и раздел «Как восстанавливать»
Старые диски и флешки с фото лежат в ящикеЗаливаете их в общую папку, подключаете как внешнюю библиотеку и находите снимки поиском вместо ручного перебора папокШаги 1 и 3
📌
Как понять, что контур окупился: любой из этих сценариев вы закрываете своими силами за вечер и без обращения в поддержку сервиса, который мог бы в любой момент сменить тариф или уйти из страны.

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

  • Модель NAS. Immich работает на платформах amd64 и arm64. Начиная с версии 3 контейнер машинного обучения на amd64 требует уровня микроархитектуры x86-64-v2, который поддерживают процессоры примерно с 2012 года. Старые модели на 32-битных ARM не подойдут.
  • Память. Официальный минимум Immich — 6 ГБ, рекомендуется 8 ГБ. Базовые двухдисковые модели часто идут с 4 ГБ: на такой машине система запускается только с отключённым машинным обучением, то есть без умного поиска и распознавания лиц. Под лимитами Docker одному PostgreSQL нужно не меньше 2 ГБ.
  • Диски. Два диска в зеркале как минимум. Свободного места нужно примерно вдвое больше текущего архива с запасом на рост.
  • Где живёт база. Каталог данных PostgreSQL нельзя размещать на сетевой шаре ни в каком виде. Лучший вариант — локальный SSD или том с SSD-кэшем; если база лежит на обычных дисках, это отдельно указывается в настройках проекта на втором шаге.
  • Питание. Источник бесперебойного питания с корректным выключением NAS по сигналу: живая база данных плохо переносит внезапное обесточивание.
  • DSM 7 и пакеты. Container Manager и Hyper Backup ставятся из Центра пакетов.
  • Сеть. Фиксированный локальный адрес для NAS, выданный роутером по MAC-адресу.
  • Внешний диск. USB-диск объёмом не меньше объёма защищаемых данных, лучше два для ротации.
  • S3-хранилище. Аккаунт, бакет и пара ключей доступа для второй копии.

Шаг 1. Хранилище и папки

  1. Соберите пул из дисков и создайте том на файловой системе Btrfs: она нужна для снапшотов.
  2. В Панель управления → Общая папка создайте отдельные папки: docker для сервисов, photo для фотоархива, docs для документов.
  3. Создайте отдельного пользователя для сервисов и дайте ему права только на нужные папки. Учётная запись администратора для повседневной работы не используется.
  4. В Менеджер хранения включите регулярную проверку данных по расписанию и уведомления о состоянии дисков.
  5. В Панель управления → Уведомления включите письма об ошибках задач: без них молча сломавшийся бэкап обнаружится в худший момент.

Шаг 2. Immich в Container Manager

  1. В File Station создайте структуру каталогов: docker/immich-app, внутри неё postgres и library.
  2. Скачайте с последнего релиза Immich файлы docker-compose.yml и example.env, загрузите их в docker/immich-app и переименуйте второй в .env.
  3. Заполните .env значениями из примера ниже.
  4. Откройте Container Manager → Проект → Создать, задайте имя проекта и укажите путь docker/immich-app. DSM предложит использовать найденный docker-compose.yml, согласитесь.
  5. На экране правки файла найдите параметр DB_STORAGE_TYPE: 'HDD' и раскомментируйте его, если том собран на обычных жёстких дисках.
  6. Пропустите шаг с настройкой портала Web Station и завершите мастер. Контейнеры соберутся и запустятся.
  7. Откройте раздел Контейнер, зайдите в детали immich-server и запишите IP-адрес контейнера.
  8. В Панель управления → Безопасность → Брандмауэр добавьте правило для этого IP-адреса и правило для порта 2283, на котором работает Immich.
  9. Откройте http://IP-адрес-NAS:2283 в браузере и создайте первую учётную запись: она станет администратором.
# Куда Immich складывает загруженные фото и видео
UPLOAD_LOCATION=/volume1/docker/immich-app/library
# Каталог данных PostgreSQL
DB_DATA_LOCATION=/volume1/docker/immich-app/postgres
# Версия: для предсказуемых обновлений подставьте конкретный тег
IMMICH_VERSION=release
# Пароль базы: сгенерируйте свой и сохраните в менеджере паролей
DB_PASSWORD=CHANGE_ME_STRONG_PASSWORD
TZ=Europe/Moscow
💡
Совет: чтобы отредактировать .env во встроенном текстовом редакторе DSM, временно переименуйте файл в example.txt, отредактируйте и верните имя обратно.
⚠️
Внимание: порт 2283 предназначен только для домашней сети. Не пробрасывайте его через роутер наружу, доступ извне настраивается на четвёртом шаге.
Фиксированная подсеть, чтобы правила брандмауэра не ломались

Docker выдаёт мостовым сетям динамические подсети, и после пересборки контейнера IP-адрес меняется. Правило брандмауэра перестаёт совпадать, а immich_server стартует и через несколько секунд останавливается. Чтобы этого не происходило, допишите в конец docker-compose.yml фиксированную сеть и подключите к ней все сервисы проекта.

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

Затем подключите эту сеть к каждому из четырёх сервисов проекта: immich-server, immich-machine-learning, redis и database. Без этого блок сети ни на что не влияет.

services:
  immich-server:
    # остальные параметры без изменений
    networks:
      - immich-network
  immich-machine-learning:
    networks:
      - immich-network
  redis:
    networks:
      - immich-network
  database:
    networks:
      - immich-network

После сохранения DSM спросит, пересобрать ли контейнеры. Выберите пересборку и при необходимости поправьте правило брандмауэра под новую подсеть.

Шаг 3. Библиотека: телефоны и старый архив

У Immich два разных способа получить ваши файлы, и они решают разные задачи.

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

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

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

Шаг 4. Доступ вне дома: Tailscale или QuickConnect

КритерийTailscaleQuickConnect
Что этоЛичная сеть поверх WireGuard, устройства видят друг друга напрямуюСлужба ретрансляции Synology, доступ по короткому идентификатору
УстановкаПакет из Центра пакетов, вход через провайдера учётных записейВключается в панели управления одним переключателем
Порты наружуНе нужныНе нужны
СкоростьПрямое соединение, при невозможности — ретрансляторПри ретрансляции скорость заметно падает
Кто в серединеТолько ваши устройстваСерверы Synology в режиме ретрансляции
Доступ к ImmichПо адресу вида http://100.x.y.z:2283 из любой точкиШтатно рассчитан на сервисы DSM, а не на сторонние контейнеры
Кому подходитТем, кому нужен полный доступ к NAS и контейнерамТем, кому нужен быстрый вход в DSM и мобильные приложения Synology

Для этого сценария основным вариантом берите Tailscale: контейнер Immich доступен по адресу внутри вашей личной сети, а порты роутера остаются закрытыми. После установки пакета откройте его веб-интерфейс и авторизуйте устройство по ссылке входа.

Сразу после этого зайдите в админ-консоль Tailscale, найдите NAS в разделе Machines и в меню устройства выберите Disable Key Expiry. В самом пакете DSM этой настройки нет. По умолчанию ключ устройства действует 180 дней, после чего NAS молча выпадает из сети.

⚠️
Внимание: если срок действия ключа уже истёк, вернуть NAS в сеть удалённо получается не всегда — иногда нужен локальный доступ к устройству. Отключайте истечение сразу, а не накануне отъезда.

QuickConnect остаётся удобным запасным входом в DSM с чужого компьютера. Держите его включённым только при необходимости и не разрешайте службе автоматически создавать правила проброса портов на роутере: этот переключатель открывает NAS наружу.

🔴
Критично: проброс портов DSM и Immich на белый IP — самый частый способ познакомиться с шифровальщиком. Если внешний доступ нужен обязательно, используйте личную сеть или обратный прокси с сертификатом и двухфакторной аутентификацией.

Шаг 5. Правило 3-2-1 в этом контуре

Три копии данных, два разных носителя, одна копия вне дома. В нашем сценарии это выглядит так.

КопияНосительГдеЧем делаетсяКак частоКак проверяется
РабочаяДиски NASДомаImmich и общие папкиПостоянноБиблиотека открывается, файлы на месте
ВтораяВнешний USB-дискДома или у родственниковHyper BackupЕжедневно ночьюОтчёт задачи без ошибок
ТретьяОбъектное хранилищеДата-центр провайдераHyper BackupЕжедневно после первойОтчёт задачи и пробное восстановление
📌
Что копией не считается: RAID защищает от отказа диска, но повторяет удаление и шифрование. Синхронизация переносит ошибку на все устройства. Снапшот живёт на том же томе, что и оригинал. Копия — это независимый носитель с версиями и собственным доступом.

Шаг 6. Копия на внешний диск

  1. Подключите USB-диск к NAS и убедитесь, что DSM его видит.
  2. Откройте Hyper Backup → плюс → Папки и пакеты и выберите назначением локальную общую папку или внешнее устройство.
  3. Отметьте общие папки с фото и документами, а также каталог из UPLOAD_LOCATION целиком: в нём лежат оригиналы (upload, library, profile), превью и — главное — автоматические дампы базы в подпапке backups.
  4. Включите шифрование на стороне клиента и сразу скачайте файл ключа восстановления. Без него копия не читается. Учтите: после создания задачи шифрование нельзя отключить, а пароль нельзя сменить.
  5. Задайте расписание на ночное время и включите ротацию версий, чтобы старые версии удалялись автоматически, а недавние сохранялись подробно.
  6. Включите проверку целостности копии по расписанию.
🔴
Критично: каталог postgres — это не резервная копия базы. Файловый бэкап читает живые файлы PostgreSQL в разные моменты времени, и восстановленная база часто просто не запускается. Рабочий путь — дампы: Immich делает их сам по расписанию и кладёт в UPLOAD_LOCATION/backups. Проверьте расписание и глубину хранения в Administration → Settings → Backup: по умолчанию это ежедневный дамп в 2:00 и 14 последних копий.
📌
Порядок имеет значение. Идеальный вариант — остановить контейнер immich-server на время копирования. Если останавливать нельзя, сначала делайте дамп базы, потом копируйте файлы: в худшем случае в копии окажутся файлы, о которых база не знает, и их можно загрузить заново. В обратном порядке база будет ссылаться на фотографии, которых в копии нет.
💡
Совет: возьмите два одинаковых диска и меняйте их раз в месяц, храня второй вне дома. Так локальная копия одновременно закрывает и требование внешнего хранения.

Шаг 7. Копия в S3-совместимое хранилище

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

Шаг 8. Защита от шифровальщика

  • Снапшоты Btrfs. Настройте Snapshot Replication на общие папки с фото и документами: откат к состоянию до заражения занимает минуты. Часть моделей DSM поддерживает неизменяемые снапшоты, которые нельзя удалить до истечения срока.
  • Версии в копиях. Ротация версий в Hyper Backup позволяет вернуться к состоянию до того, как зашифрованные файлы попали в копию.
  • Разные учётные данные. Ключ доступа к бакету используется только задачей бэкапа и нигде больше.
  • Неизменяемость на стороне хранилища. Версионирование и блокировка объектов настраиваются в самом бакете и работают независимо от NAS. Здесь нужна осторожность: Synology не заявляет официальной поддержки блокировки объектов в Hyper Backup, а ротация версий требует удаления старых объектов, которое блокировка как раз запрещает — задача может начать завершаться с ошибкой. Проверяйте связку на отдельном тестовом бакете с коротким сроком блокировки и помните, что заблокированные версии нельзя удалить досрочно, а значит счёт за хранение вырастет.
  • Физическое отключение. Внешний диск, подключённый круглосуточно, шифруется вместе с NAS. Диск для ротации держите отключённым между сеансами.

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

Восстановление состоит из двух частей: файлы и база. Порядок обратен порядку резервного копирования.

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

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

Контур считается рабочим, когда выполняются все пункты.

  • В Container Manager все контейнеры проекта находятся в состоянии running, а не перезапускаются по кругу.
  • Immich открывается по локальному адресу и по адресу личной сети с телефона в мобильном интернете.
  • Новый снимок с телефона появляется в библиотеке в течение нескольких минут.
  • Обе задачи Hyper Backup завершаются со статусом успеха, письма об ошибках не приходят.
  • Контрольное восстановление проходит: возьмите один альбом и одну папку документов, восстановите их в отдельный каталог и сравните с оригиналом.
🔴
Критично: резервная копия, из которой ни разу не восстанавливали данные, не является резервной копией. Проводите контрольное восстановление раз в квартал и записывайте дату.

Эталонная конфигурация

Расписание всех задач в одном месте, чтобы они не наступали друг на друга.

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

По умолчанию Immich делает дамп в 2:00, то есть уже после ночных задач Hyper Backup. Сдвиньте его на 00:30 в Administration → Settings → Backup, чтобы в обе копии попадала свежая база.

Минимальный набор переменных Immich, от которых зависит, где окажутся ваши данные, приведён в шаге 2. Держите этот файл в резервной копии вместе с библиотекой: без него восстановленные каталоги придётся собирать вручную.

Сколько это занимает места и времени

Цифры зависят от доли видео и настроек перекодирования, поэтому считайте их ориентирами, а не обещанием.

  • Место под библиотеку. Сверх оригиналов Immich хранит миниатюры, превью и перекодированные видео. Закладывайте примерно на четверть больше объёма исходного архива, а если видео много — до полутора раз.
  • Место под копии. Версионная копия с ротацией занимает больше одного слепка: для архива в 500 ГБ разумно брать диск от 1 ТБ.
  • Первая выгрузка в облако. Считается арифметикой канала: 500 ГБ при отдаче 50 Мбит/с — около 22 часов непрерывной передачи, терабайт — около двух суток. Реальный срок будет больше: скорость плавает, а задача прерывается.
  • Индексация и распознавание лиц. Первый проход по большому архиву на домашнем процессоре без ускорителя идёт часами и заметно нагружает NAS. Запускайте его на ночь.
  • Тестовое восстановление. На один альбом и одну папку документов закладывайте полчаса вместе с проверкой.

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

СимптомПричинаЧто делать
Контейнер стартует и сразу останавливаетсяПосле пересборки сменился IP-адрес контейнера и правило брандмауэра перестало совпадатьОбновить правило и зафиксировать подсеть в docker-compose.yml
Immich падает при массовой загрузкеНе хватает памяти на распознавание лиц и поискРасширить память или временно отключить машинное обучение
После обновления сервис не поднялсяВ релизе были несовместимые измененияЧитать release notes до обновления и держать копию каталога проекта
Копия есть, восстановить нечегоПотерян файл ключа шифрованияХранить ключ отдельно от NAS и проверять его при каждом тестовом восстановлении
Том переполнился за неделюБиблиотека, база и локальная копия живут на одном томеРазнести копии на отдельный носитель и включить уведомления о свободном месте
После восстановления таймлайн пустойВернули файлы, но не восстановили базу: Immich не сканирует каталог библиотеки и без базы не знает о файлахВосстановить дамп из UPLOAD_LOCATION/backups
Дубликаты фотографийОдин и тот же архив подключён и как внешняя библиотека, и как загрузка с телефонаВыбрать один способ для каждого источника

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

Раз в месяц. Проверьте состояние дисков и отчёты обеих задач, освободите место от неиспользуемых образов Docker, обновите DSM.

Раз в квартал. Обновите Immich по штатной процедуре: остановите проект, выполните действие очистки, удалите неиспользуемые образы, соберите проект заново и проверьте правило брандмауэра. Перед этим убедитесь, что свежая копия существует.

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

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

Том собран на Btrfs, проверка данных включена
Уведомления об ошибках задач приходят на почту
Immich работает, все контейнеры в состоянии running
Правило брандмауэра совпадает с текущей подсетью контейнеров
Порт 2283 не проброшен наружу
Внешний доступ работает через личную сеть
Автозагрузка с телефонов включена и проверена на новом снимке
Задача копирования на внешний диск выполняется по расписанию
Задача копирования в S3 выполняется по расписанию
Автоматические дампы базы Immich включены и попадают в обе копии
Обе копии зашифрованы, файлы ключей сохранены вне NAS
Снапшоты общих папок настроены
Ротация версий настроена, старые версии удаляются автоматически
Контрольное восстановление проведено, дата записана
Свободного места на томе больше 20 процентов

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

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

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

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

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