Без бэкапа — начинаете с нуля. С бэкапом — восстанавливаетесь за полчаса. Правило 3-2-1 гарантирует, что бэкап будет, когда он понадобится.
Это ваш рабочий сервер. SSD мини-ПК, жёсткий диск NAS, SD-карта Raspberry Pi (хотя SD-карты для сервера — плохая идея, об этом ниже). Здесь данные живут и работают.
Копия на другом физическом устройстве в том же доме. Варианты:
NAS (Synology, QNAP, самосборный). Если сервер умного дома — мини-ПК, а в сети есть NAS — бэкап на NAS. Разные устройства, разные диски. Отказ SSD в мини-ПК не затронет NAS.
Внешний USB-диск. Подключён к серверу или к NAS. Самый бюджетный вариант. Внешний HDD на 1 ТБ стоит около 4000–5000 рублей и вмещает тысячи бэкапов конфигурации умного дома.
Второй внутренний диск. Если сервер позволяет установить два накопителя — основной SSD для работы, второй HDD или SSD для бэкапов.
Другой компьютер в сети. Старый ноутбук, другой Raspberry Pi, рабочий ПК. Rsync по сети — и копия готова.
Копия за пределами вашего дома. Варианты:
Облачное хранилище. Яндекс Диск, Google Drive, Backblaze B2, Wasabi, S3-совместимые хранилища. Для конфигурации умного дома (без InfluxDB) объём — десятки мегабайт. Даже бесплатного тарифа хватит.
VPS/VDS. Если у вас есть арендованный сервер — копируйте бэкапы туда.
Физический диск у родственников / в офисе. Раз в месяц копируете на USB-диск и отвозите. Олдскульно, но работает. Защищает от пожара и затопления лучше любого облака.
Зашифрованный бэкап в облаке. Если данные чувствительны (пароли, конфигурация камер, ключи Zigbee-сети) — шифруйте перед отправкой. Restic и Borg шифруют по умолчанию.
Самый простой вариант, не требующий установки дополнительного софта.
Локальный архив:
bash#!/bin/bash
# backup.sh — скрипт резервного копирования
BACKUP_DIR="/backup"
SOURCE="/opt/smarthome"
DATE=$(date +%Y%m%d-%H%M)
# Останавливаем контейнеры для консистентности
cd $SOURCE
docker compose stop
# Создаём архив
tar czf ${BACKUP_DIR}/smarthome-${DATE}.tar.gz \
--exclude='*/log/*' \
--exclude='*/mosquitto/log/*' \
-C / opt/smarthome/
# Запускаем обратно
docker compose start
# Удаляем бэкапы старше 30 дней
find ${BACKUP_DIR} -name "smarthome-*.tar.gz" -mtime +30 -delete
echo "Backup completed: smarthome-${DATE}.tar.gz"Копирование на удалённый сервер:
bash# Отправить последний бэкап на удалённый сервер
rsync -avz ${BACKUP_DIR}/smarthome-${DATE}.tar.gz user@remote-server:/backup/smarthome/Копирование на NAS по сети:
bash# Монтируем сетевую шару NAS (один раз)
sudo mount -t cifs //nas.local/backup /mnt/nas-backup -o username=backup,password=secret
# Копируем
cp ${BACKUP_DIR}/smarthome-${DATE}.tar.gz /mnt/nas-backup/smarthome/Restic — инструмент резервного копирования с дедупликацией, шифрованием и поддержкой множества хранилищ (локальный диск, SFTP, S3, Backblaze B2, Google Cloud, Azure).
Установка:
bashsudo apt install resticИнициализация репозитория (один раз):
bash# Локальный
restic init --repo /backup/restic-repo
# Или на Backblaze B2
export B2_ACCOUNT_ID="your-account-id"
export B2_ACCOUNT_KEY="your-account-key"
restic init --repo b2:your-bucket-name:smarthomeRestic попросит задать пароль для шифрования. Запомните его или сохраните в надёжном месте — без пароля данные не восстановить.
Бэкап:
bashcd /opt/smarthome
docker compose stop
restic backup \
--repo /backup/restic-repo \
--exclude='*/log/*' \
/opt/smarthome/
docker compose startАвтоматическое удаление старых копий:
bashrestic forget \
--repo /backup/restic-repo \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \
--pruneХранить: 7 ежедневных, 4 еженедельных, 6 ежемесячных. Остальное — удалить.
Восстановление:
bashrestic restore latest --repo /backup/restic-repo --target /opt/smarthome-restored/Плюсы Restic: дедупликация (повторяющиеся данные не дублируются, бэкапы занимают мало места), шифрование (данные зашифрованы AES-256), инкрементальность (после первого полного бэкапа копируются только изменения — быстро).
Аналогичный инструмент с дедупликацией и шифрованием. Чуть старше Restic, чуть быстрее на некоторых операциях, чуть менее удобен с облачными хранилищами. Выбор между Restic и Borg — дело вкуса. Оба отлично справляются.
Home Assistant OS и Supervised имеют встроенную функцию бэкапа: Settings → System → Backups → Create Backup. Создаётся полный или частичный снимок, включающий конфигурацию, аддоны и (опционально) базу данных.
Для Home Assistant Container (Docker) этой функции нет — бэкап делается вручную, как описано выше.
Даже если вы используете встроенный бэкап HAOS — не полагайтесь только на него. Бэкап хранится на том же диске, что и система. Диск умер — бэкап умер вместе с ним. Копируйте бэкапы HAOS на внешний носитель. Аддоны Home Assistant (например, Samba Backup, Google Drive Backup) автоматизируют это: создают бэкап и копируют на сетевой диск или в облако.
Бэкап, который нужно делать вручную, не будет делаться. Автоматизируйте.
bashcrontab -eДобавьте:
bash# Ежедневный бэкап в 3:00
0 3 * * * /opt/smarthome/backup.sh >> /var/log/backup.log 2>&1
# Еженедельная отправка на удалённый сервер (воскресенье, 4:00)
0 4 * * 0 rsync -avz /backup/smarthome/ user@remote:/backup/smarthome/ini# /etc/systemd/system/smarthome-backup.service
[Unit]
Description=Smart Home Backup
[Service]
Type=oneshot
ExecStart=/opt/smarthome/backup.shini# /etc/systemd/system/smarthome-backup.timer
[Unit]
Description=Daily Smart Home Backup
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.targetbashsudo systemctl enable smarthome-backup.timer
sudo systemctl start smarthome-backup.timerДобавьте в конец скрипта бэкапа отправку уведомления — через curl в Telegram, через MQTT в Home Assistant, через любой удобный канал:
bash# Уведомление в Home Assistant через REST API
curl -s -X POST \
-H "Authorization: Bearer YOUR_LONG_LIVED_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Бэкап завершён: smarthome-'${DATE}'.tar.gz"}' \
http://localhost:8123/api/services/notify/mobile_app_your_phoneИли проще — через MQTT:
bashmosquitto_pub -h localhost -u backup -P password \
-t "homeassistant/notification/backup" \
-m "Бэкап завершён: smarthome-${DATE}.tar.gz"В Home Assistant создайте автоматизацию, которая слушает этот топик и отправляет уведомление на телефон.
Ещё важнее — уведомление об ошибке. Если бэкап не выполнился — вы должны об этом узнать.
Бэкап, который не проверен, — не бэкап, а надежда. Периодически проверяйте, что данные восстанавливаются.
Раз в несколько месяцев — разверните бэкап на тестовом окружении и убедитесь, что всё работает.
bash# Создайте тестовую директорию
mkdir /tmp/restore-test
cd /tmp/restore-test
# Распакуйте последний бэкап
tar xzf /backup/smarthome-20260305-0300.tar.gz
# Проверьте, что файлы на месте
ls -la opt/smarthome/
ls -la opt/smarthome/homeassistant/config/
ls -la opt/smarthome/zigbee2mqtt/data/
# Убедитесь, что ключевые файлы читаемы
cat opt/smarthome/docker-compose.yml
cat opt/smarthome/homeassistant/config/configuration.yamlДля полного теста — поднимите контейнеры из бэкапа на другом порту или другой машине и убедитесь, что Home Assistant стартует.
bashrestic check --repo /backup/restic-repoRestic проверит целостность всех данных в репозитории. Делайте это регулярно — особенно для удалённых хранилищ.
Копия 1 (оригинал): SSD сервера, /opt/smarthome/
↓
Ежедневный скрипт backup.sh (cron, 3:00)
↓
Копия 2 (локальная): NAS или внешний HDD, /backup/smarthome/
↓
Еженедельный rsync или Restic (cron, воскресенье 4:00)
↓
Копия 3 (удалённая): Облако (Backblaze B2 / Яндекс Диск)
или диск у родственниковТри копии. Два типа носителей (SSD + HDD/NAS, или SSD + облако). Одна копия за пределами дома. Правило 3-2-1 выполнено.
Чеклист — распечатайте или сохраните.
docker-compose.yml.env (секреты, пароли, токены)config/ (вся директория)data/ (особенно coordinator_backup.json)config/ (конфигурация + файл паролей)config.yml + база данных frigate.dbdata/ (дашборды, настройки)data/ (история показаний)conf/ (настройки, списки фильтрации)data/ (потоки)data/ + letsencrypt/ (сертификаты)Raspberry Pi с SD-картой — популярная конфигурация для Home Assistant. И самая ненадёжная для хранения данных. SD-карты имеют ограниченный ресурс записи. Home Assistant, InfluxDB, Frigate непрерывно пишут данные. SD-карта изнашивается за 6–18 месяцев активного использования. Иногда — быстрее.
Если используете Raspberry Pi — подключите SSD через USB (для Pi 4/5 работает штатно). Если SSD не вариант — хотя бы делайте бэкапы чаще (ежедневно) и на внешний носитель. SD-карта умрёт не «если», а «когда».
«У меня есть бэкап» → бэкап на том же диске. Это не бэкап. Диск умер — и оригинал, и «бэкап» потеряны.
«Я делаю бэкап раз в месяц». Месяц работы — потерян. Для конфигурации, которая меняется активно — ежедневный бэкап. Для стабильной системы — минимум еженедельный.
«Бэкап работает, я проверял год назад». Проверяйте регулярно. Скрипт мог сломаться. Диск мог заполниться. Пароль от облака мог смениться.
Бэкап без шифрования в облаке. secrets.yaml с паролями, конфигурация камер с адресами, ключ Zigbee-сети — всё это не должно лежать в открытом виде в облаке. Restic и Borg шифруют по умолчанию. Для tar — шифруйте GPG перед отправкой.
Нет уведомлений об ошибках. Скрипт бэкапа упал три недели назад, а вы не знаете. Настройте уведомление о каждом успешном и неуспешном бэкапе. Отсутствие уведомления об успехе — тоже повод для беспокойства.
Хранение пароля Restic/Borg только в голове. Забыли пароль — бэкап зашифрован навсегда. Запишите пароль в менеджере паролей (KeePass, Bitwarden) и/или на бумаге в сейфе.
Правило 3-2-1 — это не техническое требование, а дисциплина. Технически — один скрипт на 15 строк и запись в crontab. Практически — уверенность в том, что любой сбой, от сгоревшего SSD до пожара, не уничтожит результаты месяцев работы.
Настройте бэкап сегодня. Не завтра. Не «когда будет время». Сегодня. Скопируйте скрипт из этой статьи, подставьте свои пути, добавьте в cron. Тридцать минут — и ваш умный дом защищён.
Потому что вопрос не в том, потеряете ли вы данные. Вопрос в том, когда. И будет ли у вас бэкап в этот момент.
Статья подготовлена на основе документации Restic, Borg Backup, Docker и материалов сообщества Home Assistant. Все упомянутые торговые марки принадлежат их правообладателям. Материал носит информационный характер и не является рекламой.