disco - インタラクティブシェル Discourse 管理ツール(Telegram 通知対応)
| 概要 | インタラクティブなメニューインターフェースと、メンテナンス操作時の自動 Telegram 通知を備えた、Discourse 管理用のコマンドラインラッパー | |
| リポジトリリンク | GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub | |
| ドキュメント | インストールガイド · クイックスタート · 使用例 |
はじめに
こんにちは!
コミュニティフォーラムを管理する際に作成したソリューションをご紹介したいと思います。皆さんと同じく、コミュニティ用に Telegram グループを持っており、Discourse の更新や再起動を行うたびに「フォーラムがダウンしている?」「メンテナンスはいつ終わる?」といった質問が絶えませんでした。
この問題を解決し(そして自分の作業を楽にするため)、disco を作成しました。これは、自動 Telegram 通知とインタラクティブなメニューインターフェースを備えた、Discourse 管理用のコマンドラインラッパーです。
解決する課題
- 「フォーラムがダウンしている?」という質問の解消 - Telegram グループへの自動通知
- 管理の簡素化 - ランチャーコマンドを覚える必要のないインタラクティブなメニュー
- 安全性の確保 - 危険な操作(再構築、停止、クリーンアップ)の確認プロンプト
- 可視性の向上 - リアルタイムステータス、ログ、リソース監視
- トラブルシューティングの高速化 - すべての操作を一元化し、明確な出力で表示
機能
インタラクティブなメニューインターフェース
disco を引数なしで実行すると、見やすい番号付きメニューが表示されます。
╔════════════════════════════════════════════════════════════╗
║ 🚀 Discourse Manager v1.2.0 ║
║ 📦 Container: app | Status: 🟢 Running ║
╚════════════════════════════════════════════════════════════╝
1. 📊 ステータスを表示
2. 🔄 コンテナを再起動
3. 📝 ログを表示(直近 100 行)
4. 📺 リアルタイム監視
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. 🔧 フル再構築(更新を含む)⚠
6. ⚡ ファスト再構築
7. 💾 バックアップを作成
8. 🧹 Docker リソースをクリーンアップ ⚠
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
9. ▶️ コンテナを起動
10. ⏸️ コンテナを停止 ⚠
11. 🐚 コンテナシェルに入る
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
12. 📥 ランチャーを更新
13. 📱 Telegram 通知をテスト
14. ⚙️ 設定を表示
15. 🔄 disco を更新
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
0. ❌ 終了
機能:
- 番号(1-15)を入力するだけでアクションを選択可能
- ヘッダーにコンテナのリアルタイムステータスを表示
- 重要な操作には視覚的な警告(
)を表示 - 安全性確保のため、危険な操作には「yes」と入力して確認を促す
- スマートな sudo 検出 - ルート権限が必要な場合に警告
Telegram 通知
自動通知でコミュニティを常に最新の状態に保ちます。
再構築開始時:
🔧 フォーラムがメンテナンスに入ります
⏱ 所要時間:約 10 分
一時的なご迷惑をお詫び申し上げます。
完了時:
✅ フォーラムがオンラインに復帰しました!
⏱ メンテナンス時間:7 分 57 秒
🔖 バージョン:3.2.0.beta4
お待ちいただきありがとうございます!🚀
エラー発生時:
❌ フォーラムの更新に失敗しました
⏱ 試行時間:3 分 12 秒
⚠️ 管理者の対応が必要です!
ログを確認:disco logs
監視と診断
ステータス概要:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Discourse ステータス
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 コンテナ:app
🟢 ステータス:Running
⏱ 稼働時間:3 日間
🔖 バージョン:3.2.0.beta4
💻 CPU: 2.5%
🧠 メモリ:1.2GB / 4GB
機能:
- CPU とメモリの使用量をリアルタイムで表示
- コンテナの稼働時間を追跡
- API を通じた自動バージョン検出
- フォローモードによるライブログ監視
- リソース監視ダッシュボード
安全性機能
- 重要な操作(再構築、停止、クリーンアップ)に対する確認プロンプト
- sudo 検出 - 権限が必要な場合に警告
- バージョン表示 - 常に実行中のバージョンを把握可能
- 詳細な警告 - 各重要な操作が何を行うのかを明確に説明
クイック操作
すべての標準的な Discourse 操作が利用可能。
- コンテナ管理 - 起動、停止、再起動、シェルへの進入
- メンテナンス - 再構築(フル/ファスト)、バックアップ、クリーンアップ
- 監視 - ステータス、ログ、リアルタイムリソース監視
- 更新 - 1 コマンドでのランチャー更新
インストール
クイックインストール
# ダウンロードとインストール
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. ボットの作成:
- Telegram で @BotFather にメッセージを送信
/newbotコマンドを送信- 指示に従う
- ボットトークンを保存
2. チャット ID の取得:
- ボットに任意のメッセージを送信
- 以下にアクセス:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates - 応答内の
"chat":{"id":...}を確認
3. スレッド 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 |
@BotFather から取得した Telegram ボットトークン | - | いいえ(通知機能使用時) |
TELEGRAM_CHAT_ID |
通知先の Telegram チャットまたはグループ ID | - | いいえ(通知機能使用時) |
TELEGRAM_THREAD_ID |
トピック付きグループ内のスレッド ID | - | いいえ(オプション) |
使用ケース
コミュニティマネージャー
- メンテナンス中のコミュニティへの自動通知
- 「フォーラムがダウンしている?」という質問の解消
- プロフェッショナルなメンテナンス通知
システム管理者
- 偶発的な管理タスク向けのインタラクティブなメニュー
- 事故を防ぐための安全確認機能
- ログやステータスへの迅速なアクセス
DevOps チーム
- 自動化やスクリプト向けの CLI モード
- チームメンバー間での一貫した操作
- 監視システムとの簡単な統合
実世界での効果
このツールを導入して以降:
Telegram グループで「フォーラムがダウンしている?」という質問がゼロに
メンテナンス操作の高速化 - ターミナルとメッセージングの切り替えが不要に
更新時のミスの減少 - 安全確認機能が機能しています!
監視の改善 - ログやリソース使用量への迅速なアクセスが可能に
ドキュメント
- インストールガイド - 詳細なインストール手順
- クイックスタートガイド - 5 分で始められます
- 機能ドキュメント - インタラクティブなメニューの機能解説
- 使用例 - 実世界のワークフローとシナリオ
- 変更履歴 - バージョン履歴
作成の背景
標準的なランチャーを通じて Discourse を管理するのは強力ですが、以下の課題がありました。
- コマンドを覚えるのが難しい
- コミュニティ向けの組み込み通知システムがない
- 重要な操作でミスをしやすい
- コミュニティメンバーからダウンタイムについての質問が絶えない
disco は、ランチャーをユーザーフレンドリーなインターフェースでラップし、全員を自動的に最新の状態に保ちます。
貢献
貢献を歓迎します!アイデアや提案がある場合は:
- リポジトリをフォーク
- 機能ブランチを作成
- 変更を加える
- プルリクエストを提出
または、issue を開くだけでフィードバックをお寄せください!
ライセンス
MIT ライセンス - 自由に使用・改変可能です。
GitHub リポジトリ: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub