Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
---
title: Zerobyte
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, backups, deduplication, encryption, cloud, s3, b2, sftp, restic, web-ui, agpl, typescript, docker]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Backups, https://github.com/nicotsx/zerobyte]
---
# 💾 Zerobyte
> **Une UI web moderne et légère pour orchestrer [[app-restic]]** : interface réactive (Next.js), planification visuelle, support de multiples repos, et installation simplifiée. Le challenger direct de [[app-backrest]] avec une approche plus « app moderne ».
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | (GitHub) |
| **GitHub** | [nicotsx/zerobyte](https://github.com/nicotsx/zerobyte) |
| **License** | AGPL-3.0 |
| **Langage** | TypeScript (Next.js, React) + Go (intégration restic) |
| **Étoiles GitHub** | 6,5k ⭐ |
| **Dernière MAJ** | 2026-06-06 |
| **Catégorie** | [[cat-backups|Backups]] |
## 📝 Description
**Zerobyte** est un **orchestrateur web pour [[app-restic]]** : un peu comme [[app-backrest]], il fournit une **UI web self-hosted** pour gérer plusieurs repos restic, définir des plans de backup, et déclencher des restorations. Là où Backrest est un projet « personnel » d'un développeur solo (Gareth George), Zerobyte se veut une **plateforme plus complète** avec une UI plus soignée (Next.js + Tailwind) et une architecture pensée pour un usage multi-utilisateurs.
Fonctionnellement, Zerobyte permet :
- de **connecter un ou plusieurs repos** restic (S3, B2, SFTP, local, etc.),
- de définir des **schedules** (planification cron-like) par source,
- de déclencher des **backups à la demande** depuis l'UI,
- de **restaurer** des fichiers ou dossiers depuis n'importe quel snapshot,
- de gérer des **utilisateurs** (multi-tenants légers, authentification locale + support OIDC),
- d'afficher les **logs**, l'historique, l'espace consommé, et l'état de chaque run.
L'UI est plus moderne et plus réactive que celle de Backrest (Next.js avec React server components), avec une navigation par sidebar, des modales pour les actions, et un thème sombre par défaut. C'est l'un des points qui distingue Zerobyte : pour un usage « familial » ou un petit team, l'UX est plus agréable.
Côté technique, Zerobyte **embarque le binaire restic** (comme Backrest), donc :
- **100 % compatible** avec n'importe quel repo restic existant,
- même **chiffrement AES-256-CTR + Poly1305** (côté restic),
- même support de **tous les backends** restic,
- et **même principe de repo file** que vous pouvez continuer à manipuler en CLI en parallèle.
La **licence AGPL-3.0** est un point à noter : si vous voulez forker Zerobyte et le proposer en SaaS, l'AGPL vous y oblige (vs MIT pour Backrest). Pour un usage personnel / homelab, c'est sans incidence. Pour un produit commercial dérivé, c'est un frein.
Comparé à ses principaux rivaux :
- **vs [[app-backrest]]** : Backrest est plus mature, plus actif, plus simple. Zerobyte est plus moderne côté UI, plus axé multi-utilisateurs. Les deux couvrent 95 % le même usage.
- **vs [[app-kopia]]** : Kopia a sa propre UI desktop ; Zerobyte est web. Si vous tenez à l'UI web, Zerobyte (ou Backrest) > Kopia.
- **vs [[app-duplicati]]** : Duplicati a une UI web, mais un moteur différent (C# / .NET) en perte de vitesse, sans la maturité de restic en back-end.
- **vs [[app-borg-ui]]** : Borg UI est l'équivalent pour Borg.
**Public cible** : **intermédiaire**. Pour qui veut une UI web moderne au-dessus de restic, Zerobyte est une alternative sérieuse à Backrest. Le choix entre les deux se fait souvent sur des critères esthétiques et de licence (MIT vs AGPL).
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
zerobyte:
image: nicolasgodineau/zerobyte:latest
container_name: zerobyte
restart: unless-stopped
environment:
- NODE_ENV=production
- DATABASE_URL=file:/app/data/zerobyte.db
- AUTH_SECRET=${AUTH_SECRET} # openssl rand -base64 32
- NEXT_PUBLIC_APP_NAME=Zerobyte
- TZ=Europe/Paris
volumes:
- zerobyte-data:/app/data
- /mnt/source:/source:ro # adapter au chemin à sauvegarder
labels:
- "traefik.enable=true"
- "traefik.http.routers.zerobyte.rule=Host(`zerobyte.example.com`)"
- "traefik.http.routers.zerobyte.entrypoints=websecure"
- "traefik.http.routers.zerobyte.tls.certresolver=letsencrypt"
volumes:
zerobyte-data:
```
> **Note** : il n'est **pas nécessaire** d'exposer le socket Docker dans Zerobyte, contrairement à Backrest. Zerobyte n'exécute pas de hooks Docker par défaut ; il se contente de piloter restic.
### Option 2 : Bare-metal (Node.js + restic)
```bash
# Pré-requis : Node 20+, restic, sqlite3
curl -L https://github.com/nicotsx/zerobyte/releases/latest/download/zerobyte.tar.gz | tar -xz
cd zerobyte
npm ci --production
AUTH_SECRET=$(openssl rand -base64 32) node server.js
```
L'installation bare-metal est plus complexe ; l'option Docker est **clairement recommandée** pour un homelab.
## ⚙️ Configuration Initiale
1. **Accéder à l'UI** sur `https://zerobyte.example.com` (ou `http://IP:3000`).
2. **Créer un compte administrateur** lors du premier accès (Zerobyte gère nativement ses utilisateurs ; vous n'avez pas besoin d'un Authelia externe pour l'auth de base).
3. **Ajouter un repository** : *Repositories → Add* → choisir le backend (S3, B2, SFTP, Local…) → saisir l'URI, les credentials, le **mot de passe de chiffrement** du repo. Zerobyte le stocke dans sa base SQLite chiffrée.
4. **Définir un plan de backup** : *Plans → New* → sélectionner le repo + un ou plusieurs **chemins source** + une **planification cron**. Les politiques de rétention (keep-daily, keep-weekly, etc.) sont configurables.
5. **Premier run** : *Plans → Run Now* → suivre les logs. Vérifier la taille transférée et l'absence d'erreur.
6. **Tester une restauration** : onglet *Restore* → choisir une snapshot → sélectionner un fichier → restaurer. **Un backup non testé n'est pas un backup.**
## 🔄 Alternatives
### Open Source
- [[app-backrest]] — Le principal concurrent direct (MIT, plus mature).
- [[app-restic]] — Le moteur piloté par Zerobyte.
- [[app-kopia]] — Concurrent avec UI desktop intégrée.
- [[app-duplicati]] — Concurrent UI web, moteur différent et en perte de vitesse.
- [[app-borg-ui]] — Équivalent pour l'écosystème **Borg**.
### Comparaison Zerobyte vs concurrents directs
| Critère | Zerobyte | [[app-backrest]] | [[app-borg-ui]] | [[app-duplicati]] |
| :--- | :--- | :--- | :--- | :--- |
| Moteur | restic | restic | borg | Duplicati (C#) |
| UI | Web (Next.js) | Web (React) | Web | Web (C#/Mono) |
| Framework | Next.js | React | TypeScript | Mono |
| Multi-utilisateurs | ✅ (intégré) | ❌ (basicauth à mettre devant) | ❌ | ❌ |
| Auth intégrée | ✅ | ❌ | ❌ | ✅ (basique) |
| Hooks pre/post | ⚠️ basique | ✅ (Docker exec) | ⚠️ | ⚠️ |
| Prune policy | ✅ | ✅ (visuelle, plus riche) | ✅ | ✅ |
| Licence | AGPL-3.0 | MIT | MIT | LGPL-2.1 |
| Cadence de release | Active | Très active | Active | Lente |
**Verdict** : Zerobyte est une **bonne alternative à Backrest**, particulièrement si on veut une UI plus moderne et une gestion d'utilisateurs intégrée. Pour un homelab personnel mono-utilisateur, Backrest reste légèrement plus mature et plus simple (MIT, plus de recul). Pour un team ou un usage multi-utilisateurs, Zerobyte a un avantage.
### Propriétaires (ce que Zerobyte remplace)
- **Veeam Backup & Replication** — Standard entreprise VM, hors budget homelab.
- **Acronis Cyber Protect** — Commercial, fermé, ~80 $/an/poste.
- **MSP360 (CloudBerry)** — UI commerciale au-dessus de S3-compatibles.
- **Bacula Enterprise** — La référence open source entreprise, mais bien plus complexe.
- **Backblaze B2 + console web** — Suffisant pour de très petits usages, mais aucune orchestration.
## 🔐 Sécurité
- **Chiffrement AES-256-CTR + Poly1305** (côté restic) : Zerobyte **ne chiffre rien lui-même** — c'est restic qui chiffre le repo. La **clé de chiffrement** du repo est stockée dans la base SQLite de Zerobyte, qui est elle-même sur disque (chiffrez ce disque avec LUKS pour plus de sécurité).
- **Stockage des credentials** : Zerobyte stocke en base (chiffrée via la couche OS) les mots de passe de repos et les credentials cloud. Pour un attaquant qui aurait accès à la base, c'est équivalent à un accès root sur les repos. **Renforcez l'auth de l'UI** (mot de passe fort + 2FA si possible + IP allowlist).
- **Règle 3-2-1** : Zerobyte peut gérer **plusieurs plans vers plusieurs repos** (S3, B2, local, SFTP). Configurez au minimum :
- Un plan **local** (disque USB ou NAS) pour la copie primaire.
- Un plan **cloud** (B2 ou S3) pour la copie offsite.
- Optionnel : un plan vers un **HDD USB rotatif mensuel** (air-gapped contre les rançongiciels).
- **Test de restauration régulier** : onglet *Restore* → restaurer un fichier au moins une fois par mois. **Les backups non testés ne sont pas des backups.**
- **Clé du repo** : copier le mot de passe de chiffrement de chaque repo dans un gestionnaire indépendant (Bitwarden, KeePassXC) ou l'imprimer sur papier dans un coffre. **Sans lui, le repo est irrécupérable.**
- **Air-gapped backup** : un plan Zerobyte vers un disque USB monté dans `/mnt/usb-backup` (bind mount dans le conteneur) est une 3e copie air-gapped excellente contre les rançongiciels.
## 📚 Ressources
- [GitHub nicotsx/zerobyte](https://github.com/nicotsx/zerobyte)
- [Wiki et guides](https://github.com/nicotsx/zerobyte/wiki)
- [Releases](https://github.com/nicotsx/zerobyte/releases)
- [Démo en ligne](https://demo.zerobyte.app/) (si disponible)
## Pages Liées
- [[cat-backups]] — Catégorie Backups
- [[strategie-backup-321]] — La règle 3-2-1 expliquée
- [[app-restic]] — Le moteur piloté par Zerobyte
- [[app-backrest]] — Concurrent direct, plus mature (MIT)
- [[app-kopia]] — Concurrent avec UI desktop intégrée
- [[app-duplicati]] — Concurrent UI web, moteur différent
- [[app-borg]] + [[app-borg-ui]] — Équivalent pour Borg
- [[app-portainer]] — Visualiser les conteneurs
- [[app-traefik]] — Reverse-proxy HTTPS
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[glossaire-homelab]] — Définitions