Initial vault setup
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
---
|
||||
title: Duplicati
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, backups, deduplication, encryption, cloud, s3, b2, sftp, webdav, duplicati, snapshot, incremental, versionning, docker, csharp, lgpl]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Backups, https://github.com/duplicati/duplicati]
|
||||
---
|
||||
|
||||
# 💾 Duplicati
|
||||
|
||||
> **Le backup « grand public » self-hosted** : une interface web simple, un wizard de configuration, plus de 20 backends supportés, et un chiffrement AES-256 natif. Idéal pour un utilisateur qui veut *juste* que ça marche.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [duplicati.com](https://www.duplicati.com) |
|
||||
| **GitHub** | [duplicati/duplicati](https://github.com/duplicati/duplicati) |
|
||||
| **License** | LGPL-2.1 |
|
||||
| **Langage** | C# (Mono / .NET) |
|
||||
| **Étoiles GitHub** | 14,6k ⭐ |
|
||||
| **Dernière MAJ** | 2026-06-05 |
|
||||
| **Catégorie** | [[cat-backups|Backups]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**Duplicati** est un client de sauvegarde **multi-plateforme** (Windows, Linux, macOS) avec une **interface web intégrée**. Sa philosophie est radicalement opposée à celle de [[app-restic]] : là où restic est un outil CLI pur pensé pour des sysadmins, Duplicati vise explicitement **l'utilisateur domestique ou la PME** qui veut programmer des sauvegardes chiffrées vers le cloud **sans toucher au terminal**.
|
||||
|
||||
Le moteur de Duplicati implémente la déduplication **par bloc** (taille variable, par défaut 100 KB) couplée à un **chiffrement AES-256** côté client. Chaque sauvegarde est découpée en volumes (`dlist`, `dblock`, `dindex`) qui sont envoyés au backend, ce qui permet d'avoir des **incréments légers** : après le premier full, un ajout de quelques fichiers ne transfère que les nouveaux blocs. Le format de fichier est **spécifique à Duplicati** (ce n'est pas un format ouvert comme restic ou Kopia), ce qui signifie qu'on ne peut restaurer qu'avec Duplicati lui-même.
|
||||
|
||||
Le point fort historique de Duplicati, c'est **l'extraordinaire variété de backends** supportés : `S3`, `B2`, `Google Cloud Storage`, `Azure Blob`, `WebDAV`, `SFTP`, `SSH`, `FTP`, `OpenStack Object Storage / Swift`, `Rackspace Cloudfiles`, `OneDrive`, `Google Drive`, `Dropbox`, `Hubic`, `Box.com`, `Amazon Cloud Drive`, `S3-compatible` (Wasabi, MinIO, Scaleway, OVH…), et même `file://` pour un disque local. C'est l'un des rares outils où l'on peut changer de provider cloud **sans réécrire sa config**.
|
||||
|
||||
L'UI web, servie par défaut sur le port `8200`, propose un **wizard de configuration en 5 étapes** : on donne un nom, on choisit le backend, on saisit les credentials, on sélectionne les fichiers source, on fixe la planification, et c'est parti. C'est exactement la cible que vise Duplicati : **« backup en 5 minutes pour quelqu'un qui ne connaît rien à Linux »**.
|
||||
|
||||
Le revers de la médaille : Duplicati est écrit en **C# et tourne sur Mono** (anciennement) puis sur **.NET** (depuis la v2). Il a souffert pendant plusieurs années d'un **ralentissement de la cadence de release** et d'une équipe principale en sous-effectif. La v2 stable a longtemps tardé, et l'écosystème est moins dynamique que celui de [[app-restic]] ou [[app-kopia]]. Le projet reste **fonctionnel et maintenu**, mais il est raisonnable de le considérer comme **en perte de vitesse** par rapport à des alternatives plus modernes.
|
||||
|
||||
Comparé à ses principaux rivaux :
|
||||
- **vs [[app-restic]]** : restic est un outil CLI plus minimaliste, avec un format ouvert, plus rapide, plus léger (un seul binaire Go). Duplicati gagne sur l'UI web prête à l'emploi et la variété de backends.
|
||||
- **vs [[app-kopia]]** : Kopia est plus jeune, propose une UI **desktop** (pas web), un format de repo plus moderne, et une cadence de release plus soutenue. C'est aujourd'hui le principal challenger dans la même catégorie.
|
||||
- **vs [[app-duplicacy|Duplicacy]]** : Duplicacy mise sur une **déduplication globale multi-utilisateur** (lock-free) qui permet de mutualiser un backend entre plusieurs clients ; Duplicati est mono-tenant.
|
||||
|
||||
**Public cible** : **débutant à intermédiaire**. Parfait pour un homelab qui veut une UI web sans se battre avec un cron et un binaire CLI.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Option 1 : Docker Compose (recommandé)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
duplicati:
|
||||
image: lscr.io/linuxserver/duplicati:latest
|
||||
container_name: duplicati
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Paris
|
||||
- CLI_ARGS=
|
||||
volumes:
|
||||
- duplicati-config:/config
|
||||
- /mnt/data:/source/data:ro
|
||||
- /mnt/backups-local:/backups
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.duplicati.rule=Host(`duplicati.example.com`)"
|
||||
- "traefik.http.routers.duplicati.entrypoints=websecure"
|
||||
- "traefik.http.routers.duplicati.tls.certresolver=letsencrypt"
|
||||
|
||||
volumes:
|
||||
duplicati-config:
|
||||
```
|
||||
|
||||
> **Note** : l'image `linuxserver/duplicati` est recommandée car elle inclut Mono et toutes les dépendances système correctement configurées, là où l'image officielle `duplicati/duplicati` reste plus austère.
|
||||
|
||||
### Option 2 : Natif (Windows / Linux / macOS)
|
||||
|
||||
```bash
|
||||
# Linux : .deb / .rpm disponibles sur duplicati.com
|
||||
wget https://updates.duplicati.com/beta/duplicati_2.0.8.1-1_all.deb
|
||||
sudo dpkg -i duplicati_2.0.8.1-1_all.deb
|
||||
|
||||
# Ou en mode headless
|
||||
mono Duplicati.CommandLine.exe backup "sftp://user@host//path?auth-username=user&auth-password=pass" \
|
||||
/source/path --encryption-password="change-me"
|
||||
|
||||
# macOS / Windows : installer graphique depuis le site officiel
|
||||
```
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Accéder à l'UI web** sur `https://duplicati.example.com` (ou `http://IP:8200`).
|
||||
2. **Configurer un premier backup** via le wizard :
|
||||
- *General* : nom du backup, encryption passphrase (AES-256).
|
||||
- *Destination* : choix du backend (S3, B2, SFTP, local…) + credentials.
|
||||
- *Source data* : sélection du dossier à sauvegarder (avec ou sans filtres d'exclusion).
|
||||
- *Schedule* : planification (manuel, daily, weekly, custom cron).
|
||||
3. **Choisir la politique de rétention** : combien de versions garder, supprimer automatiquement les sauvegardes de plus de X jours/semaines/mois.
|
||||
4. **Tester un premier run** : bouton *Run now* et inspecter les logs (`Show log → Verbose`). Vérifier la taille transférée (au moins aussi grosse qu'attendu pour le premier, puis faible pour les incréments).
|
||||
5. **Activer les notifications** : onglet *Settings → Notifications* → e-mail, Sentry, ou webhook générique.
|
||||
6. **Tester une restauration** : onglet *Restore*, choisir une sauvegarde, sélectionner un sous-ensemble, et restaurer dans un dossier temporaire. Indispensable : un backup non testé n'est **pas** un backup.
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
|
||||
- [[app-restic]] — Standard CLI, format ouvert, plus rapide, plus moderne.
|
||||
- [[app-kopia]] — UI desktop + CLI, snapshot policies riches, format propriétaire moderne.
|
||||
- [[app-backrest]] — UI web *au-dessus* de restic, l'alternative moderne à Duplicati pour qui aime les UIs.
|
||||
- [[app-borg]] — Pour les backups locaux rapides, format fermé mais éprouvé.
|
||||
- **Bacula** — La référence entreprise, mais complexité bien supérieure (catalogue, directeur, storage daemon…).
|
||||
|
||||
### Comparaison des outils à UI web / desktop
|
||||
|
||||
| Critère | Duplicati | [[app-kopia]] | [[app-backrest]] | [[app-duplicacy]] |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| Interface | Web | Desktop (Win/macOS/Linux) | Web | CLI + GUI (payant) |
|
||||
| Multi-plateforme | ✅ | ✅ | ✅ | ✅ |
|
||||
| UI web self-hosted | ✅ | ❌ (desktop) | ✅ | ❌ |
|
||||
| Licence | LGPL-2.1 | Apache-2.0 | MIT | Custom (propriétaire) |
|
||||
| Cadence de release | Lente (en perte de vitesse) | Active | Active | Commercial |
|
||||
| Backends | 20+ | 8+ | Repos restic natifs | 10+ |
|
||||
| Format de repo | Spécifique Duplicati | Kopia (propriétaire) | = restic (ouvert) | Duplicacy (propriétaire) |
|
||||
|
||||
**Verdict** : Duplicati reste un **excellent choix si on veut une UI web prête à l'emploi** et qu'on ne veut pas apprendre la CLI. Pour un homelab neuf en 2026, on lui préférera souvent [[app-kopia]] (plus moderne, UI desktop) ou [[app-backrest]] (UI web *au-dessus* de restic, plus rapide).
|
||||
|
||||
### Propriétaires (ce que Duplicati remplace)
|
||||
|
||||
- **CrashPlan for Small Business** — Backup cloud illimité, ~10 $/mois/poste. E2E, mais fermé.
|
||||
- **Backblaze Personal** — 7 $/mois/poste, illimité, mais pas self-hosted.
|
||||
- **Carbonite Safe** — Backup cloud grand public, fermé.
|
||||
- **iDrive** — 60 $/an pour 5 To, multi-poste, mais chiffré côté serveur par défaut.
|
||||
- **Acronis True Image** — Référence, mais licence fermée et chère.
|
||||
|
||||
### Backends de stockage
|
||||
|
||||
| Service | Coût (~$ / To / mois) | Egress | Idéal pour |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **Backblaze B2** | 6 $ | 10 $ / To | Homelab, illimité en egress raisonnable |
|
||||
| **Wasabi** | 7 $ | 0 $ | Lecture fréquente, EU |
|
||||
| **Scaleway Object Storage** | 7,5 $ | 0,01 € / Go | EU, souverain |
|
||||
| **OVH Object Storage** | 7,2 € | trafic sortant | EU |
|
||||
| **Hetzner Storage Box** | ~3,5 € / To / mois (forfait) | 0 | EU, SMB |
|
||||
| **MinIO** (self-hosted) | Coût serveur | 0 $ | 100% on-prem |
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **Chiffrement AES-256 natif** : activé par défaut dans le wizard, protège chaque bloc avant envoi. Le mot de passe de chiffrement doit être stocké **séparément** (gestionnaire de mots de passe, KeePassXC, vault papier).
|
||||
- **Règle 3-2-1** : Duplicati ne fait pas la politique à votre place — c'est à l'utilisateur de prévoir **2 supports différents minimum** (ex. : B2 + disque USB local) et **1 copie offsite** (cloud ou autre site physique).
|
||||
- **Test de restauration régulier** : restaurer **manuellement** au moins un fichier arbitraire tous les 30 jours. Les backups non testés ne sont **pas** des backups. Penser aussi à tester la restauration sur une **machine neuve** (pas celle de production) pour valider que le moteur Duplicati + Mono + .NET est bien autoportant.
|
||||
- **Rançongiciels** : un Duplicati qui tourne en root sur le serveur de prod est une **cible de choix** pour chiffrer *et* les données *et* les backups. Idéalement :
|
||||
- Sur un serveur **dédié** aux backups, isolé du LAN principal (VLAN backups).
|
||||
- Avec les credentials S3 stockés dans un secret (Vault, Bitwarden) et non en clair dans l'UI.
|
||||
- Avec un **air-gap** : déconnecter le backend B2/S3 entre deux fenêtres de backup (ou utiliser un compte B2 avec MFA + IP allowlist).
|
||||
- **Vérification d'intégrité** : activer l'option `no-backend-verification=true` **non**, et activer `backup-test-samples=5` pour que Duplicati télécharge et vérifie aléatoirement des blocs après chaque run.
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Site officiel duplicati.com](https://www.duplicati.com)
|
||||
- [Documentation utilisateur](https://duplicati.readthedocs.io/)
|
||||
- [GitHub duplicati/duplicati](https://github.com/duplicati/duplicati)
|
||||
- [Forum officiel](https://forum.duplicati.com/)
|
||||
- [Wiki technique](https://github.com/duplicati/duplicati/wiki)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-backups]] — Catégorie Backups
|
||||
- [[strategie-backup-321]] — La règle 3-2-1 expliquée
|
||||
- [[app-restic]] — Concurrent CLI, format ouvert
|
||||
- [[app-kopia]] — Concurrent moderne, UI desktop
|
||||
- [[app-backrest]] — UI web moderne au-dessus de restic
|
||||
- [[app-duplicacy]] — Concurrent propriétaire avec dédup globale
|
||||
- [[app-borg]] — Concurrent pour backups locaux rapides
|
||||
- [[app-portainer]] — Visualiser les conteneurs
|
||||
- [[app-traefik]] — Reverse-proxy HTTPS
|
||||
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
|
||||
- [[glossaire-homelab]] — Définitions
|
||||
Reference in New Issue
Block a user