Disco — инструмент управления дискурсом интерактивной оболочки с уведомлениями в Telegram

disco - Интерактивная оболочка: инструмент управления Discourse с уведомлениями в Telegram

:information_source: Краткое описание Оболочка командной строки для управления Discourse с интерактивным меню и автоматическими уведомлениями в Telegram при операциях технического обслуживания
:hammer_and_wrench: Ссылка на репозиторий GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub
:open_book: Документация Руководство по установке · Быстрый старт · Примеры

:wave: Введение

Всем привет!

Хочу поделиться решением, которое я создал во время управления своим форумом сообщества. Как и многие из вас, я использую Telegram-группу для своего сообщества, и мне постоянно приходилось отвечать на вопросы вроде «Форум упал?» или «Когда закончится техническое обслуживание?», всякий раз, когда мне нужно было обновить или перезапустить Discourse.

Чтобы решить эту проблему (и облегчить себе жизнь), я создал disco — оболочку командной строки для управления Discourse, которая включает автоматические уведомления в Telegram и интерактивное меню.


:dart: Какую проблему это решает

  • Больше никаких вопросов «Форум упал?» — автоматические уведомления в вашу Telegram-группу
  • Упрощённое управление — интерактивное меню вместо необходимости запоминать команды запуска
  • Безопасность прежде всего — подтверждения для опасных операций (пересборка, остановка, очистка)
  • Лучшая видимость — статус в реальном времени, логи и мониторинг ресурсов
  • Более быстрая диагностика — все операции в одном месте с понятным выводом

:sparkles: Возможности

:video_game: Интерактивное меню

Запустите disco без аргументов, чтобы получить красивое нумерованное меню:

╔════════════════════════════════════════════════════════════╗
║  🚀 Диспетчер Discourse v1.2.0                        ║
║  📦 Контейнер: app | Статус: 🟢 Запущен          ║
╚════════════════════════════════════════════════════════════╝

 1.  📊 Показать статус
 2.  🔄 Перезапустить контейнер
 3.  📝 Просмотр логов (последние 100 строк)
 4.  📺 Монитор в реальном времени
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 5.  🔧 Полная пересборка (с обновлениями) ⚠
 6.  ⚡ Быстрая пересборка
 7.  💾 Создать резервную копию
 8.  🧹 Очистить ресурсы Docker ⚠
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 9.  ▶️  Запустить контейнер
10.  ⏸️  Остановить контейнер ⚠
11.  🐚 Войти в оболочку контейнера
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12.  📥 Обновить лаунчер
13.  📱 Протестировать уведомления Telegram
14.  ⚙️  Показать конфигурацию
15.  🔄 Обновить disco
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 0.  ❌ Выход

Особенности:

  • Просто введите число (1–15) для выбора действия
  • Статус контейнера в реальном времени в заголовке
  • Визуальные предупреждения (:warning:) для критических операций
  • Подтверждения безопасности — введите «yes» для подтверждения опасных действий
  • Умное определение sudo — предупреждает, когда требуются права root

:iphone: Уведомления в Telegram

Автоматические уведомления держат ваше сообщество в курсе событий:

При начале пересборки:

🔧 Форум переходит в режим технического обслуживания

⏱ Ожидаемое время: ~10 минут

Приносим извинения за временные неудобства.

При завершении:

✅ Форум снова в сети!

⏱ Время обслуживания: 7 м 57 с
🔖 Версия: 3.2.0.beta4

Спасибо за ваше терпение! 🚀

При ошибках:

❌ Обновление форума не удалось

⏱ Длительность попытки: 3 м 12 с

⚠️ Требуется внимание администратора!
Проверьте логи: disco logs

:bar_chart: Мониторинг и диагностика

Обзор статуса:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Статус Discourse
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📦 Контейнер: app
🟢 Статус: Запущен
⏱  Время работы: 3 дня
🔖 Версия: 3.2.0.beta4
💻 CPU: 2.5%
🧠 Память: 1.2 ГБ / 4 ГБ

Особенности:

  • Использование CPU и памяти в реальном времени
  • Отслеживание времени работы контейнера
  • Автоматическое определение версии через API
  • Мониторинг логов в реальном времени с режимом follow
  • Панель мониторинга ресурсов

:shield: Функции безопасности

  • Запросы подтверждения для критических операций (пересборка, остановка, очистка)
  • Определение sudo — предупреждает, когда требуются привилегии
  • Отображение версии — всегда знаете, какая версия запущена
  • Подробные предупреждения — объясняет, что именно сделает каждое критическое действие

:zap: Быстрые операции

Все стандартные операции Discourse доступны:

  • Управление контейнером — запуск, остановка, перезапуск, вход в оболочку
  • Техническое обслуживание — пересборка (полная/быстрая), резервное копирование, очистка
  • Мониторинг — статус, логи, монитор ресурсов в реальном времени
  • Обновления — обновление лаунчера одной командой

:inbox_tray: Установка

Быстрая установка

# Загрузка и установка
curl -o disco https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/disco
chmod +x disco
sudo mv disco /usr/local/bin/

# Проверка установки
disco version

# Запуск интерактивного меню
disco

:gear: Конфигурация

Базовая настройка

Создайте файл конфигурации в одном из следующих мест:

  • ~/.disco.env (рекомендуется)
  • /etc/disco/.env
  • Рядом со скриптом
# Копирование примера конфигурации
curl -o ~/.disco.env https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/.env.example

# Редактирование настроек
nano ~/.disco.env

Пример конфигурации

# Базовые настройки
DISCOURSE_PATH=/var/discourse
CONFIG_NAME=app

# Уведомления Telegram (необязательно)
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
TELEGRAM_CHAT_ID=-1001234567890
TELEGRAM_THREAD_ID=1

Настройка уведомлений в Telegram

1. Создайте бота:

  • Напишите @BotFather в Telegram
  • Отправьте команду /newbot
  • Следуйте инструкциям
  • Сохраните токен бота

2. Получите Chat ID:

  • Отправьте любое сообщение вашему боту
  • Перейдите по адресу: https://api.telegram.org/bot<ВАШ_ТОКЕН>/getUpdates
  • Найдите "chat":{"id":...} в ответе

3. Получите Thread ID (для групп с темами):

  • Отправьте сообщение в нужную тему вашей группы
  • В ответе getUpdates найдите message_thread_id

4. Протестируйте уведомления:

disco test-telegram

:rocket: Использование

Интерактивное меню (рекомендуется)

# Запуск интерактивного меню
disco

# С sudo для административных действий
sudo disco

Просто введите номер действия, которое хотите выполнить!

Режим командной строки

Для автоматизации или быстрых операций:

# Статус и мониторинг
disco status                    # Показать статус контейнера
disco logs                      # Просмотр последних 100 строк
disco logs 500                  # Просмотр последних 500 строк
disco monitor                   # Мониторинг ресурсов в реальном времени

# Управление контейнером
sudo disco start                # Запуск контейнера
sudo disco stop                 # Остановка контейнера
sudo disco restart              # Перезапуск контейнера
disco enter                     # Вход в оболочку контейнера

# Техническое обслуживание
sudo disco rebuild              # Полная пересборка с обновлениями
sudo disco fast-rebuild         # Быстрая пересборка (без обновления лаунчера)
sudo disco backup               # Создание резервной копии (автоимя)
sudo disco backup my-name       # Создание резервной копии (пользовательское имя)
sudo disco cleanup              # Очистка ресурсов Docker

# Утилиты
sudo disco update-launcher      # Обновление лаунчера Discourse
disco test-telegram             # Тестирование уведомлений Telegram
disco show-config               # Показать конфигурацию disco
disco version                   # Показать версию
disco help                      # Показать справку

:page_facing_up: Настройки

Имя Описание По умолчанию Обязательно
DISCOURSE_PATH Путь к директории установки Discourse /var/discourse Нет
CONFIG_NAME Имя конфигурации контейнера app Нет
TELEGRAM_BOT_TOKEN Токен бота Telegram от @BotFather - Нет (для уведомлений)
TELEGRAM_CHAT_ID ID чата или группы Telegram для уведомлений - Нет (для уведомлений)
TELEGRAM_THREAD_ID ID потока в группе с темами - Нет (необязательно)

:bulb: Сценарии использования

Менеджер сообщества

  • Автоматически информируйте сообщество во время технического обслуживания
  • Больше никаких вопросов «Форум упал?»**
  • Профессиональные уведомления о техническом обслуживании

Системный администратор

  • Интерактивное меню для периодических задач управления
  • Подтверждения безопасности предотвращают ошибки
  • Быстрый доступ к логам и статусу

Команды DevOps

  • Режим CLI для автоматизации и скриптов
  • Последовательные операции среди членов команды
  • Простая интеграция с системами мониторинга

:chart_with_upwards_trend: Реальное влияние

После внедрения этого инструмента:

  • :white_check_mark: Нулевое количество вопросов «Форум упал?» в нашей Telegram-группе
  • :white_check_mark: Более быстрые операции обслуживания — отсутствие переключения контекста между терминалом и мессенджером
  • :white_check_mark: Меньше ошибок при обновлениях — подтверждения безопасности работают!
  • :white_check_mark: Лучший мониторинг — быстрый доступ к логам и использованию ресурсов

:books: Документация


:heart: Почему я создал это

Управление Discourse через стандартный лаунчер мощно, но:

  • Команды трудно запомнить
  • Нет встроенной системы уведомлений для сообщества
  • Легко ошибиться при критических операциях
  • Участники сообщества постоянно спрашивают о простоях

disco оборачивает лаунчер в удобный интерфейс и автоматически информирует всех.


:handshake: Вклад

Вклад приветствуется! Если у вас есть идеи или предложения:

  1. Форкните репозиторий
  2. Создайте ветку с новой функцией
  3. Внесите свои изменения
  4. Отправьте Pull Request

Или просто откройте задачу с вашим отзывом!


:page_with_curl: Лицензия

Лицензия MIT — полностью бесплатно для использования и модификации.



Репозиторий GitHub: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub

2 лайка