Skip to main content
  1. Posts/
  2. Self-Hosting/

Zerobyte - Backup Automation for Self-Hosted Infrastructure

·1612 words·8 mins· loading · loading · ·
Stilicho2011
Author
Stilicho2011
Writing about homelab, self-hosting, automation and open-source solutions
Table of Contents
Backup - This article is part of a series.
Part : This Article
Note

If you enjoyed this article, you can support the author by becoming a sponsor on Boosty.

Zerobyte: backup automation for Homelab
#

Backups are one of the key responsibilities of any infrastructure.
In a home Homelab or self-hosted environment, it’s important to have a system that:

  • runs backups automatically
  • supports encryption
  • can work with cloud storage
  • has a convenient management interface

That’s exactly the job Zerobyte does.

In this article, we’ll cover:

  • what Zerobyte is
  • how to install it via Docker
  • how to configure your first backup
  • how to restore data

What is Zerobyte
#

Zerobyte is a backup automation tool that helps store data across various storage backends. Built on top of Restic, it provides a modern web interface for scheduling, managing, and monitoring encrypted backups of your remote storage.

Warning

Zerobyte is still at version 0.x.x and can change significantly from version to version. The project is under active development.

After I released a video about the best new apps of 2025, where I talked about Zerobyte among others, I got a lot of messages asking why I didn’t cover one solution or another. According to whoever’s asking, the app they personally use is always the best one out there :) Below, I’ve tried to put together a table comparing the features of the most popular solutions.

Zerobyte’s features:

  • Automatic backup with encryption, compression, and retention policies, implemented via Restic
  • Flexible scheduling for automatic backup jobs, with fine-grained retention policy tuning
  • End-to-end encryption, protecting data at every stage
  • Support for multiple protocols: backups from NFS, SMB, WebDAV, SFTP, or local directories

This makes Zerobyte a convenient alternative to solutions like:


Comparison of popular backup solutions#

Backup toolWeb UIEncryptionDeduplicationDocker
Duplicati
Kopia
BorgBackup
Zerobyte

Duplicati vs ZeroByte - comparing backup systems
#

Since in the previous article I talked about Duplicati, let’s take a closer look and compare Duplicati with today’s subject.

Duplicati and ZeroByte are backup solutions aimed at self-hosted infrastructure and home labs. Both tools offer a web interface, automation, and support for remote storage, but they take different architectural approaches.

Duplicati is a self-contained backup system with its own engine.

ZeroByte is a web interface and backup job manager built on top of the restic backup engine.


Quick comparison table
#

CriteriaDuplicatiZeroByte
Solution typeSelf-contained backup systemBackup manager
Backup engineOwnRestic
ArchitectureMonolithic applicationWeb UI + restic backend
InterfaceWeb UI + CLIWeb UI
EncryptionAES-256Restic’s built-in encryption
DeduplicationBlock-level deduplicationRestic’s deduplication
Incremental backupsYesYes
CompressionYesYes
File versioningYesYes
File restoreYesYes
Task schedulerYesYes
Cloud storage supportYesVia restic or rclone
Local storageYesYes
S3 supportYesYes
WebDAV supportYesYes
SFTP supportYesYes
rclone supportNoYes
Multiple job managementYesYes
Snapshot controlYesYes
Logging and monitoringYesYes
Open sourceYesYes
Project maturityHighNew project
Ease of installationVery simpleSimple
Configuration flexibilityMediumHigh

Solution architecture
#

Duplicati
#

Duplicati is a fully self-contained backup system.
The app includes:

  • a backup engine
  • a web interface
  • a scheduling system
  • cloud storage support
  • a deduplication mechanism
  • encryption

Thanks to this, Duplicati can be installed as a single app and used right away to create backups.


ZeroByte
#

ZeroByte works differently. It’s a management interface for restic, a popular backup engine.

ZeroByte adds:

  • a web management panel
  • backup job creation
  • schedule management
  • snapshot browsing
  • file restore
  • centralized management of multiple repositories

Essentially, ZeroByte acts as a management panel for restic-based infrastructure.


Supported storage
#

Duplicati
#

Duplicati supports a large number of cloud services:

  • Amazon S3
  • Backblaze B2
  • Google Drive
  • OneDrive
  • Dropbox
  • WebDAV
  • SFTP
  • local disks
  • NAS

ZeroByte
#

ZeroByte relies on restic’s capabilities and can work with:

  • S3-compatible storage
  • local repositories
  • SFTP
  • WebDAV
  • NAS
  • an rclone backend

This makes ZeroByte convenient for more complex infrastructures. In principle, Zerobyte can do everything Duplicati can, but thanks to rclone support it integrates with a much wider range of cloud storage providers.


Main advantages
#

Advantages of Duplicati
#

  • very simple installation
  • a ready-made backup system
  • supports the most common cloud storage providers
  • a mature, well-known project
  • a convenient web interface

Duplicati is a great fit for:

  • home servers
  • NAS
  • personal backups
  • small homelab infrastructures

Advantages of ZeroByte
#

  • modern architecture
  • built on the reliable restic backup engine
  • rclone storage support
  • flexible repository handling
  • convenient snapshot management

ZeroByte is better suited for:

  • advanced homelabs
  • infrastructures with multiple backup jobs
  • restic users

When to choose Duplicati
#

Choose Duplicati if:

  • you need a simple backup system
  • fast setup matters
  • you need support for popular cloud services
  • your infrastructure is small

Duplicati is a good choice for most home servers.


When to choose ZeroByte
#

Choose ZeroByte if:

  • you already use restic
  • you need a more flexible backup system architecture
  • you need rclone backend support
  • you have multiple backup repositories

Duplicati vs ZeroByte comparison summary
#

ToolBest suited for
DuplicatiSimple, fast backups for a home server
ZeroByteManaging restic-based backups and more flexible infrastructures

Both tools are open source and can be used in a self-hosted environment. The choice comes down to whether you want a ready-made backup client (Duplicati) or a restic-based backup infrastructure manager (ZeroByte).

Main features of the Zerobyte web interface
#

Web interface
#

Zerobyte offers a modern web management panel, through which you can:

  • create backup jobs
  • run backups manually
  • track status
  • restore files

Using Restic
#

Under the hood, Zerobyte uses Restic, which gives you:

  • deduplication
  • encryption
  • incremental backups
  • support for many storage backends

Supported storage
#

Backups can be stored in:

  • S3
  • Backblaze B2
  • SFTP
  • local disk
  • NAS
  • WebDAV

Docker Compose file from the video
#

services: # Объявление всех сервисов (контейнеров), которыми управляет Docker Compose
  zerobyte: # Имя сервиса (логическое имя контейнера)
    image: ghcr.io/nicotsx/zerobyte:latest # Образ контейнера с фиксированной версией (лучше, чем 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 # Публичный URL доступа к Zerobyte (используется в UI и OAuth)
      - APP_SECRET=240728b5d3d99fc4c233964e9836a2acf341fae4f72544d1a2051acc1339923d # Секрет приложения (обязательно уникальный, для безопасности)
    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.service=zerobyte" # Привязка к сервису
      - "traefik.http.services.zerobyte.loadbalancer.server.port=4096" # Внутренний порт приложения в контейнере
      - "traefik.docker.network=proxy" # Указание сети для Traefik

networks: # Объявление сетей
  proxy: # Имя сети
    external: true # Сеть уже создана (Docker Compose не будет её создавать)
Warning

The cap_add and devices sections grant excessive privileges. Only use them if you understand the possible consequences. For example, in my case, without these parameters I wasn’t able to connect to an SMB share on TrueNAS.


Working with the app
#

The app is fairly lightweight — the image downloads quickly and spins up just as fast. After that, we go to the subdomain we assigned to our app, in my case zerobyte.stilicho.ru.

We’re greeted by an initial registration screen, where we need to set an admin login and password, provide an email address, and download a recovery key for restoring from a backup (in case that’s ever needed).

Initial registration screen

Rule for accessing the WebGUI (port 8006)

Screen for entering registration details and the option to download the recovery key

Rule for accessing the WebGUI (port 8006)

We’re greeted by a pleasant retro interface (angular, like my Mercedes W124) in red and black tones. If you’re a Sith and also a fan of retro design, you’ll love this interface.

Rule for accessing the WebGUI (port 8006)

Since there’s a link to my video review at the beginning of the article, if you don’t mind I’ll keep the rest of this description brief.

As I explained in the video, the user needs to configure the source location for backups and the destination resource where the backups will be sent.

So the Volumes section is “what we’re going to back up and where the files are located”

Rule for accessing the WebGUI (port 8006)

The Repositories section handles configuring the destination resource where we back everything up to

Rule for accessing the WebGUI (port 8006)

The Backups section lets us fine-tune the backup jobs, including, but not limited to: when and at what time to start the backup process, how many copies to keep, and so on.

Rule for accessing the WebGUI (port 8006)

In the Notification section, we configure how and through what channel we want to receive notifications.

Rule for accessing the WebGUI (port 8006)

And down at the bottom, the administration settings.

Rule for accessing the WebGUI (port 8006)
Backup - This article is part of a series.
Part : This Article

Related

Connecting applications to a shared PostgreSQL and learning basic maintenance. Part 2

·1929 words·10 mins· loading · loading
The second part of the series on a shared PostgreSQL for a home server. We create a dedicated, minimally privileged user and database in pgAdmin for a specific application, connect Authentik to the shared database instead of its own container, and cover basic maintenance - VACUUM, ANALYZE, REINDEX, and when you actually need to do any of this by hand.