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