Disco - Telegram通知付きインタラクティブシェルディスコース管理ツール

disco - インタラクティブシェル Discourse 管理ツール(Telegram 通知対応)

:information_source: 概要 インタラクティブなメニューインターフェースと、メンテナンス操作時の自動 Telegram 通知を備えた、Discourse 管理用のコマンドラインラッパー
:hammer_and_wrench: リポジトリリンク GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub
:open_book: ドキュメント インストールガイド · クイックスタート · 使用例

:wave: はじめに

こんにちは!

コミュニティフォーラムを管理する際に作成したソリューションをご紹介したいと思います。皆さんと同じく、コミュニティ用に Telegram グループを持っており、Discourse の更新や再起動を行うたびに「フォーラムがダウンしている?」「メンテナンスはいつ終わる?」といった質問が絶えませんでした。

この問題を解決し(そして自分の作業を楽にするため)、disco を作成しました。これは、自動 Telegram 通知インタラクティブなメニューインターフェースを備えた、Discourse 管理用のコマンドラインラッパーです。


:dart: 解決する課題

  • 「フォーラムがダウンしている?」という質問の解消 - Telegram グループへの自動通知
  • 管理の簡素化 - ランチャーコマンドを覚える必要のないインタラクティブなメニュー
  • 安全性の確保 - 危険な操作(再構築、停止、クリーンアップ)の確認プロンプト
  • 可視性の向上 - リアルタイムステータス、ログ、リソース監視
  • トラブルシューティングの高速化 - すべての操作を一元化し、明確な出力で表示

:sparkles: 機能

:video_game: インタラクティブなメニューインターフェース

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)を入力するだけでアクションを選択可能
  • ヘッダーにコンテナのリアルタイムステータスを表示
  • 重要な操作には視覚的な警告(:warning:)を表示
  • 安全性確保のため、危険な操作には「yes」と入力して確認を促す
  • スマートな sudo 検出 - ルート権限が必要な場合に警告

:iphone: Telegram 通知

自動通知でコミュニティを常に最新の状態に保ちます。

再構築開始時:

🔧 フォーラムがメンテナンスに入ります

⏱ 所要時間:約 10 分

一時的なご迷惑をお詫び申し上げます。

完了時:

✅ フォーラムがオンラインに復帰しました!

⏱ メンテナンス時間:7 分 57 秒
🔖 バージョン:3.2.0.beta4

お待ちいただきありがとうございます!🚀

エラー発生時:

❌ フォーラムの更新に失敗しました

⏱ 試行時間:3 分 12 秒

⚠️ 管理者の対応が必要です!
ログを確認:disco logs

:bar_chart: 監視と診断

ステータス概要:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Discourse ステータス
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📦 コンテナ:app
🟢 ステータス:Running
⏱ 稼働時間:3 日間
🔖 バージョン:3.2.0.beta4
💻 CPU: 2.5%
🧠 メモリ:1.2GB / 4GB

機能:

  • CPU とメモリの使用量をリアルタイムで表示
  • コンテナの稼働時間を追跡
  • API を通じた自動バージョン検出
  • フォローモードによるライブログ監視
  • リソース監視ダッシュボード

:shield: 安全性機能

  • 重要な操作(再構築、停止、クリーンアップ)に対する確認プロンプト
  • sudo 検出 - 権限が必要な場合に警告
  • バージョン表示 - 常に実行中のバージョンを把握可能
  • 詳細な警告 - 各重要な操作が何を行うのかを明確に説明

:zap: クイック操作

すべての標準的な Discourse 操作が利用可能。

  • コンテナ管理 - 起動、停止、再起動、シェルへの進入
  • メンテナンス - 再構築(フル/ファスト)、バックアップ、クリーンアップ
  • 監視 - ステータス、ログ、リアルタイムリソース監視
  • 更新 - 1 コマンドでのランチャー更新

: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. ボットの作成:

  • 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

: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 @BotFather から取得した Telegram ボットトークン - いいえ(通知機能使用時)
TELEGRAM_CHAT_ID 通知先の Telegram チャットまたはグループ ID - いいえ(通知機能使用時)
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. プルリクエストを提出

または、issue を開くだけでフィードバックをお寄せください!


:page_with_curl: ライセンス

MIT ライセンス - 自由に使用・改変可能です。



GitHub リポジトリ: GitHub - DigneZzZ/discourse-cli: Discourse CLI interface with TG events when rebuild · GitHub

「いいね!」 2