12 KiB
title: Backrest created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, backups, deduplication, encryption, cloud, s3, b2, sftp, restic, orchestrateur, web-ui, prune, docker, go, mit] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Backups, https://github.com/garethgeorge/backrest]
💾 Backrest
L'UI web moderne qui transforme app-restic en produit utilisable : orchestration multi-repos, planification visuelle, prune policy centralisée, et visualisation des restores. Le compagnon idéal pour les sysadmins qui aiment restic mais qui ne supportent plus sa CLI.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | (GitHub) |
| GitHub | garethgeorge/backrest |
| License | MIT |
| Langage | Go (frontend TypeScript) |
| Étoiles GitHub | 6,5k ⭐ |
| Dernière MAJ | 2026-06-06 |
| Catégorie | [[cat-backups |
📝 Description
Backrest est une interface web et un orchestrateur pour app-restic. C'est l'un des projets qui répond à la question « comment puis-je gérer mes dizaines de repos restic sans écrire un script bash par source ? ».
Le principe est simple : Backrest n'est pas un moteur de backup en soi — il pilote restic à travers une UI web. Concrètement, Backrest :
- embarque le binaire restic (donc compatible avec n'importe quel repo restic existant),
- expose une UI web pour définir des repositories (un repo par backend : S3, B2, SFTP, local…),
- définit des plans qui associent un repo, une liste de chemins à sauvegarder, une planification (cron-like), des hooks pre/post (pour faire un
pg_dumpavant la backup par exemple), et des politiques de prune (garder 7 daily, 4 weekly, 6 monthly…), - affiche les logs de chaque exécution, l'historique des snapshots, l'espace utilisé,
- permet de restaurer interactivement (fichier, dossier, ou snapshot complète) avec prévisualisation du contenu avant de valider.
Pour qui a connu la galère de gérer 10 cron tab différents pour 10 repos restic, Backrest est une vraie libération. Le tout en MIT, développé par Gareth George, maintenu activement.
Les politiques de prune dans Backrest sont bien plus ergonomiques qu'en CLI restic : on coche des cases pour « garder 7 daily, 4 weekly, 6 monthly, 3 yearly » et Backrest traduit ça en restic forget --keep-daily=7 --keep-weekly=4 --keep-monthly=6 --keep-yearly=3 --prune. On peut aussi définir des tags de snapshot (par exemple daily, weekly, monthly) et avoir des politiques de rétention indépendantes par tag, ce qui est très puissant pour des rétentions métier (garder 30 snapshots monthly mais seulement 7 daily).
Backrest supporte nativement tous les backends de restic : local, S3, S3-compatible (Wasabi, MinIO, Scaleway, OVH, B2, etc.), B2, SFTP, S3-with-credential-helpers, et plus généralement tout ce que restic init -r <backend> accepte. Si vous avez déjà un repo restic en CLI, vous pouvez le brancher à Backrest sans rien ré-importer — Backrest est un consommateur du format, pas un concurrent.
Comparé à ses principaux rivaux :
- vs app-restic seul (CLI) : Backrest est restic avec une UI. Aucune perte de fonctionnalité, juste du confort.
- vs app-kopia : Kopia a sa propre UI, mais desktop (pas web self-hosted). Si on veut une UI web dans le navigateur, Backrest est aujourd'hui le choix naturel pour l'écosystème restic.
- vs app-duplicati : Duplicati a une UI web, mais son moteur est en C#/.NET/Mono, en perte de vitesse, avec un format propriétaire et un écosystème plus restreint. Backrest s'appuie sur restic, plus rapide, format plus simple, plus actif.
- vs app-borg-ui : Borg UI est l'équivalent pour Borg ; Backrest est l'équivalent pour restic.
Public cible : intermédiaire à avancé. Pour les admins qui ont déjà (ou vont avoir) plusieurs repos restic, Backrest est l'orchestrateur qui rend l'ensemble utilisable au quotidien.
🚀 Installation
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
backrest:
image: garethgeorge/backrest:latest
container_name: backrest
restart: unless-stopped
environment:
- BACKREST_DATA=/data
- BACKREST_PORT=9898
- TZ=Europe/Paris
- XDG_CONFIG_HOME=/data/config
volumes:
- backrest-data:/data
- /var/run/docker.sock:/var/run/docker.sock # pour les hooks Docker
- /mnt/source:/source:ro # adapter au chemin sauvegardé
labels:
- "traefik.enable=true"
- "traefik.http.routers.backrest.rule=Host(`backrest.example.com`)"
- "traefik.http.routers.backrest.entrypoints=websecure"
- "traefik.http.routers.backrest.tls.certresolver=letsencrypt"
- "traefik.http.routers.backrest.middlewares=backrest-auth"
- "traefik.http.middlewares.backrest-auth.basicauth.users=admin:$$apr1$$xyz..."
volumes:
backrest-data:
Note Traefik : par défaut Backrest n'a pas d'authentification web. Il est fortement recommandé de mettre un
basicauth(ou mieux, un SSO via Authelia/Authentik) devant l'UI, car Backrest contient les credentials de tous vos repos et les mots de passe de chiffrement en clair dans sa config (c'est un choix de design assumé pour permettre l'automatisation des backups).
Option 2 : Binaire natif (auto-hébergé)
# Télécharger depuis GitHub Releases
wget https://github.com/garethgeorge/backrest/releases/download/v1.7.0/backrest_Linux_x86_64.tar.gz
tar -xzf backrest_Linux_x86_64.tar.gz
sudo mv backrest /usr/local/bin/
# Lancer en service
sudo useradd -r -s /bin/false backrest
sudo mkdir -p /var/lib/backrest
sudo chown backrest:backrest /var/lib/backrest
# Créer /etc/systemd/system/backrest.service
cat <<EOF | sudo tee /etc/systemd/system/backrest.service
[Unit]
Description=Backrest - Restic Web UI
After=network.target
[Service]
Type=simple
User=backrest
ExecStart=/usr/local/bin/backrest
Environment=BACKREST_DATA=/var/lib/backrest
Environment=BACKREST_PORT=9898
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now backrest
⚙️ Configuration Initiale
- Accéder à l'UI sur
https://backrest.example.com(ouhttp://IP:9898). - Créer un premier repository : Repositories → Add Repository → choisir le type (Local, S3, B2, SFTP…) → saisir :
- l'URI du repo (ex.
s3:s3.eu-west-3.backblazeb2.com/kopia-bucket/repo), - les credentials (access key, secret),
- le mot de passe de chiffrement du repo (c'est le mot de passe de votre repo restic, à saisir une seule fois pour permettre les opérations automatiques).
- l'URI du repo (ex.
- Créer un plan de backup : Plans → Add Plan → associer le repo, saisir la liste des chemins à sauvegarder, configurer la planification (cron), et surtout les politiques de prune (garder 7 daily, 4 weekly, 6 monthly, 3 yearly est un bon défaut).
- Configurer des hooks (optionnel) : onglet Hooks du plan. Exemple : avant chaque backup Postgres, exécuter
pg_dump -Fc mydb > /tmp/mydb.dumpdans un conteneurpostgres:16. Très puissant pour sauvegarder des bases de données de manière consistante. - Premier run : bouton Run Now sur le plan → inspecter les logs. Vérifier que la taille transférée est conforme à l'attendu.
- Tester la restauration : onglet Restore sur une snapshot → naviguer dans l'arborescence → restaurer un fichier test. Un backup non testé n'est pas un backup.
🔄 Alternatives
Open Source
- app-restic — Le moteur sous-jacent ; Backrest n'est qu'une UI au-dessus.
- app-kopia — Concurrent avec UI desktop (pas web), pas de repo partagé.
- app-duplicati — Concurrent UI web self-hosted, mais moteur différent et en perte de vitesse.
- app-borg-ui — Équivalent de Backrest pour l'écosystème Borg au lieu de restic.
- app-borg-backup-server — Orchestrateur Borg, plus ancien et moins actif.
- Resticweb / restic-browser — Outils tiers pour explorer un repo restic en lecture seule, sans orchestration.
Comparaison des orchestrateurs / UIs de backup
| Critère | Backrest | app-borg-ui | app-duplicati | app-kopia (UI Desktop) |
|---|---|---|---|---|
| Moteur | restic | borg | Duplicati (C#) | Kopia (Go) |
| UI | Web | Web | Web | Desktop |
| Multi-repos | ✅ | ✅ | ✅ | ✅ |
| Hooks pre/post | ✅ | ⚠️ basique | ⚠️ (scripts) | ⚠️ basique |
| Prune policy visuelle | ✅ | ✅ | ✅ | ✅ |
| Restore interactif | ✅ | ✅ | ✅ | ✅ |
| Licence | MIT | MIT | LGPL-2.1 | Apache-2.0 |
| Open source | ✅ | ✅ | ✅ | ✅ |
| Auth web intégrée | ❌ (via proxy) | ❌ (via proxy) | ❌ (basique) | N/A (desktop) |
| Cadence de release | Très active | Active | Lente | Très active |
Verdict : Backrest est le meilleur orchestrateur pour restic en 2026. Si vous utilisez restic et que vous avez plus de 2-3 repos, Backrest change la vie.
Propriétaires (ce que Backrest remplace)
- Veeam Backup & Replication — Standard entreprise VM, mais hors budget homelab.
- Acronis Cyber Protect — Commercial, ~80 $/an/poste, fermé.
- Carbonite Server Backup — Commercial, ~100 $/serveur/an.
- Backblaze B2 + CloudBerry (MSP360) — Backend B2 + UI commerciale.
- CrashPlan for Small Business — ~10 $/mois/poste, E2E, fermé.
🔐 Sécurité
- Chiffrement AES-256-CTR + Poly1305 (côté restic) : Backrest ne chiffre rien lui-même — il pilote restic. Le chiffrement est appliqué par restic sur le repo, comme si vous lanciez
restic backupà la main. - Stockage des credentials : Backrest stocke en clair dans sa config les mots de passe des repos et les credentials cloud. C'est volontaire (pour automatiser les opérations), mais cela signifie que :
- Le fichier de config Backrest (
/data/config/...) doit être chiffré au repos (LUKS sur le disque, par exemple). - L'accès à l'UI doit être protégé par une auth forte (basicauth + IP allowlist, ou Authelia/Authentik via Traefik).
- Ne jamais exposer l'UI Backrest directement sur Internet sans SSO devant.
- Le fichier de config Backrest (
- Règle 3-2-1 : Backrest peut gérer plusieurs repos simultanément (un repo S3, un repo local, un repo B2…) ; configurez 2-3 plans vers 2-3 backends différents pour respecter la règle 3-2-1. Idéalement un plan vers B2 (offsite cloud), un plan vers un disque USB local (air-gapped), un plan vers un NAS du LAN.
- Test de restauration régulier : Backrest a un onglet Restore — utilisez-le au moins mensuellement pour vérifier qu'une restauration arbitraire fonctionne. Les backups non testés ne sont pas des backups.
- Clé/mot de passe du repo : le mot de passe de chiffrement de chaque repo restic est saisi une seule fois dans Backrest (sinon l'automatisation est impossible). Copier ce mot de passe dans un gestionnaire de mots de passe indépendant (Bitwarden, KeePassXC) ou imprimez-le sur papier dans un coffre. Sans lui, le repo est irrécupérable.
- Air-gapped backup : un plan Backrest vers un disque USB local monté dans le conteneur (bind mount) est un excellent moyen d'avoir un 3e backup air-gapped (hors-ligne la plupart du temps, branché uniquement pendant le run de backup).
📚 Ressources
- GitHub garethgeorge/backrest
- Documentation officielle
- Wiki / guides
- Releases et changelogs
- Démo en ligne
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 Backrest
- app-borg — Concurrent avec app-borg-ui comme UI
- app-kopia — Concurrent avec UI desktop intégrée
- app-duplicati — Concurrent UI web, moteur différent
- app-borg-ui — Équivalent pour Borg
- app-portainer — Visualiser les conteneurs
- app-traefik — Reverse-proxy HTTPS + auth
- securisation-home-lab — Bonnes pratiques de sécurité
- glossaire-homelab — Définitions