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