disco - Интерактивная оболочка: инструмент управления Discourse с уведомлениями в Telegram
| Краткое описание | Оболочка командной строки для управления Discourse с интерактивным меню и автоматическими уведомлениями в Telegram при операциях технического обслуживания | |
| Ссылка на репозиторий | GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub | |
| Документация | Руководство по установке · Быстрый старт · Примеры |
Введение
Всем привет!
Хочу поделиться решением, которое я создал во время управления своим форумом сообщества. Как и многие из вас, я использую Telegram-группу для своего сообщества, и мне постоянно приходилось отвечать на вопросы вроде «Форум упал?» или «Когда закончится техническое обслуживание?», всякий раз, когда мне нужно было обновить или перезапустить Discourse.
Чтобы решить эту проблему (и облегчить себе жизнь), я создал disco — оболочку командной строки для управления Discourse, которая включает автоматические уведомления в Telegram и интерактивное меню.
Какую проблему это решает
- Больше никаких вопросов «Форум упал?» — автоматические уведомления в вашу Telegram-группу
- Упрощённое управление — интерактивное меню вместо необходимости запоминать команды запуска
- Безопасность прежде всего — подтверждения для опасных операций (пересборка, остановка, очистка)
- Лучшая видимость — статус в реальном времени, логи и мониторинг ресурсов
- Более быстрая диагностика — все операции в одном месте с понятным выводом
Возможности
Интерактивное меню
Запустите 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) для выбора действия
- Статус контейнера в реальном времени в заголовке
- Визуальные предупреждения (
) для критических операций - Подтверждения безопасности — введите «yes» для подтверждения опасных действий
- Умное определение sudo — предупреждает, когда требуются права root
Уведомления в Telegram
Автоматические уведомления держат ваше сообщество в курсе событий:
При начале пересборки:
🔧 Форум переходит в режим технического обслуживания
⏱ Ожидаемое время: ~10 минут
Приносим извинения за временные неудобства.
При завершении:
✅ Форум снова в сети!
⏱ Время обслуживания: 7 м 57 с
🔖 Версия: 3.2.0.beta4
Спасибо за ваше терпение! 🚀
При ошибках:
❌ Обновление форума не удалось
⏱ Длительность попытки: 3 м 12 с
⚠️ Требуется внимание администратора!
Проверьте логи: disco logs
Мониторинг и диагностика
Обзор статуса:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Статус Discourse
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 Контейнер: app
🟢 Статус: Запущен
⏱ Время работы: 3 дня
🔖 Версия: 3.2.0.beta4
💻 CPU: 2.5%
🧠 Память: 1.2 ГБ / 4 ГБ
Особенности:
- Использование CPU и памяти в реальном времени
- Отслеживание времени работы контейнера
- Автоматическое определение версии через API
- Мониторинг логов в реальном времени с режимом follow
- Панель мониторинга ресурсов
Функции безопасности
- Запросы подтверждения для критических операций (пересборка, остановка, очистка)
- Определение sudo — предупреждает, когда требуются привилегии
- Отображение версии — всегда знаете, какая версия запущена
- Подробные предупреждения — объясняет, что именно сделает каждое критическое действие
Быстрые операции
Все стандартные операции Discourse доступны:
- Управление контейнером — запуск, остановка, перезапуск, вход в оболочку
- Техническое обслуживание — пересборка (полная/быстрая), резервное копирование, очистка
- Мониторинг — статус, логи, монитор ресурсов в реальном времени
- Обновления — обновление лаунчера одной командой
Установка
Быстрая установка
# Загрузка и установка
curl -o disco https://raw.githubusercontent.com/DigneZzZ/discourse-cli/main/disco
chmod +x disco
sudo mv disco /usr/local/bin/
# Проверка установки
disco version
# Запуск интерактивного меню
disco
Конфигурация
Базовая настройка
Создайте файл конфигурации в одном из следующих мест:
~/.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
Использование
Интерактивное меню (рекомендуется)
# Запуск интерактивного меню
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 # Показать справку
Настройки
| Имя | Описание | По умолчанию | Обязательно |
|---|---|---|---|
DISCOURSE_PATH |
Путь к директории установки Discourse | /var/discourse |
Нет |
CONFIG_NAME |
Имя конфигурации контейнера | app |
Нет |
TELEGRAM_BOT_TOKEN |
Токен бота Telegram от @BotFather | - | Нет (для уведомлений) |
TELEGRAM_CHAT_ID |
ID чата или группы Telegram для уведомлений | - | Нет (для уведомлений) |
TELEGRAM_THREAD_ID |
ID потока в группе с темами | - | Нет (необязательно) |
Сценарии использования
Менеджер сообщества
- Автоматически информируйте сообщество во время технического обслуживания
- Больше никаких вопросов «Форум упал?»**
- Профессиональные уведомления о техническом обслуживании
Системный администратор
- Интерактивное меню для периодических задач управления
- Подтверждения безопасности предотвращают ошибки
- Быстрый доступ к логам и статусу
Команды DevOps
- Режим CLI для автоматизации и скриптов
- Последовательные операции среди членов команды
- Простая интеграция с системами мониторинга
Реальное влияние
После внедрения этого инструмента:
Нулевое количество вопросов «Форум упал?» в нашей Telegram-группе
Более быстрые операции обслуживания — отсутствие переключения контекста между терминалом и мессенджером
Меньше ошибок при обновлениях — подтверждения безопасности работают!
Лучший мониторинг — быстрый доступ к логам и использованию ресурсов
Документация
- Руководство по установке — Подробные инструкции по установке
- Руководство по быстрому старту — Начните работу за 5 минут
- Документация по функциям — Описание функций интерактивного меню
- Примеры использования — Реальные рабочие процессы и сценарии
- Список изменений — История версий
Почему я создал это
Управление Discourse через стандартный лаунчер мощно, но:
- Команды трудно запомнить
- Нет встроенной системы уведомлений для сообщества
- Легко ошибиться при критических операциях
- Участники сообщества постоянно спрашивают о простоях
disco оборачивает лаунчер в удобный интерфейс и автоматически информирует всех.
Вклад
Вклад приветствуется! Если у вас есть идеи или предложения:
- Форкните репозиторий
- Создайте ветку с новой функцией
- Внесите свои изменения
- Отправьте Pull Request
Или просто откройте задачу с вашим отзывом!
Лицензия
Лицензия MIT — полностью бесплатно для использования и модификации.
Репозиторий GitHub: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub