182 lines
12 KiB
Markdown
182 lines
12 KiB
Markdown
---
|
|
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
|