disco - Shell Interactiva
Herramienta de Gestión de Discourse con Notificaciones de Telegram
| 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 | |
| Enlace al Repositorio | GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub | |
| Documentación | Guía de Instalación · Inicio Rápido · Ejemplos |
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.
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
Características
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 (
) 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
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
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
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
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
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
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
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
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) |
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
Impacto en el Mundo Real
Desde que implementamos esta herramienta:
Cero preguntas de “¿el foro está caído?” en nuestro grupo de Telegram
Operaciones de mantenimiento más rápidas - sin cambio de contexto entre terminal y mensajería
Menos errores durante actualizaciones - ¡las confirmaciones de seguridad funcionan!
Mejor monitoreo - acceso rápido a registros y uso de recursos
Documentación
- Guía de Instalación - Instrucciones detalladas de instalación
- Guía de Inicio Rápido - Comienza en 5 minutos
- Documentación de Características - Características del menú interactivo explicadas
- Ejemplos de Uso - Flujos de trabajo y escenarios del mundo real
- Registro de Cambios - Historial de versiones
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.
Contribuciones
¡Las contribuciones son bienvenidas! Si tienes ideas o sugerencias:
- Haz un fork del repositorio
- Crea una rama de funcionalidad
- Realiza tus cambios
- Envía una Pull Request
O simplemente abre un issue con tus comentarios.
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