Disco - Outil de gestion de shell interactif avec notifications Telegram

disco - Shell Interactif Outil de Gestion Discourse avec Notifications Telegram

:information_source: 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
:hammer_and_wrench: Lien vers le dépôt GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub
:open_book: Documentation Guide d’installation · Démarrage rapide · Exemples

:wave: 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.


:dart: 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

:sparkles: Fonctionnalités

:video_game: 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 (:warning:) 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

:iphone: 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

:bar_chart: 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

:shield: 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

:zap: 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

:inbox_tray: 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

:gear: 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

:rocket: 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

:page_facing_up: 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)

:bulb: 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

:chart_with_upwards_trend: Impact Réel

Depuis le déploiement de cet outil :

  • :white_check_mark: Zéro question du type « le forum est-il hors ligne ? » dans notre groupe Telegram
  • :white_check_mark: Opérations de maintenance plus rapides – plus de changement de contexte entre le terminal et la messagerie
  • :white_check_mark: Moins d’erreurs lors des mises à jour – les confirmations de sécurité fonctionnent !
  • :white_check_mark: Meilleure surveillance – accès rapide aux journaux et à l’utilisation des ressources

:books: Documentation


:heart: 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.


:handshake: Contribution

Les contributions sont les bienvenues ! Si vous avez des idées ou des suggestions :

  1. Forkez le dépôt
  2. Créez une branche de fonctionnalité
  3. Apportez vos modifications
  4. Soumettez une Pull Request

Ou simplement ouvrez un problème avec vos commentaires !


:page_with_curl: 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

2 « J'aime »