5.5 KiB
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 prunemanuel toutes les 3 semaines, ça ne tient pas.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | (GitHub) |
| GitHub | anoniemerd/PruneMate |
| License | MIT |
| Langage | Go |
| Étoiles GitHub | 459 ⭐ |
| Dernière MAJ | 2026-04 |
| Catégorie | cat-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
# 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
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
- Choisir la politique de rétention : combien de temps garder les images inutilisées (
72h,7d,30d) - Lister les images protégées : bases de données, données critiques
- Décider des volumes :
PRUNE_VOLUMES=falserecommandé pour les débutants - Tester en dry-run :
DRY_RUN=truependant 1 semaine pour observer - Activer les notifications : webhook Discord ou email
- Surveiller l'espace disque :
df -h /var/lib/docker
🔄 Alternatives
Open Source
docker system prunenatif — 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=falsepar défaut - Testez en dry-run pendant au moins 1 semaine avant activation
📚 Ressources
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é