disco - Shell Interactif Outil de Gestion Discourse avec Notifications Telegram
| Résumé | Un wrapper en ligne de commande pour la gestion de Discourse avec une interface de menu interactive et des notifications Telegram automatiques pour les opérations de maintenance | |
| Lien vers le dépôt | GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub | |
| Documentation | Guide d’installation · Démarrage rapide · Exemples |
Introduction
Salut à tous !
Je souhaite partager une solution que j’ai créée en gérant mon forum communautaire. Comme beaucoup d’entre vous, j’ai un groupe Telegram pour ma communauté, et je recevais constamment des questions du type « Le forum est-il hors ligne ? » ou « Quand la maintenance sera-t-elle terminée ? » chaque fois que je devais mettre à jour ou redémarrer Discourse.
Pour résoudre ce problème (et me simplifier la vie), j’ai développé disco – un wrapper en ligne de commande pour la gestion de Discourse intégrant des notifications Telegram automatiques et une interface de menu interactive.
Quel problème résout-il ?
- Plus de questions du type « Le forum est-il hors ligne ? » – notifications automatiques vers votre groupe Telegram
- Gestion simplifiée – menu interactif au lieu de devoir se souvenir des commandes du lanceur
- Sécurité avant tout – confirmations pour les opérations dangereuses (reconstruction, arrêt, nettoyage)
- Meilleure visibilité – statut en temps réel, journaux et surveillance des ressources
- Dépannage plus rapide – toutes les opérations au même endroit avec une sortie claire
Fonctionnalités
Interface de Menu Interactive
Lancez disco sans arguments pour obtenir un menu numéroté élégant :
╔════════════════════════════════════════════════════════════╗
║ 🚀 Discourse Manager v1.2.0 ║
║ 📦 Conteneur : app | Statut : 🟢 En cours ║
╚════════════════════════════════════════════════════════════╝
1. 📊 Afficher le statut
2. 🔄 Redémarrer le conteneur
3. 📝 Voir les journaux (100 dernières lignes)
4. 📺 Surveillance en direct
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. 🔧 Reconstruction complète (avec mises à jour) ⚠
6. ⚡ Reconstruction rapide
7. 💾 Créer une sauvegarde
8. 🧹 Nettoyer les ressources Docker ⚠
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
9. ▶️ Démarrer le conteneur
10. ⏸️ Arrêter le conteneur ⚠
11. 🐚 Accéder au shell du conteneur
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12. 📥 Mettre à jour le lanceur
13. 📱 Tester les notifications Telegram
14. ⚙️ Afficher la configuration
15. 🔄 Mettre à jour disco
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
0. ❌ Quitter
Fonctionnalités :
- Tapez simplement un chiffre (1 à 15) pour sélectionner une action
- Statut du conteneur en temps réel dans l’en-tête
- Avertissements visuels (
) pour les opérations critiques - Confirmations de sécurité – tapez « oui » pour confirmer les actions dangereuses
- Détection intelligente de sudo – avertit lorsque des privilèges root sont nécessaires
Notifications Telegram
Des notifications automatiques tiennent votre communauté informée :
Lors du début de la reconstruction :
🔧 Le forum passe en mode maintenance
⏱ Durée estimée : ~10 minutes
Nous nous excusons pour la gêne temporaire occasionnée.
À la fin :
✅ Le forum est de nouveau en ligne !
⏱ Durée de la maintenance : 7 min 57 s
🔖 Version : 3.2.0.beta4
Merci pour votre patience ! 🚀
En cas d’erreur :
❌ Échec de la mise à jour du forum
⏱ Durée de la tentative : 3 min 12 s
⚠️ Attention de l'administrateur requise !
Vérifiez les journaux : disco logs
Surveillance et Diagnostics
Aperçu du statut :
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Statut de Discourse
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 Conteneur : app
🟢 Statut : En cours
⏱ Durée d'exécution : 3 jours
🔖 Version : 3.2.0.beta4
💻 CPU : 2,5 %
🧠 Mémoire : 1,2 Go / 4 Go
Fonctionnalités :
- Utilisation du CPU et de la mémoire en temps réel
- Suivi de la durée d’exécution du conteneur
- Détection automatique de la version via l’API
- Surveillance en direct des journaux avec le mode suivi
- Tableau de bord de surveillance des ressources
Fonctionnalités de Sécurité
- Demandes de confirmation pour les opérations critiques (reconstruction, arrêt, nettoyage)
- Détection de sudo – avertissement lorsque des privilèges sont nécessaires
- Affichage de la version – toujours savoir quelle version est en cours d’exécution
- Avertissements détaillés – explique exactement ce que chaque action critique va faire
Opérations Rapides
Toutes les opérations standard de Discourse sont disponibles :
- Gestion des conteneurs – démarrer, arrêter, redémarrer, accéder au shell
- Maintenance – reconstruction (complète/rapide), sauvegarde, nettoyage
- Surveillance – statut, journaux, surveillance des ressources en direct
- Mises à jour – mises à jour du lanceur en une seule commande
Installation
Installation Rapide
# Télécharger et installer
curl -o disco https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/disco
chmod +x disco
sudo mv disco /usr/local/bin/
# Vérifier l'installation
disco version
# Lancer le menu interactif
disco
Configuration
Configuration de Base
Créez un fichier de configuration à l’un des emplacements suivants :
~/.disco.env(recommandé)/etc/disco/.env- À côté du script
# Copier la configuration d'exemple
curl -o ~/.disco.env https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/.env.example
# Modifier les paramètres
nano ~/.disco.env
Exemple de Configuration
# Paramètres de base
DISCOURSE_PATH=/var/discourse
CONFIG_NAME=app
# Notifications Telegram (optionnel)
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=-1001234567890
TELEGRAM_THREAD_ID=1
Configuration des Notifications Telegram
1. Créer un bot :
- Envoyez un message à @BotFather sur Telegram
- Envoyez la commande
/newbot - Suivez les instructions
- Enregistrez le token du bot
2. Obtenir l’ID du chat :
- Envoyez n’importe quel message à votre bot
- Visitez :
https://api.telegram.org/bot<VOTRE_TOKEN>/getUpdates - Trouvez
"chat":{"id":...}dans la réponse
3. Obtenir l’ID du thread (pour les groupes avec des sujets) :
- Envoyez un message au sujet souhaité dans votre groupe
- Dans la réponse de getUpdates, trouvez
message_thread_id
4. Tester les notifications :
disco test-telegram
Utilisation
Menu Interactif (Recommandé)
# Lancer le menu interactif
disco
# Avec sudo pour les actions administratives
sudo disco
Tapez simplement le numéro de l’action que vous souhaitez effectuer !
Mode Ligne de Commande
Pour l’automatisation ou les opérations rapides :
# Statut et surveillance
disco status # Afficher le statut du conteneur
disco logs # Voir les 100 dernières lignes
disco logs 500 # Voir les 500 dernières lignes
disco monitor # Surveillance des ressources en temps réel
# Gestion des conteneurs
sudo disco start # Démarrer le conteneur
sudo disco stop # Arrêter le conteneur
sudo disco restart # Redémarrer le conteneur
disco enter # Accéder au shell du conteneur
# Maintenance
sudo disco rebuild # Reconstruction complète avec mises à jour
sudo disco fast-rebuild # Reconstruction rapide (sans mise à jour du lanceur)
sudo disco backup # Créer une sauvegarde (nom automatique)
sudo disco backup my-name # Créer une sauvegarde (nom personnalisé)
sudo disco cleanup # Nettoyer les ressources Docker
# Utilitaires
sudo disco update-launcher # Mettre à jour le lanceur Discourse
disco test-telegram # Tester les notifications Telegram
disco show-config # Afficher la configuration de disco
disco version # Afficher la version
disco help # Afficher l'aide
Paramètres
| Nom | Description | Par défaut | Requis |
|---|---|---|---|
DISCOURSE_PATH |
Chemin vers le répertoire d’installation de Discourse | /var/discourse |
Non |
CONFIG_NAME |
Nom de la configuration du conteneur | app |
Non |
TELEGRAM_BOT_TOKEN |
Token du bot Telegram provenant de @BotFather | - | Non (pour les notifications) |
TELEGRAM_CHAT_ID |
ID du chat ou du groupe Telegram pour les notifications | - | Non (pour les notifications) |
TELEGRAM_THREAD_ID |
ID du thread dans un groupe avec des sujets | - | Non (optionnel) |
Cas d’Usage
Gestionnaire de Communauté
- Informer automatiquement la communauté pendant la maintenance
- Plus de questions du type « le forum est-il hors ligne ? »
- Notifications de maintenance professionnelles
Administrateur Système
- Menu interactif pour les tâches de gestion occasionnelles
- Les confirmations de sécurité préviennent les accidents
- Accès rapide aux journaux et au statut
Équipes DevOps
- Mode CLI pour l’automatisation et les scripts
- Opérations cohérentes entre les membres de l’équipe
- Intégration facile avec les systèmes de surveillance
Impact Réel
Depuis le déploiement de cet outil :
Zéro question du type « le forum est-il hors ligne ? » dans notre groupe Telegram
Opérations de maintenance plus rapides – plus de changement de contexte entre le terminal et la messagerie
Moins d’erreurs lors des mises à jour – les confirmations de sécurité fonctionnent !
Meilleure surveillance – accès rapide aux journaux et à l’utilisation des ressources
Documentation
- Guide d’installation – Instructions détaillées d’installation
- Guide de démarrage rapide – Commencez en 5 minutes
- Documentation des fonctionnalités – Explication des fonctionnalités du menu interactif
- Exemples d’utilisation – Flux de travail et scénarios réels
- Journal des modifications – Historique des versions
Pourquoi j’ai créé cela
La gestion de Discourse via le lanceur standard est puissante, mais :
- Les commandes sont difficiles à retenir
- Pas de système de notification intégré pour la communauté
- Risque d’erreurs avec les opérations critiques
- Les membres de la communauté posent toujours des questions sur les temps d’arrêt
disco enveloppe le lanceur avec une interface conviviale et tient tout le monde informé automatiquement.
Contribution
Les contributions sont les bienvenues ! Si vous avez des idées ou des suggestions :
- Forkez le dépôt
- Créez une branche de fonctionnalité
- Apportez vos modifications
- Soumettez une Pull Request
Ou simplement ouvrez un problème avec vos commentaires !
Licence
Licence MIT – entièrement gratuite à utiliser et à modifier.
Dépôt GitHub : GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub