--- title: Tugtainer created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, docker, backup, restauration, go, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Docker, https://github.com/Quenary/tugtainer] --- # 🐳 Tugtainer > **Les backups automatisés de vos conteneurs, sans douleur** : Tugtainer détecte vos bases de données dans les conteneurs (Postgres, MySQL, MariaDB, Mongo, Redis…), lance un dump, et l'envoie vers un stockage distant. Le tout avec une GUI web claire. ## 📋 Informations Générales | Champ | Valeur | | :--- | :--- | | **Site web** | (GitHub) | | **GitHub** | [Quenary/tugtainer](https://github.com/Quenary/tugtainer) | | **License** | MIT | | **Langage** | Go | | **Étoiles GitHub** | 1456 ⭐ | | **Dernière MAJ** | 2026-06-01 | | **Catégorie** | [[cat-docker\|Docker]] | ## 📝 Description **Tugtainer** (prononcer « tug-tai-ner ») est un **gestionnaire de backups automatisés pour conteneurs Docker**. Il inspecte chaque conteneur en cours d'exécution, identifie le moteur de base de données utilisé (PostgreSQL, MySQL, MariaDB, MongoDB, Redis, SQLite…), et programme des dumps selon un calendrier configurable. L'idée : éviter d'écrire un script `docker exec pg_dump …` par service. Tugtainer centralise, planifie, et envoie les dumps vers du stockage distant (S3, SFTP, WebDAV, local…). - ✅ **Détection automatique** des DB engines (PostgreSQL, MySQL, MariaDB, Mongo, Redis, SQLite) - ✅ **Planification cron-like** : fréquence, heure, conservation (rétention) - ✅ **Backends de stockage** : local, S3 (et compatible : Minio, Backblaze B2), SFTP, WebDAV - ✅ **Compression et chiffrement** : gzip/zstd + chiffrement age ou GPG - ✅ **Restauration en un clic** depuis l'UI - ✅ **Notifications** : Discord, Telegram, Ntfy, Gotify, Slack, email - ✅ **GUI web claire** : dashboard des conteneurs, dernier backup, taille, état - ✅ **Mode multi-hôte** : superviser plusieurs daemons Docker distants **Tugtainer vs [[app-docker-volume-backup]]** : Tugtainer est *spécifique aux bases de données* (il fait des dumps cohérents, pas juste un tar du volume). Tugtainer vs `cron + docker exec` : Tugtainer ajoute la planification, la rotation, la notification et la restauration UI. Tugtainer vs **BorgBackup / Restic** : Borg/Restic sont *génériques* ; Tugtainer est *spécialisé DB* (meilleure restauration granulaire). ## 🚀 Installation ### Docker Compose (recommandé) ```yaml # docker-compose.yml version: '3.8' services: tugtainer: image: ghcr.io/quenary/tugtainer:latest container_name: tugtainer restart: unless-stopped ports: - "8123:8080" # Web UI volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - tugtainer-data:/data - ./backups:/backups # stockage local des dumps environment: - TZ=Europe/Paris - TT_PORT=8080 - TT_DATA_DIR=/data - TT_BACKUP_DIR=/backups labels: - "traefik.enable=true" - "traefik.http.routers.tugtainer.rule=Host(`backups.example.com`)" - "traefik.http.routers.tugtainer.entrypoints=websecure" - "traefik.http.routers.tugtainer.tls.certresolver=letsencrypt" volumes: tugtainer-data: ``` ### Exemple de backup S3 ```yaml environment: - TT_S3_BUCKET=homelab-backups - TT_S3_ENDPOINT=https://s3.fr-par.scw.cloud - TT_S3_ACCESS_KEY=xxx - TT_S3_SECRET_KEY=xxx ``` ## ⚙️ Configuration Initiale 1. **Monter le socket Docker en `ro`** : Tugtainer doit inspecter les conteneurs, pas les modifier 2. **Créer le dossier de stockage** local `./backups` et le monter en volume 3. **Accéder à l'UI** : `http://IP:8123`, créer le compte admin 4. **Détecter les conteneurs** : Tugtainer scanne et liste les DB détectées (Postgres, MySQL…) 5. **Configurer un schedule** pour chaque conteneur (ex : quotidien à 3h, rétention 7 jours) 6. **Ajouter un canal de notification** (Discord webhook, Ntfy…) pour être alerté en cas d'échec 7. **Tester un backup manuel** depuis l'UI, puis tenter une restauration ## 🔄 Alternatives ### Open Source - [[app-docker-volume-backup|docker-volume-backup]] — backup de volumes entiers (pas de dump DB cohérent) - **BorgBackup / Restic** — backups génériques, déduplication, chiffrement - **autobackup** / **postgres-backup** — images mono-services - **Kopia** — alternative moderne à Restic - **Duplicati** — GUI web, multi-backend ### Comparaison Tugtainer vs alternatives | Critère | Tugtainer | docker-volume-backup | Restic | BorgBackup | | :--- | :--- | :--- | :--- | :--- | | Dump DB cohérent | ✅ | ❌ (snapshot FS) | ❌ | ❌ | | Multi-DB auto | ✅ | ❌ (1 service) | ❌ (script) | ❌ (script) | | GUI web | ✅ | ❌ (logs) | ⚠️ (via GUI tierce) | ⚠️ (Vorta) | | Stockage S3 | ✅ | ✅ | ✅ | ✅ (via rclone) | | Restauration granulaire | ✅ | ❌ (volume entier) | ✅ (fichier) | ✅ (archive) | | Setup | 5 min | 5 min | 30 min | 30 min | **Verdict** : Tugtainer est **la solution idéale pour des bases Docker** quand on veut de la simplicité. Pour des données critiques, combiner avec **Restic** pour une copie off-site chiffrée. ### Propriétaires (ce que Tugtainer remplace) - **CloudBerry Backup** (payant) - **Acronis Cyber Protect** (payant, lourd) - **SnapShooter** (payant, orienté cloud) ## 🔐 Sécurité - ⚠️ **Socket Docker monté** : limiter à `ro` et, idéalement, passer par [[app-docker-socket-proxy-docker|docker-socket-proxy]] filtré - **Chiffrer les backups** : activer le chiffrement `age` ou GPG avant envoi sur S3 — un dump Postgres contient des données personnelles - **Credentials DB** : Tugtainer lit les variables d'env des conteneurs (ex : `POSTGRES_PASSWORD`). Ne pas exposer Tugtainer sur Internet sans auth forte - **Test de restauration régulier** : un backup non testé n'est pas un backup ## 📚 Ressources - [GitHub Quenary/tugtainer](https://github.com/Quenary/tugtainer) - [Documentation](https://github.com/Quenary/tugtainer#readme) ## Pages Liées - [[cat-docker]] — Catégorie Docker - [[app-portainer]] / [[app-dockge]] / [[app-yacht]] — GUI Docker - [[app-traefik]] — Reverse-proxy - [[recettes-docker-compose]] — Compose files - [[securisation-home-lab]] — Bonnes pratiques