trackica Docs

環境変数

セルフホスト trackica でよく使うサーバー、ストレージ、連携、ランタイムの設定。

trackica はプロセス起動時に環境変数を読み込みます。変更後は、該当する API・Web・デーモンのプロセスを再起動してください。Docker Compose の docker compose restart は .env を再読み込みしません。up -d でコンテナを再作成して初めて反映されます。

このページにはデプロイ運用者向けの設定のみを載せています。テスト用変数や内部タスク用の変数は扱いません。グループ別のリファレンスとして使い、完全なデプロイ手順はセルフホストクイックスタートを参照してください。

プロダクションの最小構成

DATABASE_URL=postgres://user:password@postgres:5432/trackica?sslmode=require
JWT_SECRET=<long-random-secret>
APP_ENV=production
FRONTEND_ORIGIN=https://trackica.example.com
TRACKICA_APP_URL=https://trackica.example.com
TRACKICA_PUBLIC_URL=https://api.trackica.example.com

さらにメールサービスを 1 つ選ぶ必要があります。選ばない場合、認証コードと招待はサーバーログに書き込まれるだけです。

JWT_SECRET は本番環境で必須です。APP_ENV=production の場合、値が空または既知のプレースホルダーだとバックエンドが起動を拒否します(openssl rand -hex 32 で生成)。TRACKICA_DEV_VERIFICATION_CODE も設定しないでください。

API とデータベース

変数デフォルト説明
DATABASE_URLローカルの trackica データベースPostgreSQL 接続文字列
DATABASE_MAX_CONNS25API プロセスあたりの最大データベース接続数
DATABASE_MIN_CONNS5API プロセスが保持する最小接続数
TRACKICA_DATABASE_STARTUP_TIMEOUT3mコンテナ起動時に migration と API が共有する、一時的なデータベース障害への再試行時間。0 にすると各フェーズで 1 回だけ試行します
TRACKICA_DATABASE_CONNECT_TIMEOUT5s起動時の接続試行ごとのフォールバックタイムアウト。pgx ネイティブの connect_timeout、PGCONNECT_TIMEOUT、service 設定が優先されます
PORT8080API のリッスンポート
JWT_SECRET本番環境で必須ログイン JWT と一部の署名フローに使うシークレット。本番では空または既知のプレースホルダーだと起動を拒否
APP_ENV空プロダクションでは production を設定
AUTH_TOKEN_TTL720h(30 日)ブラウザ JWT と cookie の有効期間。Go duration または正の整数秒を受け付けます
LOG_LEVELアプリのデフォルトログレベル
TRACKICA_SHUTDOWN_HOLD_DURATION0終了シグナル受信後、グレースフルシャットダウンを開始するまでの待機時間
TRACKICA_RUNTIME_RECONNECT_GRACE3hオフラインのランタイムが処理中の作業を失敗させずに再接続できる猶予時間。150s 未満は 150s に補正されます
TRACKICA_TASK_QUEUED_TTL2hタスクがキュー内でクレームされずに置かれることのできる最長時間。超過すると queued_expired で失敗します。低並行度のランタイムが長時間実行中の作業の後ろに正当に待機しうる場合は大きくしてください

Kubernetes で shutdown hold を設定する場合、terminationGracePeriodSeconds は hold と実際のシャットダウンにかかる時間の合計より大きくしてください。

公開アドレスとブラウザアクセス

変数デフォルト説明
FRONTEND_ORIGIN空ユーザーがアクセスするフロントエンドの origin。CORS、cookie、招待リンクに使われます
TRACKICA_APP_URLFRONTEND_ORIGIN にフォールバックユーザーが到達できる Web アドレス。CLI ログインとアカウント連携リンクが使います
TRACKICA_PUBLIC_URL空公開 API アドレス。webhook URL とランタイム接続案内に使われます
TRACKICA_DAEMON_SERVER_URLTRACKICA_PUBLIC_URL、次に TRACKICA_APP_URL / FRONTEND_ORIGIN にフォールバックAPI プロセスが trackica setup self-host コマンドに埋め込むサーバー URL。デーモンから到達する API URL が公開 webhook URL と異なる場合に設定します
CORS_ALLOWED_ORIGINS空追加で許可する HTTP origin。カンマ区切り
ALLOWED_ORIGINSCORS / フロントエンド設定にフォールバックWebSocket origin の許可リスト。カンマ区切り
COOKIE_DOMAIN空フロントエンドと API の host が異なり、ブラウザが API ドメインへ直接アクセスする場合は必須。単一ドメイン構成では空のまま

TRACKICA_DAEMON_SERVER_URL は認証なしの /api/config エンドポイントから返され、クライアントが読み取れます。公開設定として扱い、認証情報・トークンなどのシークレットを含めないでください。

フロントエンドと API が異なる host を使い、ブラウザが API ドメインへ直接アクセスする構成では、COOKIE_DOMAIN の設定が必須です。設定しないとブラウザが CSRF cookie を読めず、すべての書き込みリクエストが 403 CSRF validation failed を返す一方、読み取りは正常に動きます。値には、両方の host を同時にカバーできる最も狭い親ドメインを使ってください(.example.com より .agent.example.com)。この設定はログインセッション cookie をそのドメイン配下のすべての host に広げるため、それらの host がすべて同一の信頼できる運用主体のものである場合にのみ使えます。変更後は両方の host で古い cookie を削除し、再ログインしてください。セルフホストクイックスタートの同一オリジン構成(ブラウザは app ドメインのみアクセス)に従う場合は、空のままで構いません。IP アドレスは指定しないでください。ブラウザは Domain が IP の cookie を無視します。

セルフホストのデプロイでは FRONTEND_ORIGIN の設定が必須です。設定しないと、招待リンク、cookie のセキュリティ属性、WebSocket の origin 検証が実際のドメインと食い違うおそれがあります。

メールとログイン

Resend

変数デフォルト説明
RESEND_API_KEY空設定すると Resend が有効になります
RESEND_FROM_EMAILnoreply@multica.ai送信元アドレス。検証済みドメインに属している必要があります

SMTP

SMTP_HOST が空でない限り、SMTP が Resend より優先されます。

変数デフォルト説明
SMTP_HOST空SMTP ホスト。設定すると SMTP が有効になります
SMTP_PORT25よく使う値: 25、587、465
SMTP_USERNAME空ユーザー名。匿名 relay では空のまま
SMTP_PASSWORD空パスワード
SMTP_FROM_EMAILRESEND_FROM_EMAIL にフォールバックEnvelope From とメールの From
SMTP_TLSstarttlsimplicit、smtps、ssl は暗黙的 TLS を意味します。465 では自動的に有効
SMTP_TLS_INSECUREfalse証明書検証をスキップ。信頼できる内部ネットワーク専用
SMTP_EHLO_NAMEホスト名厳格な relay が要求する EHLO/FQDN

Google OAuth

変数デフォルト説明
GOOGLE_CLIENT_ID空Google OAuth client ID
GOOGLE_CLIENT_SECRET空Google OAuth client secret
GOOGLE_REDIRECT_URIhttp://localhost:3000/auth/callbackGoogle Console のコールバックアドレスと完全に一致している必要があります

サインアップ範囲

変数デフォルト説明
ALLOW_SIGNUPtrueallowlist が一つも設定されていない場合に新規登録を許可するか
ALLOWED_EMAILS空登録を許可する完全なメールアドレス。カンマ区切り
ALLOWED_EMAIL_DOMAINS空登録を許可するメールドメイン。カンマ区切り
DISABLE_WORKSPACE_CREATIONfalseすべてのユーザーのワークスペース新規作成を禁止。owner/admin の例外はありません
TRACKICA_DEV_VERIFICATION_CODE空非 production 環境で使う固定 6 桁のテスト認証コード

allowlist の正確な判定順序はログインとサインアップを参照してください。

添付ファイルストレージ

S3_BUCKET が未設定の場合、trackica はローカルディスクを使います。

S3 または互換ストレージ

変数デフォルト説明
S3_BUCKET空バケット名。完全な hostname は指定しないでください
S3_REGIONus-west-2バケットのあるリージョン
AWS_ACCESS_KEY_IDSDK デフォルトの資格情報チェーン静的な access key
AWS_SECRET_ACCESS_KEYSDK デフォルトの資格情報チェーン静的な secret key
AWS_ENDPOINT_URL空MinIO などの S3 互換 endpoint
S3_USE_PATH_STYLEカスタム endpoint 時は truepath-style アドレスを使うか
ATTACHMENT_DOWNLOAD_MODEautoauto、cloudfront、presign、proxy
ATTACHMENT_DOWNLOAD_URL_TTL30m署名付きダウンロード URL の有効期間

内部ネットワークの MinIO など、ブラウザから endpoint に直接到達できない場合は ATTACHMENT_DOWNLOAD_MODE=proxy を使ってください。

ローカルディスク

変数デフォルト説明
LOCAL_UPLOAD_DIR./data/uploadsファイルと metadata の保存ディレクトリ。永続ボリュームが必要です
LOCAL_UPLOAD_BASE_URL空任意の公開 base URL。空の場合はアプリ内の相対アドレスを返します

CloudFront

変数説明
CLOUDFRONT_DOMAINCDN ドメイン
CLOUDFRONT_KEY_PAIR_IDCloudFront key pair ID
CLOUDFRONT_PRIVATE_KEY完全な秘密鍵
CLOUDFRONT_PRIVATE_KEY_SECRETSecrets Manager から秘密鍵を読み込む場合に使用

Redis とレート制限

変数デフォルト説明
REDIS_URL空共有レート制限、リアルタイムイベント、token cache に使用。未設定の場合、リアルタイムイベントと招待制限はプロセス内メモリにフォールバックし、認証レート制限は無効になります
REDIS_DISABLE_CLIENT_NAMEfalseマネージド Redis が CLIENT SETNAME を禁止している場合に true を設定
RATE_LIMIT_AUTH5認証コード送信または Google ログイン開始の、IP あたり毎分の回数
RATE_LIMIT_AUTH_VERIFY20認証コード検証の、IP あたり毎分の回数
RATE_LIMIT_INVITATION_ACTOR_10M10招待者ごとの 10 分間スライディングウィンドウ内のワークスペース招待数。0 でこの制限を無効化
RATE_LIMIT_INVITATION_WORKSPACE_24H50ワークスペース内の全管理者による 24 時間スライディングウィンドウ内の招待総数。0 でこの制限を無効化
RATE_LIMIT_INVITATION_RECIPIENT_24H6正規化された同一受信メールアドレスがワークスペースをまたいで 24 時間スライディングウィンドウ内に受け取れる招待数。0 でこの制限を無効化
RATE_LIMIT_TRUSTED_PROXIES空X-Forwarded-For の提供を許可するプロキシ CIDR。カンマ区切り
TRACKICA_TRUSTED_PROXIES空オートパイロット webhook とリアルタイム接続が使う信頼済みプロキシ CIDR

リバースプロキシ配下のデプロイでは、実際のプロキシのネットワーク範囲を設定してください。すべての送信元を無条件に信頼してはいけません。クライアントが転送元 IP を偽装できてしまいます。

認証レート制限には REDIS_URL が必要です。未設定の場合、起動ログに認証レート制限が無効であることが表示されます。招待制限は Redis なしでもプロセス内メモリで動作し、Redis を設定すると複数レプリカで割り当てを共有します。設定済みの Redis が一時的に利用できない場合、認証レート制限はフェイルオープンしますが、招待作成は保護なしでメールを送らず、再試行可能な 503 を返します。

外部連携

連携変数説明
GitHubGITHUB_APP_SLUGGitHub App の slug
GitHubGITHUB_WEBHOOK_SECRETWebhook HMAC と接続 state の署名シークレット
GitHubGITHUB_APP_IDPR カードの CI ステータス・マージ可否と「GitHub から選択」リポジトリに必要です
GitHubGITHUB_APP_PRIVATE_KEYApp ID と対になる完全な PEM 秘密鍵。用途は同上
LarkTRACKICA_LARK_SECRET_KEYbase64 エンコードされた 32 バイトの資格情報暗号化キー
SlackTRACKICA_SLACK_SECRET_KEYbase64 エンコードされた 32 バイトの token 暗号化キー
TelegramTRACKICA_TELEGRAM_SECRET_KEYbase64 エンコードされた 32 バイトの Bot token 暗号化キー
ComposioCOMPOSIO_API_KEYComposio ツール接続を有効化
ComposioCOMPOSIO_CALLBACK_BASE_URLコールバック API アドレス。TRACKICA_PUBLIC_URL にフォールバック可能
ComposioCOMPOSIO_STATE_SECRETOAuth state の署名シークレット。JWT_SECRET から派生可能
セルフホスト GitTRACKICA_VCS_INTEGRATION_ENABLEDForgejo/Gitea/GitLab 連携のスイッチ。compose ではデフォルトで有効
セルフホスト GitTRACKICA_VCS_SECRET_KEYbase64 エンコードされた 32 バイトの暗号化キー(openssl rand -base64 32)。未設定の場合、この機能全体が利用できません
PluginsTRACKICA_PLUGIN_SECRET_KEY保存済み secret と surface 起動 URL を暗号化する base64 形式の 32 バイト鍵
PluginsTRACKICA_PLUGIN_SURFACE_ORIGINバックエンドへルーティングする Cookie なしの専用 origin。app/API origin と分離し、Host を保持すること
PluginsTRACKICA_PLUGIN_API_URLバージョンを含む Plugin Public API の完全な Base URL(例: https://plugin-api.example.com/v1)。未設定時は TRACKICA_PUBLIC_URL + /v1
PluginsTRACKICA_PLUGIN_DIR開発時にローカル plugin bundle を公開するための任意の絶対ディレクトリ

GITHUB_APP_ID と秘密鍵を設定しなくても、PR の関連付け・ミラー・マージによる done への遷移は通常どおり動きますが、カードに CI とマージ可否のステータスが表示されず、「GitHub から選択」のリポジトリ入口も無効になります。

設定手順は GitHub 連携、Lark Bot、Slack Bot、Telegram Botを参照してください。

サーバーサイド LLM

このグループは、会話タイトルなどサーバー側の補助生成機能の設定です。エージェントがタスクを実行するときに使う AI コーディングツールの資格情報ではありません。

変数デフォルト説明
TRACKICA_LLM_API_KEY空OpenAI 互換の API key
TRACKICA_LLM_BASE_URL空OpenAI 互換の endpoint
TRACKICA_LLM_DEFAULT_MODELgpt-5.6-lunaリクエストがモデルを指定しない場合に使用
TRACKICA_LLM_MAX_RETRIES21 回の呼び出しあたりのリトライ上限。0 はリトライ無効、1〜5 は最大 N 回

TRACKICA_LLM_MAX_RETRIES はリトライポリシーの唯一の設定元です。未設定ならデフォルトの 2 回、0 なら 1 回の呼び出しにつきリクエストは 1 回だけ、1〜5 ならリトライは最大その回数までになります。これは割り当てではなく上限です。消費するのはリトライ対象の失敗だけで、成功や呼び出し側自身のデッドラインによって早く終わることもあります。それ以外の値(負数、非数値、5 超過)は静かに補正されるのではなく起動に失敗します。上限はレイテンシ予算です。バックオフは 0.5 秒から始まり 8 秒を上限に倍増するため、これより大きい予算は呼び出し側自身のタイムアウトを超え、リトライ可能な失敗をタイムアウトに変えてしまいます。リトライの対象は接続失敗と HTTP 408、409、429、5xx で、それ以外の 4xx はそのまま返されます。サーバーは起動時に有効なポリシーを llm retry policy として記録しますが、その行に資格情報は含まれません。

このレイヤーを使う機能は 4 つあり、設定した endpoint に次のデータを送信します。

  • 会話タイトルの自動生成 — 新しいチャットセッションでユーザーが最初に送ったメッセージを、そのまま送信します。添付ファイルは含まれません。
  • フォローアップ質問(エージェントの返信の下に表示されるボタン) — 会話の末尾を送信します。最大 6 メッセージで、対象の返信は 3000 文字、それより古いメッセージは各 800 文字が上限です。
  • ガントステータス要約 — ユーザーが選択した最大 100 件の課題について、識別子、タイトル、説明(最大 2000 文字)、ステータス、優先度、日付、プロジェクトタイトルを送信します。
  • プロジェクトスナップショットの要約 — ステータス、担当者、マイルストーン、タスク、デリバリー、リポジトリチェック、進捗、健全性シグナル、リスクフラグからなる構造化されたプロジェクト情報を送信します。課題の説明、コメント、添付ファイル、チャットは含まれません。 API key と base URL の両方が空の場合、このレイヤーは無効になり、上流へのリクエストを一切行いません。上記の機能は何も送信しなくなります。このレイヤーからデータをデプロイ外へ出せないポリシーでは、これがサポートされた構成です。セッションはクライアントが生成したタイトルを使い、フォローアップ質問と AI ガント要約は表示されず、プロジェクトスナップショットには事実ベースのフォールバックが残ります。

これは補助生成レイヤーのみに関する説明です。完了タスクのメモリ抽出では、サーバーがワークスペース全体につきオンラインの所有者または管理者マシンを 1 台だけ選び、そのマシンだけが全プロジェクトのジョブを受け取ります。入力はローカルでマスクしてから、設定済みの Codex と gpt-5.6-sol に渡されます。選択中のマシンがオフラインになった場合だけ別の管理者マシンが引き継ぎ、タスク単位のリースが最後の重複防止になります。上記の TRACKICA_LLM_* 設定は不要です。

デーモン設定

以下の変数は、エージェントを実行するコンピューター上で読み込まれます。API コンテナ内ではありません。

変数デフォルト説明
TRACKICA_SERVER_URLws://localhost:8080/wstrackica API / WebSocket アドレス。http(s) も受け付けます
TRACKICA_DAEMON_DEVICE_NAMEホスト名ランタイム一覧に表示されるデバイス名
TRACKICA_AGENT_RUNTIME_NAMELocal Agentランタイムの表示名
TRACKICA_DAEMON_POLL_INTERVAL30sウェイクイベントがないときのタスクポーリング間隔
TRACKICA_DAEMON_HEARTBEAT_INTERVAL15sハートビート間隔
TRACKICA_DAEMON_MAX_CONCURRENT_TASKS20デーモン 1 つあたりの同時実行タスク上限
TRACKICA_AGENT_TIMEOUT01 回の実行の絶対時間上限。0 は上限なし
TRACKICA_AGENT_IDLE_WATCHDOG30m出力もツール実行もない状態の静穏上限
TRACKICA_AGENT_TOOL_WATCHDOG2h単一のツール呼び出しが静穏なままでいられる上限
TRACKICA_OPENCODE_IDLE_WATCHDOG10mOpenCode 専用の静穏しきい値
TRACKICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT10mCodex のセマンティック静穏しきい値
TRACKICA_CODEX_FIRST_TURN_TIMEOUT0Codex 初回ターンの無進捗上限を明示的に上書き;0 はデフォルトを維持。実効の初回ターン待機は依然として TRACKICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT と全体の実行タイムアウトに制限される——TRACKICA_CODEX_SEMANTIC_INACTIVITY_TIMEOUT をこの値より厳密に大きく(余裕を持たせて)設定すること。さもないと待機はその値で打ち切られ、モデルカタログの起動リトライがスキップされる。同値では不十分:セマンティックタイマーが先に起動するため、同値の場合でもリトライが失われることがある
TRACKICA_CODEX_HANDSHAKE_TIMEOUT30sCodex app-server 起動ハンドシェイクの上限
TRACKICA_DAEMON_AUTO_UPDATECloud は true、セルフホストは falseCLI の更新を自動でチェックして適用するか
TRACKICA_DAEMON_AUTO_UPDATE_INTERVAL6h更新チェックの間隔
TRACKICA_DAEMON_AUTO_RELOADtrue帯域外で置き換えられた trackica バイナリ(brew upgrade、再ダウンロード、ローカルビルド)へ再起動して追従するかどうか。TRACKICA_DAEMON_AUTO_UPDATE とは独立
TRACKICA_WORKSPACES_ROOT~/trackica_workspacesタスク作業ディレクトリのルート
TRACKICA_AGENT_TEMP_BASE/tmp(Linux/macOS)Linux/macOS 専用。作業ごとのプライベート一時ディレクトリの親ディレクトリ。既存かつ書き込み可能な絶対パスである必要があり、無効な値の場合は /tmp にフォールバックせず作業の開始に失敗します。短いパスを選んでください。子ツールがその配下に AF_UNIX ソケットを作成する場合があり、sun_path の上限は Linux で 108 バイト、macOS で 104 バイトです
TRACKICA_KEEP_ENV_AFTER_TASKfalseデバッグ用にタスクディレクトリを保持
TRACKICA_DAEMON_LOCAL_DIRECTORY_ISOLATIONtruelocal_directory が使用中のとき、待機せず専用の git ワークツリーで実行するかどうか。false にするとこうしたタスクは厳密に直列になる。プロジェクトリソースを参照

各 AI コーディングツールは TRACKICA_<PROVIDER>_PATH でコマンドパスを上書きでき、モデル上書き対応ツールでは TRACKICA_<PROVIDER>_MODEL も利用できます。QwenPaw と MiniMax Code にはモデル変数がなく、MiniMax Code のパス変数は TRACKICA_MCODE_PATH です。詳しくは AI コーディングツール比較 を参照してください。DeepSeek Harness は TRACKICA_DSH_PATH と TRACKICA_DSH_MODEL に対応しています(値は dsh のモデルカタログにあるモデル ID、例: deepseek-official/deepseek-chat)。ZeroClaw は TRACKICA_ZEROCLAW_PATH に対応しますが、モデル変数はありません。モデルは ZeroClaw のエージェント設定で管理します。マシン全体のデフォルト引数 TRACKICA_<PROVIDER>_ARGS は、現在 Claude Code、Codex、CodeBuddy、Qwen Code、QwenPaw の 5 ツールに対応しています。対応する変数は TRACKICA_CLAUDE_ARGS、TRACKICA_CODEX_ARGS、TRACKICA_CODEBUDDY_ARGS、TRACKICA_QWEN_ARGS、TRACKICA_QWENPAW_ARGS です。例:

TRACKICA_CLAUDE_PATH=/opt/bin/claude
TRACKICA_CLAUDE_ARGS=--max-turns 40

優先順位はコマンドラインフラグ → 環境変数 → ~/.trackica/config.json → 組み込みデフォルトです。watchdog の動作はデーモンとランタイムを参照してください。

デーモン設定の永続化

デーモン側のよく使う設定は、シェルの環境変数に頼らず ~/.trackica/config.json に書き込むこともできます。名前付きプロファイルの設定ファイルは ~/.trackica/profiles/<name>/config.json にあります:

trackica config set poll_interval 10s
trackica config show

サポートされるキー:

キーデフォルト説明
server_urlws://localhost:8080/wstrackica API / WebSocket アドレス
app_url空ブラウザログインに使う Web アドレス
workspace_id空デフォルトのワークスペース
device_nameホスト名ランタイム一覧に表示されるデバイス名
runtime_nameLocal Agentランタイムの表示名
workspaces_root~ 配下のプロファイル別パスタスク作業ディレクトリのルート
max_concurrent_tasks20同時実行タスク上限。0 または空は未設定を意味します
poll_interval30sタスクのポーリング間隔
heartbeat_interval15sハートビート間隔
agent_timeout無制限1 回の実行の絶対時間上限
codex_semantic_inactivity_timeout10mCodex のセマンティック静穏しきい値
codex_handshake_timeout30sCodex app-server ハンドシェイクの上限
disable_auto_update環境に従うtrue で自動更新を無効化。false はローカルの上書きをクリアし、環境変数またはデフォルトに戻します
auto_update_check_interval6h更新チェックの間隔
disable_auto_reload環境に従うtrue でディスク上の置き換えへの追従を停止。false はローカルの上書きをクリア。disable_auto_update とは別に解決されます

値のルール:

  • duration 系のキーは正の Go duration(10s、2h など)を受け付け、0s と負の値は拒否されます。唯一の例外は agent_timeout で、0s は有効な値として実行時間上限を明示的に無効化します。
  • 空文字列を渡すと永続化された値がクリアされ、環境変数または組み込みデフォルトに戻ります。例: trackica config set poll_interval ""。
  • max_concurrent_tasks には非負の整数が必要です。
  • 相対パスの workspaces_root は保存時に絶対パスへ変換されます。

可観測性と分析

変数デフォルト説明
ANALYTICS_DISABLEDfalsetrue で PostHog への送信を無効化
POSTHOG_API_KEY空未設定の場合は分析送信が無効。自前の PostHog プロジェクトを使う場合に設定
POSTHOG_HOSThttps://us.i.posthog.comPostHog アドレス
METRICS_ADDR空Prometheus metrics のリッスンアドレス。空なら起動しません
REALTIME_METRICS_TOKEN空/health/realtime を保護する bearer token

次のステップ