Initial vault setup
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user