Clashのコアはヘッドレスなコマンドラインプロセスですが、完全なRESTful APIを搭載しており、外部ツールがHTTP経由でリアルタイムにステータスの確認、ノードの切り替え、設定の更新を行えます。ダッシュボードはこのAPI上に構築されたWebフロントエンドで、Clashを再起動することなくほぼ完全なコントロールを提供します。このガイドではAPI設定から完全なビジュアル管理環境の構築まで解説します。

外部コントローラーの有効化

ClashのAPIサーバーはexternal-controllerフィールドで有効化されます。config.yamlに以下を追加してください:

外部コントローラーの有効化
# Clash 外部コントローラー設定
external-controller: 127.0.0.1:9090   # ローカルのみアクセス可能(推奨)
secret: your-api-secret               # Bearerトークン認証;空にすると無効
external-ui: ui                       # ダッシュボード静的ファイル(Clashホームからの相対パス)
external-ui-url: https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip

external-controller127.0.0.1にバインドするとAPIアクセスがローカルマシンのみに制限されます。LAN上の他のデバイスからアクセスが必要な場合(例:スマートフォンからルーターのClashを管理)は0.0.0.0:9090に変更できますが、不正なLANアクセスを防ぐために必ず強力なsecretを設定してください。

ダッシュボードの比較

名前特徴ハイライト
Yacd軽量クラシッククリーンなUI・低リソース消費・基本機能をカバー。入門に最適。
Yacd-metaMihomo強化版YacdYacdにプロバイダー管理・接続詳細などMihomo固有の機能を追加。
Metacubexdフル機能・モダンUI完全なMihomo APIをサポート。リアルタイムトラフィックグラフ、ルールセット更新、接続トレース。推奨。
Zashboardミニマリストノード切り替えのみが必要なユーザー向けのシンプルなインターフェース。

Metacubexdのセットアップ(推奨)

MetacubexdはClashの最も機能が充実したダッシュボードです。プロジェクトはローカルインストール不要のCDNホスト版を提供しています。

方法1:CDNホスト版を直接使用

ブラウザでhttps://metacubex.github.io/metacubexd/にアクセスし、以下を入力:

  • バックエンドアドレス:http://127.0.0.1:9090
  • シークレット:config.yamlで設定したsecretの値

方法2:ローカルインストール(オフライン)

Mihomoのホームディレクトリにui/フォルダーを作成し、Metacubexdのgh-pagesブランチをそこに展開します。Clashを起動後、http://127.0.0.1:9090/ui/にアクセスするとローカルホストのダッシュボードを利用できます。

external-ui-urlを設定すると、Mihomoが初回起動時にダッシュボードファイルを自動的にダウンロード・展開します。手動インストール不要です。ダッシュボード内の「更新を確認」ボタンから後で更新することもできます。

ダッシュボードの主要機能

プロキシノード管理

プロキシページにはすべてのプロキシグループとノードがカードとして表示されます。グループ内のノードをクリックすると即座に切り替わります。Clashの再起動は不要です。レイテンシ値の隣のカラーインジケーター(緑/黄/赤)でノードの健全性を一目で確認できます。

リアルタイム接続監視

接続ページはデバッグに最も役立つツールです。すべてのアクティブな接続には宛先ドメイン/IP、マッチしたルール(どのルールセットから)、使用されたプロキシグループ、転送バイト数、接続時間が表示されます。本来直接接続すべきアプリがプロキシされているなど、間違ったルートを取っている場合はここですぐに確認できます。

ルールセットとプロバイダー管理

Mihomoのダッシュボードでは、読み込まれたすべてのルールセット(ルールプロバイダー)を表示し、最終更新日を確認して、再起動なしで手動更新をトリガーできます。プロキシプロバイダーも同様に、設定ファイルを変更せずにサブスクリプションノードリストを更新できます。

API経由でルールセットを手動更新
# "proxy-list"という名前のルールセットの更新をトリガー
curl -X PUT http://127.0.0.1:9090/providers/rules/proxy-list   -H "Authorization: Bearer your-api-secret"

# プロキシサブスクリプションの更新をトリガー
curl -X PUT http://127.0.0.1:9090/providers/proxies/my-subscription   -H "Authorization: Bearer your-api-secret"

APIによる自動化

Clash RESTful APIはダッシュボードが公開しているものをはるかに超えています。スクリプトで強力な自動化を構築できます:

主要APIエンドポイント一覧
# すべてのプロキシノードステータスを取得
GET  /proxies

# プロキシグループを特定のノードに切り替え
PUT  /proxies/{group-name}
     Body: {"name": "node-name"}

# リアルタイムトラフィック統計(WebSocket)
GET  /traffic

# ライブログストリーム(WebSocket)
GET  /logs?level=info

# 設定ファイルのホットリロード
PUT  /configs?force=false
     Body: {"path": "/path/to/config.yaml"}
external-controllerをパブリックIP(例:0.0.0.0)にバインドしてsecretを設定しない場合、誰でもClashインスタンスを操作できます。必ずsecretを設定し、localhostを超えてAPIを公開する場合はファイアウォールルールの導入も検討してください。