cyrus-setup-endpoint について
Cyrus インスタンスの公開 Webhook URL を設定するスキルです。ngrok、Cloudflare Tunnel、既存 URL の選択と必要な設定を案内します。
主な機能
- 01Webhook エンドポイントの設定
- 02ngrok、Cloudflare Tunnel、独自 URL の選択
- 03サーバーポートと直接 Webhook の設定
- 04環境ファイル更新時のシークレット保護
活用シーン
- 01Linear Webhook を Cyrus インスタンスに接続
- 02Slack と GitHub の直接 Webhook 検証を設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cyrusagents/ cyrus --skill cyrus-setup-endpointインストール後、Claude Code で/cyrus-setup-endpointを入力して読み込まれたか確認します。
詳細
重要:~/.cyrus/.env または ~/.cyrus/ 内のファイルに対して、Read、Edit、Write ツールを絶対に使用しないでください。環境ファイルの操作には、Bash コマンド(grep、printf >> など)のみを使用してください。シークレットを会話のコンテキストに読み込んではいけません。
エンドポイントの設定
Linear(およびその他の連携サービス)が Cyrus インスタンスに Webhook を送信できるように、公開 URL を設定します。
Step 1: 既存の設定を確認する
grep -E '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null
CYRUS_BASE_URL がすでに設定されている場合は、ユーザーに次のように伝えます。
Webhook エンドポイントはすでに設定されています:
<value>再設定するには、~/.cyrus/.envからCYRUS_BASE_URLを削除して、このスキルを再実行してください。
Step 4(ポート/Webhook が不足している場合は書き込む)に進みます。
Step 2: エンドポイントの方法を選択する
ユーザーに尋ねます。
Webhook 用に Cyrus をインターネットに公開する方法を選んでください。
- ngrok(推奨 — 無料アカウントには、再起動後も維持される静的ドメインが 1 つ含まれます)
- Cloudflare Tunnel(永続的に利用できます。Cloudflare アカウントが必要です)
- 独自の URL(すでに公開 URL/ドメインをお持ちの場合)
重要: ngrok の無料プランには永続的な静的ドメインが含まれています。これが有料機能だと伝えたり、再起動時に URL が変わると伝えたりしないでください。ngrok のすべての無料アカウントで、https://dashboard.ngrok.com/domains にある静的ドメインを 1 つ利用できます。
Step 3: エンドポイントを設定する
Option 1: ngrok
3a. ngrok がインストールされているか確認する
which ngrok
インストールされていない場合は、次のインストール手順を案内します。
macOS:
brew install ngrok
Linux:
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok-v3-stable-linux-amd64.tgz | sudo tar xvz -C /usr/local/bin
3b. ngrok ドメインの設定を案内する
ユーザーに次のように伝えます。
ngrok では無料の静的ドメインを利用できるため、再起動しても URL は変わりません。
- https://dashboard.ngrok.com で登録するか、ログインしてください
- https://dashboard.ngrok.com/domains にアクセスしてください
- 無料の静的ドメインをコピーしてください(例:
your-name-here.ngrok-free.app)- https://dashboard.ngrok.com/get-started/your-authtoken にアクセスし、authtoken をコピーしてください
ユーザーに次の情報を提供するよう依頼します。
- ngrok ドメイン
- ngrok authtoken
重要:authtoken はシークレットです。クリップボードからファイルに書き込む方法を使用してください。
3c. ngrok の設定を書き込む
ngrok start cyrus で起動できるように、ngrok の設定を書き込みます。
mkdir -p ~/.config/ngrok
次に、既存の設定があればマージして、~/.config/ngrok/ngrok.yml に書き込みます。
version: 3
agent:
authtoken: <token>
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456
authtoken には、クリップボードからファイルに書き込む方法を使用します。
macOS:
# User copies authtoken, then runs:
NGROK_TOKEN=$(pbpaste) && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
authtoken: $NGROK_TOKEN
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456
EOF
共通の代替方法:
read -s -p "Paste your ngrok authtoken: " NGROK_TOKEN && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
authtoken: $NGROK_TOKEN
endpoints:
- name: cyrus
url: <domain>
upstream:
url: 3456
EOF
echo " ✓ Saved"
3d. CYRUS_BASE_URL を書き込む
printf 'CYRUS_BASE_URL=https://%s\n' "<domain>" >> ~/.cyrus/.env
<domain> は、ユーザーから提供された ngrok ドメインです(例:your-name-here.ngrok-free.app)。
ユーザーに次のように伝えます。
ngrok を起動するには、
ngrok start cyrusを実行してください。 Cyrus の起動前に、別のターミナルで実行してください。
Option 2: Cloudflare Tunnel
ユーザーに次の情報を尋ねます。
- Cloudflare Tunnel トークン
- トンネルのホスト名(例:
cyrus.yourdomain.com)
トークンはシークレットです。クリップボードから環境変数に書き込んでください。
macOS:
printf 'CLOUDFLARE_TOKEN=%s\n' "$(pbpaste)" >> ~/.cyrus/.env
共通の代替方法:
read -s -p "Paste your Cloudflare token: " val && printf 'CLOUDFLARE_TOKEN=%s\n' "$val" >> ~/.cyrus/.env && echo " ✓ Saved"
次に、ベース URL を書き込みます(シークレットではないため、エージェントが直接書き込めます)。
printf 'CYRUS_BASE_URL=https://<hostname>\n' >> ~/.cyrus/.env
Option 3: 独自の URL
ユーザーに URL を尋ねます。https:// で始まることを確認してください。
printf 'CYRUS_BASE_URL=%s\n' "<url>" >> ~/.cyrus/.env
Step 4: 共通設定を書き込む
~/.cyrus/.env に以下の設定があることを確認します(不足している場合のみ追加します)。
grep -q '^CYRUS_SERVER_PORT=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_SERVER_PORT=3456\n' >> ~/.cyrus/.env
grep -q '^LINEAR_DIRECT_WEBHOOKS=' ~/.cyrus/.env 2>/dev/null || printf 'LINEAR_DIRECT_WEBHOOKS=true\n' >> ~/.cyrus/.env
grep -q '^CYRUS_HOST_EXTERNAL=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_HOST_EXTERNAL=true\n' >> ~/.cyrus/.env
LINEAR_DIRECT_WEBHOOKS=true は、Linear の Webhook 署名を直接検証できるようにします。CYRUS_HOST_EXTERNAL=true は、Slack および GitHub の Webhook 署名を直接検証できるようにします。どちらも、Webhook が CYHOST を経由せずサービスから直接届くセルフホスト構成で必要です。
完了
✓ Webhook エンドポイントを設定しました:
<CYRUS_BASE_URL>✓ サーバーポート:3456 ✓ 直接 Webhook:有効