Если вам понравилась эта статья, вы можете стать спонсором на Boosty.
Zerobyte - автоматизация резервного копирования для Homelab#
Резервное копирование - одна из ключевых задач любой инфраструктуры.
В домашнем Homelab или self-hosted окружении важно иметь систему, которая:
- автоматически выполняет бэкапы
- поддерживает шифрование
- умеет работать с облачными хранилищами
- имеет удобный интерфейс управления
Именно такую задачу решает Zerobyte.
В этой статье разберем:
- что такое Zerobyte
- как установить его через Docker
- как настроить первое резервное копирование
- как восстанавливать данные
Что такое Zerobyte#
Zerobyte - это инструмент для автоматизации резервного копирования, который помогает сохранять данные на различных хранилищах. Построенный на основе Restic, он предоставляет современный веб-интерфейс для планирования, управления и мониторинга зашифрованных резервных копий вашего удаленного хранилища.
Сайт проекта с документацией: zerobyte.app
Исходный код: github.com/nicotsx/zerobyte
Zerobyte все еще находится на версии 0.x.x и может существенно меняться от версии к версии. Проект в стадии активной разработки.
После того, как я выпустил ролик про приложения-открытия 2025 года, в числе которых я рассказывал про Zerobyte, мне часто пишут с вопросом, почему я не рассказал о том или ином решении. По мнению задающего вопросы, именно то приложение, которым он пользуется, самое лучшее :) Ниже я постарался свести в некую табличку особенности самых популярных решений.
Особенности Zerobyte:
- Автоматическое резервное копирование с шифрованием, сжатием и политиками хранения, реализованное с помощью Restic
- Гибкое расписание для автоматических заданий резервного копирования с тонкой настройкой политики хранения
- Сквозное шифрование (end-to-end), обеспечивающее защиту данных на всех этапах
- Поддержка нескольких протоколов: резервное копирование с NFS, SMB, WebDAV, SFTP или локальных директорий
Это делает Zerobyte удобной альтернативой таким решениям как:
Если же вы работаете в экосистеме Proxmox, обратите внимание также на специализированное решение Proxmox Backup Server.
Сравнение популярных решений для резервного копирования#
| Backup tool | Web UI | Encryption | Deduplication | Docker |
|---|---|---|---|---|
| Duplicati | ✔ | ✔ | ✔ | ✔ |
| Kopia | ✔ | ✔ | ✔ | ✔ |
| BorgBackup | ✖ | ✔ | ✔ | ✔ |
| Zerobyte | ✔ | ✔ | ✔ | ✔ |
Duplicati vs Zerobyte - сравнение систем резервного копирования#
Так как в предыдущей статье я рассказывал про приложение Duplicati, то давайте сравним Duplicati и героя сегодняшней статьи более подробно.
Duplicati и Zerobyte - это решения для резервного копирования данных, ориентированные на self-hosted инфраструктуру и домашние лаборатории. Оба инструмента предоставляют веб-интерфейс, автоматизацию и поддержку удаленных хранилищ, однако они используют разные архитектурные подходы.
Duplicati - это самостоятельная система резервного копирования со своим движком.
Zerobyte - это веб-интерфейс и менеджер задач резервного копирования, построенный поверх backup-движка restic.
Краткая таблица сравнения#
| Критерий | Duplicati | Zerobyte |
|---|---|---|
| Тип решения | Самостоятельная система резервного копирования | Менеджер резервных копий |
| Backup-движок | Собственный | Restic |
| Архитектура | Монолитное приложение | Web UI + restic backend |
| Интерфейс | Web UI + CLI | Web UI (репозитории можно открыть restic CLI) |
| Шифрование | AES-256 | Встроенное шифрование restic |
| Дедупликация | Блочная дедупликация | Дедупликация restic |
| Инкрементальные бэкапы | Да | Да |
| Сжатие | Да | Да |
| Версионирование файлов | Да | Да |
| Восстановление файлов | Да | Да |
| Планировщик задач | Да | Да |
| Поддержка облачных хранилищ | Да | Через restic или с помощью rclone |
| Локальные хранилища | Да | Да |
| Поддержка S3 | Да | Да |
| Поддержка WebDAV | Да | Как источник, как хранилище - через rclone |
| Поддержка SFTP | Да | Да |
| Поддержка rclone | Да (нужен бинарник rclone) | Да |
| Управление несколькими задачами | Да | Да |
| Контроль snapshot-ов | Да | Да |
| Логи и мониторинг | Да | Да |
| Открытый исходный код | Да | Да |
| Зрелость проекта | Высокая | Новый проект |
| Простота установки | Очень простая | Простая |
| Гибкость конфигурации | Средняя | Высокая |
Архитектура решений#
Duplicati#
Duplicati представляет собой полностью автономную систему резервного копирования.
Приложение включает:
- backup-движок
- веб-интерфейс
- систему планирования
- поддержку облачных хранилищ
- механизм дедупликации
- шифрование
Благодаря этому Duplicati можно установить как единое приложение и сразу использовать для создания резервных копий.
Zerobyte#
Zerobyte работает иначе. Это интерфейс управления для restic, популярного backup-движка.
Zerobyte добавляет:
- веб-панель управления
- создание backup-задач
- управление расписанием
- просмотр snapshot-ов
- восстановление файлов
- централизованное управление несколькими репозиториями
Фактически Zerobyte выполняет роль панели управления для restic-инфраструктуры. И у этого есть приятный бонус: репозитории, которые он создает, - это обычные репозитории restic. Если с самим Zerobyte что-то случится, данные можно достать штатным restic из консоли (об этом ниже, в разделе про восстановление).
Поддерживаемые хранилища#
Duplicati#
Duplicati поддерживает большое количество облачных сервисов:
- Amazon S3
- Backblaze B2
- Google Drive
- OneDrive
- Dropbox
- WebDAV
- SFTP
- rclone (нужен установленный бинарник rclone)
- локальные диски
- NAS
Zerobyte#
У Zerobyte два разных понятия, и списки у них разные.
Источники (Volumes) - откуда берем данные:
- локальные директории (примонтированные в контейнер)
- NFS
- SMB
- WebDAV
- SFTP
- rclone
Репозитории (Repositories) - куда складываем бэкапы:
- локальные директории
- S3-совместимые хранилища (Amazon S3, MinIO, Wasabi и т.п.) и Cloudflare R2
- Google Cloud Storage
- Azure Blob Storage
- REST Server (restic)
- SFTP
- rclone - а через него еще 40+ облачных провайдеров, включая Google Drive, Dropbox и OneDrive
По набору хранилищ инструменты в итоге примерно равны: оба умеют работать через rclone, просто у Zerobyte это штатный тип репозитория прямо в интерфейсе.
Основные преимущества#
Преимущества Duplicati#
- очень простая установка
- готовая система резервного копирования
- поддерживает самые распространенные облачные хранилища
- зрелый и хорошо известный проект
- удобный web-интерфейс
Duplicati отлично подходит для:
- домашних серверов
- NAS
- персональных бэкапов
- небольших homelab-инфраструктур
Преимущества Zerobyte#
- современная архитектура
- использование надежного backup-движка restic
- поддержка rclone-хранилищ
- гибкая работа с репозиториями
- удобное управление snapshot-ами
- бэкапы хранятся в обычном формате restic и не привязаны к самому Zerobyte
Zerobyte лучше подходит для:
- продвинутых homelab
- инфраструктур с несколькими backup-задачами
- пользователей restic
Когда выбрать Duplicati#
Duplicati стоит выбрать, если:
- нужна простая система резервного копирования
- важна быстрая установка
- требуется поддержка популярных облачных сервисов
- инфраструктура небольшая
Duplicati - хороший выбор для большинства домашних серверов.
Когда выбрать Zerobyte#
Zerobyte лучше выбрать, если:
- вы уже используете restic
- нужна более гибкая архитектура backup-системы
- важно, чтобы бэкапы можно было открыть и без самого приложения - обычным restic
- есть несколько backup-репозиториев
Итог сравнения Duplicati и Zerobyte#
| Инструмент | Лучше всего подходит для |
|---|---|
| Duplicati | Простые и быстрые бэкапы для домашнего сервера |
| Zerobyte | Управление restic-бэкапами и более гибкие инфраструктуры |
Оба инструмента являются open-source и могут использоваться в self-hosted среде. Выбор зависит от того, нужен ли вам готовый backup-клиент (Duplicati) или менеджер инфраструктуры бэкапов на базе restic (Zerobyte).
Основные возможности Web интерфейса Zerobyte#
Web-интерфейс#
Zerobyte предоставляет современную web-панель управления, через которую можно:
- создавать backup-задачи
- запускать бэкапы вручную
- отслеживать статус
- восстанавливать файлы
Использование Restic#
В основе Zerobyte используется Restic, что дает:
- дедупликацию
- шифрование
- инкрементальные бэкапы
- поддержку множества backend-хранилищ
Docker Compose файл из видео#
services: # Объявление всех сервисов (контейнеров), которыми управляет Docker Compose
zerobyte: # Имя сервиса (логическое имя контейнера)
image: ghcr.io/nicotsx/zerobyte:latest # Образ контейнера. Для проекта версии 0.x надежнее закрепить версию (например :v0.43), а не использовать latest
container_name: zerobyte # Явное имя контейнера для удобства управления (docker ps, логи и т.д.)
restart: unless-stopped # Автоматический рестарт контейнера при падении (кроме ручной остановки)
cap_add:
- SYS_ADMIN # Добавляет расширенные привилегии (нужно для FUSE и работы с удаленными шарами). Если бекапите локальные данные, закомментируйте строку
- SYS_PTRACE # Позволяет отслеживать процессы. В актуальном официальном примере этой строки нет
#ports:
# - "4096:4096" # Проброс порта наружу (не нужен, если используется Traefik)
devices:
- /dev/fuse:/dev/fuse # Проброс FUSE-устройства для работы с rclone/монтированием. Если бекапите локальные данные, закомментируйте строку
environment: # Переменные окружения для настройки приложения
- TZ=Europe/Moscow # Таймзона контейнера (важно для расписаний и логов)
- BASE_URL=https://zerobyte.stilicho.ru # Адрес, по которому вы открываете Zerobyte (от https:// зависят secure-cookies)
- APP_SECRET=<сгенерируйте_openssl_rand_-hex_32> # Секрет для шифрования чувствительных данных в базе (32+ символов, обязательно свой)
security_opt: # Ослабление механизмов безопасности контейнера
- seccomp:unconfined # Отключает seccomp профиль (разрешает больше системных вызовов). В актуальном официальном примере этой строки нет
- apparmor:unconfined # Отключает AppArmor профиль (снимает ограничения доступа). В актуальном официальном примере этой строки нет
volumes: # Монтирование директорий (данные и доступ к файлам)
- /etc/localtime:/etc/localtime:ro # Синхронизация времени с хостом (read-only)
- /home/stilicho/docker/zerobyte:/var/lib/zerobyte # Данные Zerobyte (конфиги, база, состояние)
- /home/stilicho/docker:/mydata # Директория с данными для бэкапа (источник volumes)
networks:
proxy: # Подключение к сети proxy (для работы с Traefik)
labels: # Метки для автоматической конфигурации Traefik
- "traefik.enable=true" # Включает обработку контейнера Traefik
- "traefik.http.routers.zerobyte.entrypoints=web" # HTTP вход (порт 80)
- "traefik.http.routers.zerobyte.rule=Host(`zerobyte.stilicho.ru`)" # Маршрутизация по домену
- "traefik.http.middlewares.zerobyte-https-redirect.redirectscheme.scheme=https" # Редирект HTTP → HTTPS
- "traefik.http.routers.zerobyte.middlewares=zerobyte-https-redirect" # Применение редиректа
- "traefik.http.routers.zerobyte-secure.entrypoints=websecure" # HTTPS вход (порт 443)
- "traefik.http.routers.zerobyte-secure.rule=Host(`zerobyte.stilicho.ru`)" # HTTPS правило маршрутизации
- "traefik.http.routers.zerobyte-secure.tls=true" # Включение TLS (HTTPS)
- "traefik.http.routers.zerobyte-secure.tls.certresolver=cloudflare" # Выпуск сертификата через Cloudflare
- "traefik.http.routers.zerobyte-secure.service=zerobyte" # Привязка к сервису
- "traefik.http.services.zerobyte.loadbalancer.server.port=4096" # Внутренний порт приложения в контейнере
- "traefik.docker.network=proxy" # Указание сети для Traefik
networks: # Объявление сетей
proxy: # Имя сети
external: true # Сеть уже создана (Docker Compose не будет ее создавать)Раздел cap_add и devices дают излишние права. Используйте их только в случае, если понимаете возможные последствия. Например, в моем случае без указанных параметров не было возможности подключиться к SMB-шаре на TrueNAS.
Несколько важных моментов по этому файлу (сверено с официальной документацией):
- APP_SECRET шифрует хранящиеся в базе Zerobyte секреты - доступы к хранилищам, пароли и т.п. Нужна случайная строка от 32 символов, сгенерировать ее можно командой
openssl rand -hex 32. Не копируйте значение из чужих примеров и держите его в.env, а не прямо в compose. - Права контейнера. В актуальном официальном примере для работы с удаленными шарами нужны только
cap_add: SYS_ADMINи/dev/fuse.SYS_PTRACEи отключение seccomp/AppArmor там не используются - если у вас все монтируется и без них, лучше их убрать. А если бэкапите только локальные папки, можно убрать иSYS_ADMINс/dev/fuse: документация описывает такой упрощенный вариант отдельно. - Не бэкапьте Zerobyte самим собой. В примере в
/mydataмонтируется вся папка/home/stilicho/docker, а внутри нее лежит и/home/stilicho/docker/zerobyte- база самого Zerobyte и локальные репозитории (/var/lib/zerobyte/repositories). Если выбрать/mydataцеликом, бэкап начнет копировать сам себя. Папкуzerobyteстоит исключить или выбирать в задании конкретные подпапки. /var/lib/zerobyteдолжен лежать на локальном диске. Документация прямо предупреждает: не указывайте для него сетевую шару - будут проблемы с правами и сильно упадет производительность.- Не выставляйте Zerobyte в интернет. Авторы проекта настоятельно не рекомендуют делать его доступным снаружи. Traefik здесь нужен для HTTPS и доступа по поддомену внутри своей сети, а не для публикации наружу.
Работа с приложением#
Приложение достаточно легковесное, образ быстро скачивается и так же быстро разворачивается.
После этого переходим по поддоменному имени, которое мы присвоили нашему приложению, в моем случае - это zerobyte.stilicho.ru.
Нас приветствует окно первичной регистрации, где мы должны задать значения логина и пароля администратора, указать адрес электронной почты и скачать recovery key для восстановления из резервной копии (в случае если такое потребуется).
Окно первоначальной регистрации

Окно для введения данных регистрации и опции для скачивания ключа восстановления

Recovery key - это файл restic.pass, то есть пароль restic, которым шифруются все репозитории, созданные в Zerobyte. Без него зашифрованные бэкапы не открыть. Храните его вне сервера, который бэкапите, например в менеджере паролей вроде Vaultwarden. Иначе ключ от сейфа окажется заперт в самом сейфе.
Нас приветствует приятный ретро интерфейс (угловатый, как мой Мерседес W124) в красно-черных тонах. Если вы ситх, а вдобавок еще и любитель ретро, то этот интерфейс вам очень понравится.

Так как в начале статьи есть ссылка на мой видеообзор, то с вашего позволения ниже я ограничусь кратким описанием меню.
Как я рассказывал в видео, пользователь должен настроить местоположение источника для бекапирования и целевой ресурс, куда будет осуществляться бекапирование.
Соответственно, раздел Volumes - это «что мы будем бекапировать и местоположение файлов».

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

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

В разделе Notifications мы с вами настраиваем, каким образом и с помощью чего мы хотим получать уведомления.

Ну и в самом низу настройки администрирования.

Восстановление данных#
Бэкап, из которого ни разу не пробовали восстановиться, - это не бэкап, а надежда. Поэтому коротко о том, как достать данные обратно.
Восстановление через интерфейс#
Восстановление запускается из раздела Backups:
- Открываем задание, в котором лежат нужные данные.
- Выбираем snapshot за нужную дату.
- В файловом браузере отмечаем нужные файлы или папки. Если ничего не отмечать, восстановится весь просматриваемый snapshot.
- Выбираем, куда восстанавливать: Original location (на исходное место) или Custom location (в другую папку).
- Указываем, что делать с уже существующими файлами, и нажимаем
Restore.
Помимо восстановления на сервер, есть кнопка Download - она скачивает выбранный файл или папку прямо в браузер. Удобно, когда нужно быстро вытащить один-два файла себе на компьютер.
Для Docker-сервисов надежнее восстанавливать не поверх рабочих файлов, а в отдельную папку (Custom location), проверить содержимое и уже потом переносить нужное. Это советует и сама документация Zerobyte. А если все-таки восстанавливаете на исходное место - сначала остановите контейнер, чьи файлы возвращаете, и убедитесь, что папка смонтирована в Zerobyte без :ro: бэкапить из read-only папки можно, а восстанавливать в нее - нет.
Если Zerobyte недоступен#
Здесь как раз выручает то, что Zerobyte - это надстройка над restic. Его репозитории - обычные репозитории restic, поэтому если сервер с Zerobyte умер, данные можно достать штатной утилитой restic с любой машины. Понадобятся только доступ к хранилищу и recovery key (restic.pass):
# список snapshot-ов в репозитории
restic -r /path/to/repository --password-file restic.pass snapshots
# восстановить последний snapshot в отдельную папку
restic -r /path/to/repository --password-file restic.pass restore latest --target /tmp/restoreДля S3, SFTP и других хранилищ вместо локального пути указывается адрес репозитория в формате restic (например, s3:... или sftp:...) и соответствующие доступы.
Проверка бэкапов#
Раз в какое-то время стоит делать пробное восстановление: взять пару папок, восстановить их в отдельное место и убедиться, что внутри то, что нужно. Это пара минут, которые однажды сэкономят очень много нервов.




