Skip to content

はじめる

babyrite を導入するための手順を説明します.

動作要件

項目最小要件推奨要件(複数ギルド運用時)
CPU1 vCPU(共有可)1 vCPU
メモリ128MB256MB 以上
ディスク数十 MB(config.toml のみ)同左
ネットワークDiscord Gateway(WebSocket 常時接続)と Discord API / GitHub API への HTTPS アウトバウンド同左
  • babyrite は外部データベースを持ちません.また今後このようなデータベースを要求するような機能を追加する予定はありません.
  • Discord API への WebSocket 接続を行った際,チャンネル情報を moka でメモリキャッシュします.
    • キャッシュはギルドのチャンネルリスト / チャンネル を各最大 500 エントリで保存します.
    • TTL 12h・TTI 1h で設定されています.

実測値ではなく実装からの見積もりです

上記はソースコード(キャッシュサイズ,GitHub raw 取得の 1MB 上限など)から算出した目安であり,ベンチマークによる実測値ではありません.運用規模に応じて調整してください.

対応 OS・アーキテクチャ

  • 推奨環境として,macOS および主要な Linux ディストリビューションでの動作を確認しています.
    • Windows でも動作しますが,macOS または Linux での実行を推奨します(v0.19.0 以降).
  • ARM64 環境にも対応しています(v0.16.0 以降).

トレードオフ

babyrite 自体の処理は regex マッチと HTTP リクエストが中心で,常時 CPU に張り付くことはほぼありません.一方で,以下の要因はギルド数やメッセージ量に比例して増えるため,「最小要件」のまま複数ギルドで運用するとメモリ不足やレイテンシ増加につながる可能性があります.

  • moka キャッシュのメモリ使用量:参加ギルド数・チャンネル数が増えるほど,キャッシュに保持される GuildChannel のデータ量が増えます.キャッシュ自体は最大 500 エントリで頭打ちになりますが,エントリ 1 件あたりのデータサイズはギルドの構成に依存します.
  • reqwest のコネクション数:Discord メッセージリンクと GitHub パーマリンクの展開(1 メッセージあたり最大 3 件ずつ)が同時多発すると,アウトバウンド HTTP コネクションが一時的に増加します.
  • GitHub raw 取得のバッファ:1 ファイルあたり最大 1MB を一時的にメモリへ読み込むため,同時に複数の GitHub パーマリンクが展開されるタイミングでは瞬間的なメモリ使用量が跳ね上がります.

単一ギルドでの小規模な運用であれば最小要件で十分ですが,複数ギルドにまたがって常時稼働させる場合は,推奨要件程度の余裕を見ておくことをおすすめします.

インストール

babyrite は Docker を使ってインストールします.以下のコマンドで最新版の babyrite を pull できます.

shell
docker pull ghcr.io/m1sk9/babyrite:v1

Docker Compose を使う (推奨)

babyrite のセットアップには Docker Compose の利用を推奨します.

k8s や Docker Swarm などのオーケストレーションツールを使う場合は,それぞれの設定ファイルに合わせて構成してください.

yaml
services:
  app:
    image: ghcr.io/m1sk9/babyrite:v1
    env_file:
      - .env
    restart: always

設定

専用の設定ファイルを使うことで,babyrite の動作をカスタマイズできます.設定ファイルは TOML 形式で記述し,CONFIG_FILE_PATH 環境変数でパスを指定します.設定ファイルを用意しなくても,デフォルト設定のまま起動できます.

設定項目の一覧・デフォルト値・ログ出力の詳細については 設定リファレンス を参照してください.

環境変数

babyrite が使用する環境変数は以下の通りです.起動に必須な環境変数は DISCORD_API_TOKEN のみです.

KeyDescription
DISCORD_API_TOKENDiscord API トークン
CONFIG_FILE_PATH設定ファイルへのパス(再帰的パス)
RUST_LOGログレベルのフィルタ.設定した場合,設定ファイルの log.level を上書きします.