Clash 的核心是一个无界面的命令行进程,但它内置了完整的 RESTful API,允许外部程序通过 HTTP 接口实时查询状态、切换节点、修改配置。Dashboard(控制面板)正是基于这套 API 构建的 Web 前端,无需重启 Clash 即可完成几乎所有管理操作。本文从 API 配置开始,带你搭建一套完整的可视化管控体系。
开启 Clash 的 External Controller
Clash 的 API 服务由 external-controller 字段启用。将以下配置加入 config.yaml:
# Clash 外部控制器配置 external-controller: 127.0.0.1:9090 # 仅本地访问(推荐) secret: your-api-secret # Bearer Token 认证,留空则无鉴权 external-ui: ui # Dashboard 静态文件目录(相对 Home 目录) external-ui-url: https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip
external-controller 绑定 127.0.0.1 时 API 只能本机访问。如果需要局域网内其他设备访问(如手机远程管理路由器上的 Clash),可以改为 0.0.0.0:9090,但务必设置强 secret,防止局域网内其他设备未授权访问。
主流 Dashboard 对比
目前有多个开源 Dashboard 可供选择,各有侧重:
| 名称 | 定位 | 特点 |
|---|---|---|
| Yacd | 轻量经典 | 界面简洁,资源占用极低,功能覆盖基本需求,适合入门用户 |
| Yacd-meta | Yacd 的 Mihomo 增强版 | 在 Yacd 基础上添加了 Mihomo 特有功能(Provider 管理、连接详情等) |
| Metacubexd | 功能全面,现代 UI | 支持全部 Mihomo API,实时流量图、规则集更新、连接溯源均有支持,推荐使用 |
| Zashboard | 极简风格 | 界面非常精简,适合只需要节点切换的轻度用户 |
安装 Metacubexd(推荐)
Metacubexd 是功能最完整的 Dashboard,官方提供 CDN 在线版,无需安装即可使用。
方式一:直接访问 CDN 在线版
打开浏览器访问 https://metacubex.github.io/metacubexd/,在输入框中填入:
- 后端地址:
http://127.0.0.1:9090 - 密钥:你在
config.yaml中设置的secret值
方式二:本地部署(离线使用)
在 Mihomo 的 Home 目录中创建 ui/ 文件夹,将 Metacubexd 的 gh-pages 分支文件下载解压到该目录。启动 Clash 后访问 http://127.0.0.1:9090/ui/ 即可进入本地 Dashboard。
external-ui-url 后,Mihomo 会在首次启动时自动下载并解压 Dashboard 文件到 external-ui 指定目录,无需手动操作。后续可通过 Dashboard 的「检查更新」按钮升级。Dashboard 核心功能详解
代理节点管理
Dashboard 的「代理」页面以卡片形式展示所有策略组和节点。点击策略组中的节点即可立即切换,无需重启 Clash。延迟数值旁的颜色指示器(绿/黄/红)直观显示节点可用状态。点击「测速」按钮可触发单个策略组的节点延迟测试。
实时连接监控
「连接」页面(Connections)是排查问题的利器。每条活动连接都显示:目标域名/IP、命中的规则(及规则来源)、使用的策略组、已传输字节数和连接时长。当某个应用走了错误的规则(如本应直连却走了代理),在这里可以立刻发现并定位。
规则集与 Provider 管理
Mihomo 的 Dashboard 可以查看所有已加载的规则集(Rule Provider),显示最后更新时间,并支持手动触发更新——无需重启即可让新的规则集内容生效。Proxy Provider 同理,可以在不重启的情况下拉取订阅更新后的节点列表。
# 触发名为 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 的能力远不止 Dashboard 所展示的。通过脚本,你可以实现更高级的自动化:
# 获取所有代理节点状态 GET /proxies # 切换策略组到指定节点 PUT /proxies/{group-name} Body: {"name": "节点名称"} # 获取实时流量统计(WebSocket) GET /traffic # 获取日志流(WebSocket) GET /logs?level=info # 热重载配置文件 PUT /configs?force=false Body: {"path": "/path/to/config.yaml"}
配合 Shell 脚本或定时任务,可以实现诸如「每天凌晨 3 点自动更新所有规则集和订阅」「当检测到节点延迟超过阈值时自动切换策略组」等功能,打造真正无人值守的代理管理体系。
external-controller 绑定到公网 IP(如 0.0.0.0)并且不设置 secret,任何人都可以不经授权控制你的 Clash 实例,包括切换节点、查看所有连接记录。务必配置 secret 并考虑防火墙规则。