一键式 clash-client,开箱即用,内置管理页面
187
本地代理客户端镜像:mihomo(Clash.Meta)内核 + MetaCubeXD 面板,等价于 Clash Verge Rev 的 「内核 + 面板」组合,只是去掉了桌面外壳,跑在容器里。
external-controller 直接托管,无需额外 Web 服务器)容器直接占用宿主网络,起完之后 127.0.0.1:7890 就是本地代理,127.0.0.1:9090/ui 就是面板。
docker run -d --name clash_client \
--network host \
-e CLASH_SUB_URL="https://your-subscription-url" \
-v ./config:/etc/mihomo \
micrograils/clash-client
想让 TUN 接管全局流量(含 DNS、不放过任何程序):
docker run -d --name clash_client \
--network host \
--cap-add NET_ADMIN --device /dev/net/tun \
-e CLASH_SUB_URL="https://your-subscription-url" \
-e CLASH_TUN=true \
-v ./config:/etc/mihomo \
micrograils/clash-client
不需要
--privileged;只要NET_ADMIN+/dev/net/tun两个能力即可。 TUN 模式内核需要改路由表,容器会以 root 运行;非 TUN 模式下会自动降权到mihomo用户。
容器网络隔离更好,但 TUN 只影响容器内。此时必须 CLASH_ALLOW_LAN=true
(否则 mihomo 只绑 127.0.0.1,端口映射收不到流量)。
docker run -d --name clash_client \
-p 127.0.0.1:7890:7890 \
-p 127.0.0.1:9090:9090 \
-e CLASH_ALLOW_LAN=true \
-e CLASH_SUB_URL="https://your-subscription-url" \
-v ./config:/etc/mihomo \
micrograils/clash-client
打开 http://127.0.0.1:9090/ui。若 CLASH_ALLOW_LAN=true 且没设 CLASH_SECRET,
entrypoint 会随机生成一个 secret 并打印在容器日志里(docker logs clash_client)。
| 变量 | 默认值 | 说明 |
|---|---|---|
CLASH_SUB_URL | 空 | 订阅地址,启动时拉取并合并;失败只告警不阻断 |
CLASH_SUB_UA | clash.meta | 拉订阅时的 UA |
CLASH_MIXED_PORT | 7890 | HTTP + SOCKS5 混合端口 |
CLASH_CONTROLLER_PORT | 9090 | 外部控制器 / 面板端口 |
CLASH_ALLOW_LAN | false | false 只绑 127.0.0.1;true 绑 0.0.0.0(桥接模式必须为 true) |
CLASH_BIND_ADDR | 由上面推导 | 强制指定监听地址 |
CLASH_SECRET | 空 | RESTful API 密码;allow-lan=true 且留空时自动生成 |
CLASH_TUN | false | true 强制开 TUN;auto 检测到 /dev/net/tun 就开;false 关闭 |
CLASH_TUN_STACK | mixed | system / gvisor / mixed |
CLASH_MODE | rule | rule / global / direct |
CLASH_LOG_LEVEL | info | silent/error/warning/info/debug |
CLASH_IPV6 | false | 是否处理 IPv6 |
CLASH_FORCE_ROOT | false | true 时即使不开 TUN 也以 root 运行 |
CLASH_CONF_DIR | /etc/mihomo | 配置目录(挂卷点) |
CLASH_RUN_DIR | /run/mihomo | 生成物目录 |
| 路径 | 说明 |
|---|---|
/etc/mihomo | 配置目录:config.yaml(自己的配置)、merge.yaml(最终覆盖),以及 fake-ip / 选中的节点等持久化数据 |
entrypoint 用 yq 做深度合并,后者覆盖前者(map 逐层合并,数组整体替换):
| 顺序 | 文件 | 用途 |
|---|---|---|
| 1 | /etc/mihomo/base.yaml(镜像内置) | DNS、profile 等默认值 |
| 2 | 订阅内容 | 节点 proxies 与规则 |
| 3 | /etc/mihomo/config.yaml(挂载) | 你自己维护的完整配置 / 节点 |
| 4 | settings.yaml(entrypoint 生成) | 端口、控制器、TUN —— 由环境变量决定 |
| 5 | /etc/mihomo/merge.yaml(挂载) | 最终人工覆盖,改规则/改 DNS 放这里 |
所以:节点和规则交给订阅或 config.yaml,运行参数交给环境变量,想改什么就写 merge.yaml。
生成后的最终配置在 CLASH_RUN_DIR/config.yaml,启动前会用 mihomo -t 自检,失败会打印配置并退出。
merge.yaml,例如只改规则:
rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
CLASH_ALLOW_LAN=true + 宿主防火墙放行 7890,配合 CLASH_SECRET。CLASH_CONTROLLER_PORT 暴露出去,
在 Clash Verge Rev 里填 http://<host>:9090 + secret 即可「外部控制」本容器。/etc/mihomo,profile.store-selected 已默认开启。维护者文档(架构 / 构建 / 版本管理 / 维护)见 MAINTENANCE.md。
Content type
Image
Digest
sha256:362e2bc8b…
Size
40.9 MB
Last updated
16 days ago
docker pull micrograils/clash-client