Initial vault setup
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
---
|
||||
title: PruneMate
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, docker, maintenance, nettoyage, go, cron]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Docker, https://github.com/anoniemerd/PruneMate]
|
||||
---
|
||||
|
||||
# 🐳 PruneMate
|
||||
|
||||
> **Le gardien de l'espace disque** : nettoyez automatiquement images, volumes, réseaux et conteneurs inutilisés. Parce qu'un `docker system prune` manuel toutes les 3 semaines, ça ne tient pas.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | (GitHub) |
|
||||
| **GitHub** | [anoniemerd/PruneMate](https://github.com/anoniemerd/PruneMate) |
|
||||
| **License** | MIT |
|
||||
| **Langage** | Go |
|
||||
| **Étoiles GitHub** | 459 ⭐ |
|
||||
| **Dernière MAJ** | 2026-04 |
|
||||
| **Catégorie** | [[cat-docker\|Docker]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**PruneMate** est un **conteneur d'auto-nettoyage Docker**. Il exécute périodiquement `docker system prune` selon des **règles configurables** : garder les N dernières images d'un repo, ne pas toucher aux volumes de plus de X jours, ne supprimer que les dangling images, etc. C'est l'équivalent d'un `cron` intelligent pour le ménage Docker.
|
||||
|
||||
- ✅ **Planification** via cron interne (toutes les N heures)
|
||||
- ✅ **Politiques granulaires** : images, conteneurs, volumes, networks, build cache
|
||||
- ✅ **Mode dry-run** : simule sans rien supprimer
|
||||
- ✅ **Notifications** : rapport par email, Discord, Slack, webhook
|
||||
- ✅ **Whitelist de volumes** : protège les données critiques
|
||||
- ✅ **Whitelist d'images** : jamais supprimer `postgres:16`, etc.
|
||||
- ✅ **Statistiques** : espace libéré par run
|
||||
- ✅ **Logs détaillés** : pour audit
|
||||
- ✅ **API REST** pour déclenchement manuel
|
||||
- ✅ **Binaire Go** : image légère (~15 Mo)
|
||||
- ✅ **MIT** : auditable
|
||||
|
||||
**Public cible** : tout homelabber qui voit `/var/lib/docker` grossir inexorablement. Indispensable pour les setups avec **Watchtower** ou [[app-diun]] qui tirent fréquemment de nouvelles images.
|
||||
|
||||
**Différence avec `docker system prune`** : PruneMate **automatise** et **granularise** : vous choisissez ce qui est safe à supprimer, il s'occupe du reste. Fini les `cron` artisanaux.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Docker Compose
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
prunemate:
|
||||
image: ghcr.io/anoniemerd/prunemate:latest
|
||||
container_name: prunemate
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- CRON_SCHEDULE=0 3 * * * # tous les jours à 3h du matin
|
||||
- DRY_RUN=false
|
||||
- PRUNE_IMAGES_UNTIL=72h
|
||||
- PRUNE_VOLUMES=false # ne pas toucher aux volumes
|
||||
- PRUNE_CONTAINERS=true
|
||||
- PROTECTED_IMAGES=postgres:16,redis:7
|
||||
- WEBHOOK_URL=https://discord.com/api/webhooks/*** volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- prunemate-data:/data
|
||||
|
||||
volumes:
|
||||
prunemate-data:
|
||||
```
|
||||
|
||||
### Docker run
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name prunemate \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock:ro \
|
||||
-e CRON_SCHEDULE="0 3 * * *" \
|
||||
-e PRUNE_IMAGES_UNTIL=72h \
|
||||
ghcr.io/anoniemerd/prunemate:latest
|
||||
```
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Choisir la politique de rétention** : combien de temps garder les images inutilisées (`72h`, `7d`, `30d`)
|
||||
2. **Lister les images protégées** : bases de données, données critiques
|
||||
3. **Décider des volumes** : `PRUNE_VOLUMES=false` recommandé pour les débutants
|
||||
4. **Tester en dry-run** : `DRY_RUN=true` pendant 1 semaine pour observer
|
||||
5. **Activer les notifications** : webhook Discord ou email
|
||||
6. **Surveiller l'espace disque** : `df -h /var/lib/docker`
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
|
||||
- **`docker system prune`** natif — Manuel, pas de scheduling
|
||||
- [[app-cup]] — Inclut un mode prune
|
||||
- **Watchtower** — Notifications de MAJ, pas de nettoyage
|
||||
- **Docker Cron** — Scripts artisanaux équivalents
|
||||
- **Portainer** — Bouton prune dans l'UI, pas d'automatisation
|
||||
|
||||
### Comparaison PruneMate vs alternatives
|
||||
|
||||
| Critère | PruneMate | docker prune | Watchtower | Cup |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| Automatisation | ✅ (cron) | ❌ (manuel) | ✅ | ✅ |
|
||||
| Granularité | ✅ | ❌ | ❌ | ❌ |
|
||||
| Whitelist | ✅ | ❌ | ❌ | ❌ |
|
||||
| Notifications | ✅ | ❌ | ✅ | ✅ |
|
||||
| Dry-run | ✅ | ❌ | ❌ | ❌ |
|
||||
| UI web | ❌ (logs) | ❌ | ❌ | ✅ |
|
||||
| Update auto | ❌ | ❌ | ✅ | ✅ |
|
||||
|
||||
**Verdict** : PruneMate complète parfaitement [[app-watchtower]] / [[app-cup]] : l'un met à jour, l'autre nettoie. À installer en **binôme**.
|
||||
|
||||
### Propriétaires (ce que PruneMate remplace)
|
||||
|
||||
- **Scripts cron artisanaux** — Qui finissent par casser
|
||||
- **Nettoyages manuels** — Oubliés, donc pas faits
|
||||
- **Solutions SaaS** — Aucun équivalent direct
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- ⚠️ **Le socket Docker = root sur l'hôte** : PruneMate ne supprime **que** ce que vous avez autorisé, mais un bug ou un compte compromis pourrait supprimer plus. **Montez le socket en `:ro`** (lecture seule) si possible
|
||||
- **Whitelist obligatoire** pour les images critiques : base de données, système, sauvegarde
|
||||
- **Volume prune = perte de données** : laissez `PRUNE_VOLUMES=false` par défaut
|
||||
- **Testez en dry-run** pendant au moins 1 semaine avant activation
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [GitHub anoniemerd/PruneMate](https://github.com/anoniemerd/PruneMate)
|
||||
- [Docker prune reference](https://docs.docker.com/engine/reference/commandline/system_prune/)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-docker]] — Catégorie Docker
|
||||
- [[app-portainer]] — Runtime Docker
|
||||
- [[app-dockge]] — Compose manager
|
||||
- [[app-yacht]] — Templates Docker
|
||||
- [[app-traefik]] — Reverse proxy
|
||||
- [[recettes-docker-compose]] — Stacks
|
||||
- [[securisation-home-lab]] — Sécurité
|
||||
Reference in New Issue
Block a user