Disco - Ferramenta de Gerenciamento de Discourse Interativo com Notificações do Telegram

disco - Shell Interativo

Ferramenta de Gerenciamento Discourse com Notificações via Telegram

:information_source: Resumo Um wrapper de linha de comando para gerenciamento do Discourse com interface de menu interativa e notificações automáticas via Telegram para operações de manutenção
:hammer_and_wrench: Link do Repositório GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub
:open_book: Documentação Guia de Instalação · Início Rápido · Exemplos

:wave: Introdução

Olá, pessoal!

Quero compartilhar uma solução que criei enquanto gerenciava meu fórum da comunidade. Como muitos de vocês, tenho um grupo no Telegram para minha comunidade e estava constantemente recebendo perguntas sobre “O fórum está fora do ar?” ou “Quando a manutenção vai acabar?” sempre que precisava atualizar ou reiniciar o Discourse.

Para resolver isso (e facilitar minha vida), criei o disco - um wrapper de linha de comando para gerenciamento do Discourse que inclui notificações automáticas via Telegram e uma interface de menu interativa.


:dart: Que Problema Ele Resolve

  • Fim das perguntas “O fórum está fora do ar?” - notificações automáticas para seu grupo no Telegram
  • Gerenciamento simplificado - menu interativo em vez de memorizar comandos do launcher
  • Segurança em primeiro lugar - confirmações para operações perigosas (rebuild, stop, cleanup)
  • Melhor visibilidade - status em tempo real, logs e monitoramento de recursos
  • Solução de problemas mais rápida - todas as operações em um só lugar com saída clara

:sparkles: Recursos

:video_game: Interface de Menu Interativa

Execute disco sem argumentos para obter um menu numerado e bonito:

╔════════════════════════════════════════════════════════════╗
║  🚀 Discourse Manager v1.2.0                        ║
║  📦 Container: app | Status: 🟢 Running          ║
╚════════════════════════════════════════════════════════════╝

 1.  📊 Mostrar Status
 2.  🔄 Reiniciar Container
 3.  📝 Ver Logs (últimas 100 linhas)
 4.  📺 Monitor em Tempo Real
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 5.  🔧 Rebuild Completo (com atualizações) ⚠
 6.  ⚡ Rebuild Rápido
 7.  💾 Criar Backup
 8.  🧹 Limpar Recursos do Docker ⚠
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 9.  ▶️  Iniciar Container
10.  ⏸️  Parar Container ⚠
11.  🐚 Acessar Shell do Container
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12.  📥 Atualizar Launcher
13.  📱 Testar Notificações via Telegram
14.  ⚙️  Mostrar Configuração
15.  🔄 Atualizar disco
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 0.  ❌ Sair

Recursos:

  • Basta digitar um número (1-15) para selecionar a ação
  • Status do container em tempo real no cabeçalho
  • Avisos visuais (:warning:) para operações críticas
  • Confirmações de segurança - digite “sim” para confirmar ações perigosas
  • Detecção inteligente de sudo - avisa quando são necessários privilégios de root

:iphone: Notificações via Telegram

Notificações automáticas mantêm sua comunidade informada:

Quando o rebuild começa:

🔧 O fórum entrará em manutenção

⏱ Tempo estimado: ~10 minutos

Pedimos desculpas pelo inconveniente temporário.

Quando concluído:

✅ O fórum está de volta online!

⏱ Tempo de manutenção: 7m 57s
🔖 Versão: 3.2.0.beta4

Obrigado pela sua paciência! 🚀

Em caso de erros:

❌ Falha na atualização do fórum

⏱ Duração da tentativa: 3m 12s

⚠️ Atenção do administrador necessária!
Verifique os logs: disco logs

:bar_chart: Monitoramento e Diagnóstico

Visão Geral do Status:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Status do Discourse
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📦 Container: app
🟢 Status: Em execução
⏱  Tempo de atividade: 3 dias
🔖 Versão: 3.2.0.beta4
💻 CPU: 2.5%
🧠 Memória: 1.2GB / 4GB

Recursos:

  • Uso de CPU e memória em tempo real
  • Rastreamento do tempo de atividade do container
  • Detecção automática de versão via API
  • Monitoramento de logs em tempo real com modo de acompanhamento
  • Painel de monitoramento de recursos

:shield: Recursos de Segurança

  • Prompts de confirmação para operações críticas (rebuild, stop, cleanup)
  • Detecção de sudo - avisa quando são necessários privilégios
  • Exibição de versão - sempre saiba qual versão está em execução
  • Avisos detalhados - explica exatamente o que cada ação crítica fará

:zap: Operações Rápidas

Todas as operações padrão do Discourse disponíveis:

  • Gerenciamento de container - iniciar, parar, reiniciar, acessar shell
  • Manutenção - rebuild (completo/rápido), backup, limpeza
  • Monitoramento - status, logs, monitor de recursos em tempo real
  • Atualizações - atualizações do launcher com um único comando

:inbox_tray: Instalação

Instalação Rápida

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

# Verificar instalação
disco version

# Iniciar menu interativo
disco

:gear: Configuração

Configuração Básica

Crie um arquivo de configuração em um dos seguintes locais:

  • ~/.disco.env (recomendado)
  • /etc/disco/.env
  • Ao lado do script
# Copiar configuração de exemplo
curl -o ~/.disco.env https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/.env.example

# Editar configurações
nano ~/.disco.env

Exemplo de Configuração

# Configurações básicas
DISCOURSE_PATH=/var/discourse
CONFIG_NAME=app

# Notificações via Telegram (opcional)
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=-1001234567890
TELEGRAM_THREAD_ID=1

Configurando Notificações via Telegram

1. Criar um bot:

  • Envie uma mensagem para @BotFather no Telegram
  • Envie o comando /newbot
  • Siga as instruções
  • Salve o token do bot

2. Obter o Chat ID:

  • Envie qualquer mensagem para seu bot
  • Acesse: https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
  • Encontre "chat":{"id":...} na resposta

3. Obter o Thread ID (para grupos com tópicos):

  • Envie uma mensagem para o tópico desejado em seu grupo
  • Na resposta do getUpdates, encontre message_thread_id

4. Testar notificações:

disco test-telegram

:rocket: Uso

Menu Interativo (Recomendado)

# Iniciar menu interativo
disco

# Com sudo para ações administrativas
sudo disco

Basta digitar o número da ação que deseja realizar!

Modo de Linha de Comando

Para automação ou operações rápidas:

# Status e monitoramento
disco status                    # Mostrar status do container
disco logs                      # Ver últimas 100 linhas
disco logs 500                  # Ver últimas 500 linhas
disco monitor                   # Monitoramento de recursos em tempo real

# Gerenciamento de container
sudo disco start                # Iniciar container
sudo disco stop                 # Parar container
sudo disco restart              # Reiniciar container
disco enter                     # Acessar shell do container

# Manutenção
sudo disco rebuild              # Rebuild completo com atualizações
sudo disco fast-rebuild         # Rebuild rápido (sem atualização do launcher)
sudo disco backup               # Criar backup (nome automático)
sudo disco backup my-name       # Criar backup (nome personalizado)
sudo disco cleanup              # Limpar recursos do Docker

# Utilitários
sudo disco update-launcher      # Atualizar launcher do Discourse
disco test-telegram             # Testar notificações via Telegram
disco show-config               # Mostrar configuração do disco
disco version                   # Mostrar versão
disco help                      # Mostrar ajuda

:page_facing_up: Configurações

Nome Descrição Padrão Obrigatório
DISCOURSE_PATH Caminho para o diretório de instalação do Discourse /var/discourse Não
CONFIG_NAME Nome da configuração do container app Não
TELEGRAM_BOT_TOKEN Token do bot do Telegram do @BotFather - Não (para notificações)
TELEGRAM_CHAT_ID ID do chat ou grupo do Telegram para notificações - Não (para notificações)
TELEGRAM_THREAD_ID ID do thread em grupo com tópicos - Não (opcional)

:bulb: Casos de Uso

Gerente de Comunidade

  • Mantenha a comunidade informada durante a manutenção automaticamente
  • Fim das perguntas “o fórum está fora do ar?”
  • Notificações de manutenção profissionais

Administrador de Sistema

  • Menu interativo para tarefas ocasionais de gerenciamento
  • Confirmações de segurança previnem acidentes
  • Acesso rápido a logs e status

Equipes de DevOps

  • Modo CLI para automação e scripts
  • Operações consistentes entre membros da equipe
  • Integração fácil com sistemas de monitoramento

:chart_with_upwards_trend: Impacto no Mundo Real

Desde a implantação desta ferramenta:

  • :white_check_mark: Zero perguntas “o fórum está fora do ar?” em nosso grupo do Telegram
  • :white_check_mark: Operações de manutenção mais rápidas - sem troca de contexto entre terminal e mensagens
  • :white_check_mark: Menos erros durante atualizações - as confirmações de segurança funcionam!
  • :white_check_mark: Melhor monitoramento - acesso rápido a logs e uso de recursos

:books: Documentação


:heart: Por Que Criei Isso

Gerenciar o Discourse através do launcher padrão é poderoso, mas:

  • Os comandos são difíceis de memorizar
  • Não há sistema de notificação integrado para a comunidade
  • É fácil cometer erros com operações críticas
  • Membros da comunidade sempre perguntam sobre indisponibilidade

O disco envolve o launcher com uma interface amigável e mantém todos informados automaticamente.


:handshake: Contribuindo

Contribuições são bem-vindas! Se você tem ideias ou sugestões:

  1. Faça um fork do repositório
  2. Crie uma branch de funcionalidade
  3. Faça suas alterações
  4. Envie um Pull Request

Ou simplesmente abra uma issue com seu feedback!


:page_with_curl: Licença

Licença MIT - completamente gratuita para usar e modificar.



Repositório no GitHub: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub

2 curtidas