База знаний
Домашнее облако на Synology: Immich и резервная копия 3-2-1
Пошаговый сценарий домашнего облака на Synology: Immich через Container Manager, удалённый доступ и резервные копии по правилу 3-2-1.
СейчасЦелевая картина
- Целевая картина
- Словарь на входе
- Кому подходит и когда не подходит
- Сценарии применения
- Что нужно до старта
- Шаг 1. Хранилище и папки
- Шаг 2. Immich в Container Manager
- Шаг 3. Библиотека: телефоны и старый архив
- Шаг 4. Доступ вне дома: Tailscale или QuickConnect
- Шаг 5. Правило 3-2-1 в этом контуре
- Шаг 6. Копия на внешний диск
- Шаг 7. Копия в S3-совместимое хранилище
- Шаг 8. Защита от шифровальщика
- Как восстанавливать
- Проверка результата
- Эталонная конфигурация
- Сколько это занимает места и времени
- Типичные ошибки
- Обслуживание
- Чеклист быстрой проверки
- Следующий шаг
- Связанные материалы
Практический сценарий домашнего облака: Synology хранит файлы, Immich заменяет облачную галерею фотографий, а данные живут в трёх копиях по правилу 3-2-1. Все шаги выполняются в интерфейсе DSM, терминал не нужен.
Целевая картина
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. Хранилище и папки
- Соберите пул из дисков и создайте том на файловой системе Btrfs: она нужна для снапшотов.
- В Панель управления → Общая папка создайте отдельные папки:
dockerдля сервисов,photoдля фотоархива,docsдля документов. - Создайте отдельного пользователя для сервисов и дайте ему права только на нужные папки. Учётная запись администратора для повседневной работы не используется.
- В Менеджер хранения включите регулярную проверку данных по расписанию и уведомления о состоянии дисков.
- В Панель управления → Уведомления включите письма об ошибках задач: без них молча сломавшийся бэкап обнаружится в худший момент.
Шаг 2. Immich в Container Manager
- В File Station создайте структуру каталогов:
docker/immich-app, внутри неёpostgresиlibrary. - Скачайте с последнего релиза Immich файлы
docker-compose.ymlиexample.env, загрузите их вdocker/immich-appи переименуйте второй в.env. - Заполните
.envзначениями из примера ниже. - Откройте Container Manager → Проект → Создать, задайте имя проекта и укажите путь
docker/immich-app. DSM предложит использовать найденныйdocker-compose.yml, согласитесь. - На экране правки файла найдите параметр
DB_STORAGE_TYPE: 'HDD'и раскомментируйте его, если том собран на обычных жёстких дисках. - Пропустите шаг с настройкой портала Web Station и завершите мастер. Контейнеры соберутся и запустятся.
- Откройте раздел Контейнер, зайдите в детали
immich-serverи запишите IP-адрес контейнера. - В Панель управления → Безопасность → Брандмауэр добавьте правило для этого IP-адреса и правило для порта
2283, на котором работает Immich. - Откройте
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, отредактируйте и верните имя обратно.Фиксированная подсеть, чтобы правила брандмауэра не ломались
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 проиндексирует файлы на месте, не перемещая и не переименовывая их: имена и структура каталогов остаются вашими.
Шаг 4. Доступ вне дома: Tailscale или QuickConnect
| Критерий | Tailscale | QuickConnect |
| Что это | Личная сеть поверх 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 молча выпадает из сети.
QuickConnect остаётся удобным запасным входом в DSM с чужого компьютера. Держите его включённым только при необходимости и не разрешайте службе автоматически создавать правила проброса портов на роутере: этот переключатель открывает NAS наружу.
Шаг 5. Правило 3-2-1 в этом контуре
Три копии данных, два разных носителя, одна копия вне дома. В нашем сценарии это выглядит так.
| Копия | Носитель | Где | Чем делается | Как часто | Как проверяется |
| Рабочая | Диски NAS | Дома | Immich и общие папки | Постоянно | Библиотека открывается, файлы на месте |
| Вторая | Внешний USB-диск | Дома или у родственников | Hyper Backup | Ежедневно ночью | Отчёт задачи без ошибок |
| Третья | Объектное хранилище | Дата-центр провайдера | Hyper Backup | Ежедневно после первой | Отчёт задачи и пробное восстановление |
Шаг 6. Копия на внешний диск
- Подключите USB-диск к NAS и убедитесь, что DSM его видит.
- Откройте Hyper Backup → плюс → Папки и пакеты и выберите назначением локальную общую папку или внешнее устройство.
- Отметьте общие папки с фото и документами, а также каталог из
UPLOAD_LOCATIONцеликом: в нём лежат оригиналы (upload,library,profile), превью и — главное — автоматические дампы базы в подпапкеbackups. - Включите шифрование на стороне клиента и сразу скачайте файл ключа восстановления. Без него копия не читается. Учтите: после создания задачи шифрование нельзя отключить, а пароль нельзя сменить.
- Задайте расписание на ночное время и включите ротацию версий, чтобы старые версии удалялись автоматически, а недавние сохранялись подробно.
- Включите проверку целостности копии по расписанию.
postgres — это не резервная копия базы. Файловый бэкап читает живые файлы PostgreSQL в разные моменты времени, и восстановленная база часто просто не запускается. Рабочий путь — дампы: Immich делает их сам по расписанию и кладёт в UPLOAD_LOCATION/backups. Проверьте расписание и глубину хранения в Administration → Settings → Backup: по умолчанию это ежедневный дамп в 2:00 и 14 последних копий.immich-server на время копирования. Если останавливать нельзя, сначала делайте дамп базы, потом копируйте файлы: в худшем случае в копии окажутся файлы, о которых база не знает, и их можно загрузить заново. В обратном порядке база будет ссылаться на фотографии, которых в копии нет.Шаг 7. Копия в S3-совместимое хранилище
- Создайте бакет у выбранного провайдера и отдельную пару ключей доступа только для этого бакета. Ключи от основной учётной записи в задачу бэкапа не подставляйте.
- В Hyper Backup создайте вторую задачу и выберите назначением S3-совместимое хранилище.
- Укажите адрес точки доступа провайдера, имя бакета, ключ и секрет. Оставьте включённым шифрование канала.
- Включите шифрование на стороне клиента и сохраните файл ключа в менеджере паролей, у которого есть собственная копия вне дома.
- Запустите первую полную выгрузку в момент, когда канал свободен: она может занять несколько суток.
- Проверьте у провайдера стоимость не только хранения, но и обратного трафика. Восстановление терабайта иногда стоит дороже, чем год хранения.
Шаг 8. Защита от шифровальщика
- Снапшоты Btrfs. Настройте Snapshot Replication на общие папки с фото и документами: откат к состоянию до заражения занимает минуты. Часть моделей DSM поддерживает неизменяемые снапшоты, которые нельзя удалить до истечения срока.
- Версии в копиях. Ротация версий в Hyper Backup позволяет вернуться к состоянию до того, как зашифрованные файлы попали в копию.
- Разные учётные данные. Ключ доступа к бакету используется только задачей бэкапа и нигде больше.
- Неизменяемость на стороне хранилища. Версионирование и блокировка объектов настраиваются в самом бакете и работают независимо от NAS. Здесь нужна осторожность: Synology не заявляет официальной поддержки блокировки объектов в Hyper Backup, а ротация версий требует удаления старых объектов, которое блокировка как раз запрещает — задача может начать завершаться с ошибкой. Проверяйте связку на отдельном тестовом бакете с коротким сроком блокировки и помните, что заблокированные версии нельзя удалить досрочно, а значит счёт за хранение вырастет.
- Физическое отключение. Внешний диск, подключённый круглосуточно, шифруется вместе с NAS. Диск для ротации держите отключённым между сеансами.
Как восстанавливать
Восстановление состоит из двух частей: файлы и база. Порядок обратен порядку резервного копирования.
- Разверните Immich заново по шагу 2: те же
docker-compose.ymlи.envс теми же значениямиUPLOAD_LOCATIONиDB_DATA_LOCATION. - Верните из копии содержимое
UPLOAD_LOCATION: каталогиupload,library,profile,thumbs,encoded-videoиbackups. - Запустите проект и на экране приветствия выберите Restore from backup. Immich перейдёт в режим обслуживания и покажет, какие каталоги он видит и сколько в них файлов.
- Выберите нужный дамп из списка и запустите восстановление. Если экземпляр уже работает, то же самое делается в Administration → Maintenance → Restore database backup.
- Проверьте таймлайн, альбомы и общие папки. Если превью не открываются, запустите заново задания генерации миниатюр и перекодирования.
Проверка результата
Контур считается рабочим, когда выполняются все пункты.
- В Container Manager все контейнеры проекта находятся в состоянии
running, а не перезапускаются по кругу. - Immich открывается по локальному адресу и по адресу личной сети с телефона в мобильном интернете.
- Новый снимок с телефона появляется в библиотеке в течение нескольких минут.
- Обе задачи Hyper Backup завершаются со статусом успеха, письма об ошибках не приходят.
- Контрольное восстановление проходит: возьмите один альбом и одну папку документов, восстановите их в отдельный каталог и сравните с оригиналом.
Эталонная конфигурация
Расписание всех задач в одном месте, чтобы они не наступали друг на друга.
| Время | Задача | Что делает |
| Каждый час | Снапшот общих папок | Быстрый откат на несколько часов назад |
| 00:30 | Дамп базы Immich | Метаданные библиотеки, попадают в обе копии |
| 01:00 | Hyper Backup на внешний диск | Локальная копия с версиями |
| 03:00 | Hyper 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 по штатной процедуре: остановите проект, выполните действие очистки, удалите неиспользуемые образы, соберите проект заново и проверьте правило брандмауэра. Перед этим убедитесь, что свежая копия существует.
Раз в полгода. Проверьте, что ключи шифрования и доступа к бакету всё ещё лежат там, где вы их ищете, и что человек, который будет восстанавливать архив без вас, знает, где инструкция.
Чеклист быстрой проверки
runningСледующий шаг
Правило 3-2-1: рабочая схема резервного копирования
Связанные материалы
- Статья: Как мы перегоняем терабайт с Яндекс.Диска на Synology под присмотром Codex
- Блог: Данные важнее модели
- База знаний: Synology DSM — NAS как домашний сервер
Домашнее хранилище — это первый контур, где данные окончательно переходят под ваш контроль, и те же принципы работают для рабочих архивов, баз клиентов и материалов команды.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov
Если хотите разобрать свою задачу — напишите мне Если хотите разобрать свою задачу — напишите мне.
Можно прийти с идеей, черновым контекстом или уже живой задачей. Помогу быстро понять, где реальный следующий шаг, а где лишний шум.
Обычно хватает 2–3 сообщений, чтобы понять, могу ли я здесь реально помочь и в каком формате лучше двигаться дальше.
Дальше по теме
Правило 3-2-1 для резервного копирования: три копии, два носителя, одна вне площадки. Схема, расширения 3-2-1-1-0 и 4-3-2, конфиг restic и чеклист.