⚠️ Ce guide concerne une installation « classique » (non Docker) de Mastodon sur base Debian. Si vous utilisez une installation tournant sous Docker, je vous invite à consulter cette page dédiée : Maintenance Mastodon sous Docker.
Mastodon accumule divers types de données et de caches au fil du temps (images, médias, comptes distants, etc.). L’utilisation régulière des commandes tootctl est essentielle pour libérer de l’espace disque et maintenir la performance de votre instance.
Voici les commandes de base pour vider les différents niveaux de cache et supprimer les données obsolètes :
| Nettoyage | Commande tootctl |
Description |
|---|---|---|
| Vignettes en cache | tootctl cache clear |
Supprime les petites vignettes provenant d’autres serveurs. |
| Vieux médias | tootctl media remove |
Supprime les images/vidéos plus anciennes que la période de rétention. |
| Médias orphelins | tootctl media remove-orphans |
Supprime les fichiers médias qui ne sont plus liés à rien. |
| Comptes obsolètes | tootctl accounts prune |
Supprime les profils distants inactifs (lourd). |
| Statuts obsolètes | tootctl statuses remove |
Supprime les toots qui n’existent plus sur la fédération (très lourd). |
Ce script centralise les tâches de nettoyage pour votre installation bare-metal. Il peut vous envoyer une notification via Gotify s’il est configuré.
🔴 Vous n’utilisez pas Gotify ?
Laissez simplement les variablesGOTIFY_URLetGOTIFY_TOKENvides. Le script détectera l’absence de configuration et ignorera l’envoi des messages sans faire d’erreur.
mastodon-cleanup.sh#!/bin/bash
# Script de maintenance Mastodon (installation classique)
# Auteur : Amaury aka BlablaLinux
# --- PARAMÈTRES DE GOTIFY (Optionnel) ---
GOTIFY_URL=""
GOTIFY_TOKEN=""
# --- PARAMÈTRES DE MAINTENANCE ---
MASTODON_DIR="/var/www/mastodon/live"
RBENV_PATH="/opt/rbenv/versions/mastodon/bin"
LOGFILE="/var/log/mastodon-cleanup.log"
HOSTNAME=$(hostname)
DAYS_MEDIA=7
THREADS=4
# Redirection de toute la sortie vers le fichier journal
exec 1>>$LOGFILE 2>&1
# --- FONCTION DE NOTIFICATION GOTIFY ---
send_gotify_notification() {
if [ -n "$GOTIFY_URL" ] && [ -n "$GOTIFY_TOKEN" ]; then
local title="$1"
local message="$2"
local priority="$3"
curl -k -s -X POST "${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}" \
-F "title=${title}" \
-F "message=${message}" \
-F "priority=${priority}" > /dev/null 2>&1
fi
}
echo "======================================================"
echo "Début de la maintenance Mastodon sur $HOSTNAME : $(date)"
echo "======================================================"
cd $MASTODON_DIR || {
MSG="Erreur : dossier Mastodon introuvable."
echo "$MSG"
send_gotify_notification "❌ Mastodon Cleanup ÉCHEC" "$MSG sur $HOSTNAME." 8
exit 1
}
# 1. Nettoyage des médias et vignettes
echo "--- Étape 1 : Nettoyage des médias et vignettes ---"
sudo -u mastodon RAILS_ENV=production PATH=$RBENV_PATH bin/tootctl media remove --days=$DAYS_MEDIA --concurrency=$THREADS
sudo -u mastodon RAILS_ENV=production PATH=$RBENV_PATH bin/tootctl cache clear
# 2. Nettoyage des comptes et statuts
echo "--- Étape 2 : Nettoyage des comptes et statuts ---"
sudo -u mastodon RAILS_ENV=production PATH=$RBENV_PATH bin/tootctl accounts prune
sudo -u mastodon RAILS_ENV=production PATH=$RBENV_PATH bin/tootctl statuses remove
if [ $? -ne 0 ]; then
send_gotify_notification "⚠️ Mastodon Cleanup ALERTE" "Le nettoyage des statuts a rencontré une erreur sur $HOSTNAME." 5
fi
# 3. Optimisation de la mémoire RAM (Protection LXC)
echo "--- Étape 3 : Libération du cache RAM ---"
sync
if [ -w /proc/sys/vm/drop_caches ]; then
echo 3 > /proc/sys/vm/drop_caches
echo "Cache RAM libéré avec succès."
else
echo "Note : Droits insuffisants pour drop_caches (LXC), ignoré."
fi
echo "======================================================"
echo "Maintenance terminée : $(date)"
echo "======================================================"
# 4. Envoi de la notification de succès final
send_gotify_notification "✅ Mastodon Cleanup TERMINÉ" "La maintenance sur $HOSTNAME est terminée avec succès." 4
exit 0
chmod 700 /root/scripts/mastodon-cleanup.shcrontab -e) pour une exécution le dimanche à 3h00 :00 03 * * 0 /bin/bash /root/scripts/mastodon-cleanup.sh >> /var/log/mastodon-cleanup.log 2>&1
Optimisation de la mémoire : La commande drop_caches incluse dans le script permet de libérer les ressources mobilisées par PostgreSQL et Ruby. Si votre serveur est un conteneur LXC, le script gère automatiquement les restrictions de droits pour ne pas planter.
Stratégie hybride : Gardez les réglages de l’interface (Rétention du contenu) actifs avec des valeurs de sécurité (14 ou 30 jours) comme filet de sécurité si le script ne s’exécute pas.