Disco - Herramienta interactiva de gestión de Discourse Shell con notificaciones de Telegram

disco - Shell Interactiva

Herramienta de Gestión de Discourse con Notificaciones de Telegram

:information_source: Resumen Un envoltorio de línea de comandos para la gestión de Discourse con interfaz de menú interactiva y notificaciones automáticas de Telegram para operaciones de mantenimiento
:hammer_and_wrench: Enlace al Repositorio GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub
:open_book: Documentación Guía de Instalación · Inicio Rápido · Ejemplos

:wave: Introducción

¡Hola a todos!

Quiero compartir una solución que creé mientras gestionaba mi foro comunitario. Como muchos de ustedes, tengo un grupo de Telegram para mi comunidad y constantemente recibía preguntas sobre “¿El foro está caído?” o ¿Cuándo terminará el mantenimiento? cada vez que necesitaba actualizar o reiniciar Discourse.

Para resolver esto (y facilitarme la vida), creé disco: un envoltorio de línea de comandos para la gestión de Discourse que incluye notificaciones automáticas de Telegram y una interfaz de menú interactiva.


:dart: Qué Problema Resuelve

  • Adiós a las preguntas de “¿El foro está caído?” - notificaciones automáticas a tu grupo de Telegram
  • Gestión simplificada - menú interactivo en lugar de recordar comandos del lanzador
  • Seguridad ante todo - confirmaciones para operaciones peligrosas (reconstrucción, parada, limpieza)
  • Mejor visibilidad - estado en tiempo real, registros y monitoreo de recursos
  • Solución de problemas más rápida - todas las operaciones en un solo lugar con salida clara

:sparkles: Características

:video_game: Interfaz de Menú Interactivo

Ejecuta disco sin argumentos para obtener un hermoso menú numerado:

╔════════════════════════════════════════════════════════════╗
║  🚀 Discourse Manager v1.2.0                        ║
║  📦 Contenedor: app | Estado: 🟢 Ejecutándose          ║
╚════════════════════════════════════════════════════════════╝

 1.  📊 Mostrar Estado
 2.  🔄 Reiniciar Contenedor
 3.  📝 Ver Registros (últimas 100 líneas)
 4.  📺 Monitor en Vivo
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 5.  🔧 Reconstrucción Completa (con actualizaciones) ⚠
 6.  ⚡ Reconstrucción Rápida
 7.  💾 Crear Copia de Seguridad
 8.  🧹 Limpiar Recursos de Docker ⚠
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 9.  ▶️  Iniciar Contenedor
10.  ⏸️  Detener Contenedor ⚠
11.  🐚 Acceder a la Shell del Contenedor
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12.  📥 Actualizar Lanzador
13.  📱 Probar Notificaciones de Telegram
14.  ⚙️  Mostrar Configuración
15.  🔄 Actualizar disco
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 0.  ❌ Salir

Características:

  • Simplemente escribe un número (1-15) para seleccionar la acción
  • Estado del contenedor en tiempo real en el encabezado
  • Advertencias visuales (:warning:) para operaciones críticas
  • Confirmaciones de seguridad: escribe “sí” para confirmar acciones peligrosas
  • Detección inteligente de sudo: advierte cuando se necesitan privilegios de root

:iphone: Notificaciones de Telegram

Las notificaciones automáticas mantienen a tu comunidad informada:

Cuando comienza la reconstrucción:

🔧 El foro entrará en mantenimiento

⏱ Tiempo estimado: ~10 minutos

Pedimos disculpas por las molestias temporales.

Cuando se completa:

✅ ¡El foro está de nuevo en línea!

⏱ Tiempo de mantenimiento: 7m 57s
🔖 Versión: 3.2.0.beta4

¡Gracias por tu paciencia! 🚀

En caso de errores:

❌ Error en la actualización del foro

⏱ Duración del intento: 3m 12s

⚠️ ¡Se requiere atención del administrador!
Verifica los registros: disco logs

:bar_chart: Monitoreo y Diagnósticos

Resumen de Estado:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Estado de Discourse
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📦 Contenedor: app
🟢 Estado: Ejecutándose
⏱  Tiempo activo: 3 días
🔖 Versión: 3.2.0.beta4
💻 CPU: 2.5%
🧠 Memoria: 1.2GB / 4GB

Características:

  • Uso de CPU y memoria en tiempo real
  • Seguimiento del tiempo activo del contenedor
  • Detección automática de versión mediante API
  • Monitoreo en vivo de registros con modo seguimiento
  • Panel de monitoreo de recursos

:shield: Características de Seguridad

  • Preguntas de confirmación para operaciones críticas (reconstrucción, parada, limpieza)
  • Detección de sudo - advierte cuando se necesitan privilegios
  • Visualización de versión - siempre sabes qué versión se está ejecutando
  • Advertencias detalladas - explica exactamente qué hará cada acción crítica

:zap: Operaciones Rápidas

Todas las operaciones estándar de Discourse disponibles:

  • Gestión de contenedores - iniciar, detener, reiniciar, acceder a la shell
  • Mantenimiento - reconstrucción (completa/rápida), copia de seguridad, limpieza
  • Monitoreo - estado, registros, monitor de recursos en vivo
  • Actualizaciones - actualizaciones del lanzador con un solo comando

:inbox_tray: Instalación

Instalación Rápida

# Descargar e instalar
curl -o disco https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/disco
chmod +x disco
sudo mv disco /usr/local/bin/

# Verificar instalación
disco version

# Iniciar menú interactivo
disco

:gear: Configuración

Configuración Básica

Crea un archivo de configuración en una de estas ubicaciones:

  • ~/.disco.env (recomendado)
  • /etc/disco/.env
  • Junto al script
# Copiar configuración de ejemplo
curl -o ~/.disco.env https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/.env.example

# Editar configuraciones
nano ~/.disco.env

Ejemplo de Configuración

# Configuración básica
DISCOURSE_PATH=/var/discourse
CONFIG_NAME=app

# Notificaciones de Telegram (opcional)
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=-1001234567890
TELEGRAM_THREAD_ID=1

Configuración de Notificaciones de Telegram

1. Crea un bot:

  • Envía un mensaje a @BotFather en Telegram
  • Envía el comando /newbot
  • Sigue las instrucciones
  • Guarda el token del bot

2. Obtén el ID del Chat:

  • Envía cualquier mensaje a tu bot
  • Visita: https://api.telegram.org/bot<TU_TOKEN>/getUpdates
  • Busca "chat":{"id":...} en la respuesta

3. Obtén el ID del Hilo (para grupos con temas):

  • Envía un mensaje al tema deseado en tu grupo
  • En la respuesta de getUpdates, busca message_thread_id

4. Prueba las notificaciones:

disco test-telegram

:rocket: Uso

Menú Interactivo (Recomendado)

# Iniciar menú interactivo
disco

# Con sudo para acciones administrativas
sudo disco

¡Simplemente escribe el número de la acción que deseas realizar!

Modo de Línea de Comandos

Para automatización u operaciones rápidas:

# Estado y monitoreo
disco status                    # Mostrar estado del contenedor
disco logs                      # Ver últimas 100 líneas
disco logs 500                  # Ver últimas 500 líneas
disco monitor                   # Monitoreo de recursos en tiempo real

# Gestión de contenedores
sudo disco start                # Iniciar contenedor
sudo disco stop                 # Detener contenedor
sudo disco restart              # Reiniciar contenedor
disco enter                     # Acceder a la shell del contenedor

# Mantenimiento
sudo disco rebuild              # Reconstrucción completa con actualizaciones
sudo disco fast-rebuild         # Reconstrucción rápida (sin actualización del lanzador)
sudo disco backup               # Crear copia de seguridad (nombre automático)
sudo disco backup my-name       # Crear copia de seguridad (nombre personalizado)
sudo disco cleanup              # Limpiar recursos de Docker

# Utilidades
sudo disco update-launcher      # Actualizar lanzador de Discourse
disco test-telegram             # Probar notificaciones de Telegram
disco show-config               # Mostrar configuración de disco
disco version                   # Mostrar versión
disco help                      # Mostrar ayuda

:page_facing_up: Configuraciones

Nombre Descripción Valor por Defecto Requerido
DISCOURSE_PATH Ruta al directorio de instalación de Discourse /var/discourse No
CONFIG_NAME Nombre de configuración del contenedor app No
TELEGRAM_BOT_TOKEN Token del bot de Telegram de @BotFather - No (para notificaciones)
TELEGRAM_CHAT_ID ID de chat o grupo de Telegram para notificaciones - No (para notificaciones)
TELEGRAM_THREAD_ID ID de hilo en grupo con temas - No (opcional)

:bulb: Casos de Uso

Gestor de Comunidad

  • Mantén a la comunidad informada durante el mantenimiento automáticamente
  • Adiós a las preguntas de “¿el foro está caído?”
  • Notificaciones profesionales de mantenimiento

Administrador de Sistemas

  • Menú interactivo para tareas de gestión ocasionales
  • Confirmaciones de seguridad previenen accidentes
  • Acceso rápido a registros y estado

Equipos de DevOps

  • Modo CLI para automatización y scripts
  • Operaciones consistentes entre miembros del equipo
  • Integración sencilla con sistemas de monitoreo

:chart_with_upwards_trend: Impacto en el Mundo Real

Desde que implementamos esta herramienta:

  • :white_check_mark: Cero preguntas de “¿el foro está caído?” en nuestro grupo de Telegram
  • :white_check_mark: Operaciones de mantenimiento más rápidas - sin cambio de contexto entre terminal y mensajería
  • :white_check_mark: Menos errores durante actualizaciones - ¡las confirmaciones de seguridad funcionan!
  • :white_check_mark: Mejor monitoreo - acceso rápido a registros y uso de recursos

:books: Documentación


:heart: Por Qué Creé Esto

Gestionar Discourse a través del lanzador estándar es potente, pero:

  • Los comandos son difíciles de recordar
  • No hay sistema de notificaciones integrado para la comunidad
  • Es fácil cometer errores con operaciones críticas
  • Los miembros de la comunidad siempre preguntan sobre tiempos de inactividad

disco envuelve el lanzador con una interfaz amigable para el usuario y mantiene a todos informados automáticamente.


:handshake: Contribuciones

¡Las contribuciones son bienvenidas! Si tienes ideas o sugerencias:

  1. Haz un fork del repositorio
  2. Crea una rama de funcionalidad
  3. Realiza tus cambios
  4. Envía una Pull Request

O simplemente abre un issue con tus comentarios.


:page_with_curl: Licencia

Licencia MIT - completamente libre de usar y modificar.



Repositorio de GitHub: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub

2 Me gusta