---
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
