🚀 基于最新 Mihomo 内核,内置 Dashboard 的 Clash Docker 镜像
- ✅ Mihomo (Clash Meta)最新内核
- ✅ MetacubexD Web Dashboard 内置
- ✅ 预打包 GeoIP 数据库,无需运行时下载
- ✅ 支持 amd64 / arm64 架构
- ✅ 订阅功能:支持远程订阅链接自动下载配置
- ✅ 自动更新:支持定时自动更新订阅并重启生效
- ✅ 容错处理:订阅下载失败时自动回退到本地配置
| 协议 | 说明 |
|---|---|
| Shadowsocks (SS) | 经典轻量级加密代理 |
| VMess | V2Ray 原生协议 |
| VLESS | V2Ray 轻量协议,性能更优 |
| Trojan | 基于 TLS 的隐蔽协议 |
| Hysteria | 基于 QUIC 的高速协议 |
| Hysteria2 | Hysteria 第二代,更快更稳 |
| TUIC | 基于 QUIC 的多路复用协议 |
| WireGuard | 现代化 VPN 协议 |
| HTTP | HTTP/HTTPS 代理 |
| SOCKS5 | 通用 SOCKS5 代理 |
Clash for Docker 支持两种使用模式:订阅模式(推荐)和本地配置模式。
自动从订阅链接下载配置,支持定时更新,无需手动维护配置文件。
docker run -d \
--name glash \
--restart unless-stopped \
-p 7890:7890 \
-p 7891:7891 \
-p 9090:9090 \
-v /path/to/config:/root/.config/mihomo \
-e SUB_URL=https://your-subscription-url \
-e SUB_CRON="0 */6 * * *" \
-e SECRET=your-dashboard-password \
-e ALLOW_LAN=true \
gangz1o/glash:latestservices:
glash:
image: gangz1o/glash:latest
container_name: glash
restart: always
ports:
- '7890:7890' # HTTP 代理
- '7891:7891' # SOCKS5 代理
- '9090:9090' # Dashboard
volumes:
- ./config:/root/.config/mihomo
environment:
- TZ=Asia/Shanghai
- SUB_URL=https://your-subscription-url
- SUB_CRON=0 */6 * * *
- SECRET=your-dashboard-password
- ALLOW_LAN=true使用本地 config.yaml 配置文件,适合手动管理配置的用户。
docker run -d \
--name glash \
--restart always \
-p 7890:7890 \
-p 7891:7891 \
-p 9090:9090 \
-v /path/to/config.yaml:/root/.config/mihomo/config.yaml:ro \
gangz1o/glash:latestservices:
glash:
image: gangz1o/glash:latest
container_name: glash
restart: always
ports:
- '7890:7890' # HTTP 代理
- '7891:7891' # SOCKS5 代理
- '9090:9090' # Dashboard
volumes:
- ./config.yaml:/root/.config/mihomo/config.yaml:ro
environment:
- TZ=Asia/Shanghai
- ALLOW_LAN=trueTUN 模式可接管系统全局流量,无需手动配置代理。设置 TUN_ENABLED=true 后,每次重启均自动恢复 TUN 状态,无需手动在 Dashboard 中开启。
⚠️ 注意:TUN 模式需要容器具有NET_ADMIN能力和/dev/net/tun设备,请勿在不受信任的环境中使用。
docker run -d \
--name glash \
--restart unless-stopped \
--cap-add NET_ADMIN \
--device /dev/net/tun:/dev/net/tun \
-p 7890:7890 \
-p 7891:7891 \
-p 9090:9090 \
-v /path/to/config:/root/.config/mihomo \
-e SUB_URL=https://your-subscription-url \
-e TUN_ENABLED=true \
gangz1o/glash:latestservices:
glash:
image: gangz1o/glash:latest
container_name: glash
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- '7890:7890'
- '7891:7891'
- '9090:9090'
volumes:
- ./config:/root/.config/mihomo
environment:
- TZ=Asia/Shanghai
- SUB_URL=https://your-subscription-url
- TUN_ENABLED=true默认自动匹配当前平台,如需指定架构:
# x86_64 / amd64
docker pull --platform linux/amd64 gangz1o/glash:latest
# ARM64 (Apple Silicon / ARM 服务器)
docker pull --platform linux/arm64 gangz1o/glash:latest
⚠️ 重要提示:使用订阅功能时,配置目录必须可写,不能使用:ro(只读)模式挂载!
| 变量 | 说明 | 示例 |
|---|---|---|
SUB_URL |
订阅地址,支持返回 Clash 配置的链接 | https://example.com/sub |
SUB_CRON |
自动更新的 cron 表达式 | 0 */6 * * * |
SECRET |
Dashboard 登录密钥,会自动注入配置 | my-password |
ALLOW_LAN |
是否允许局域网连接,默认不修改配置 | true 或 false |
TUN_ENABLED |
是否启用 TUN 模式,重启后自动恢复(需配合 Docker 权限) | true 或 false |
DOWNLOAD_PROXY |
首次下载订阅时使用的外部代理(可选) | http://192.168.1.1:7890 |
SUB_USER_AGENT |
下载订阅时使用的 User-Agent,默认 clash.meta(可选) |
clash.meta |
DNS_OVERRIDE |
DNS复写功能,此功能仅针对不含DNS规则内容的Clash订阅链接(可选) | true 或 false |
-
启动时(本地有配置):
- 先用本地配置启动 mihomo
- 等待代理服务就绪后,通过本地代理 (127.0.0.1:7890) 更新订阅
- 更新成功后自动重启生效
-
启动时(本地无配置):
- 先尝试直连下载订阅
- 直连失败时,如果设置了
DOWNLOAD_PROXY,使用外部代理下载 - 下载成功后启动 mihomo
-
定时更新:
- 如果设置了
SUB_CRON,按照 cron 表达式定时更新 - 通过本地代理下载订阅
- 更新成功后自动重启 mihomo 生效
- 更新失败时保持当前配置运行
- 如果设置了
-
SECRET 注入:
- 如果设置了
SECRET,会自动写入配置文件的secret字段 - 方便统一管理 Dashboard 密码
- 如果设置了
-
ALLOW_LAN 注入:
- 如果设置了
ALLOW_LAN,会自动写入配置文件的allow-lan字段 - 设置为
true允许局域网连接,false禁止
- 如果设置了
-
TUN_ENABLED 注入:
- 如果设置了
TUN_ENABLED=true,每次启动和订阅更新后自动向配置写入 TUN 模式配置段 - 解决了通过 Dashboard UI 开启 TUN 后重启丢失状态的问题
- 需要同时在 docker-compose.yml 中开启
NET_ADMIN权限和/dev/net/tun设备
- 如果设置了
提示:如果订阅地址需要代理访问且本地没有配置文件,请设置
DOWNLOAD_PROXY指向一个可用的代理。
| 表达式 | 说明 |
|---|---|
0 */6 * * * |
每 6 小时更新 |
0 0 * * * |
每天凌晨更新 |
0 */12 * * * |
每 12 小时更新 |
*/30 * * * * |
每 30 分钟更新 |
0 8 * * * |
每天早上 8 点更新 |
docker exec glash cat /var/log/subscription.log你的 config.yaml 必须包含以下配置才能正常使用 Dashboard:
# 允许外部访问 API
external-controller: 0.0.0.0:9090
或者是
external-controller::9090
# 密钥(用于登录dashboard ,可不填,建议填上,提高安全性)
secret: ''| 端口 | 用途 |
|---|---|
| 7890 | HTTP 代理 |
| 7891 | SOCKS5 代理 |
| 7892 | 混合代理 (HTTP + SOCKS5) |
| 9090 | RESTful API & Dashboard |
启动后访问:http://127.0.0.1:9090/ui/
首次访问需要配置:
- 后端地址:
http://127.0.0.1:9090 - 密钥:与 config.yaml 中的
secret一致
port: 7890
socks-port: 7891
allow-lan: true
mode: rule
log-level: info
# Dashboard 必需配置
external-controller: 0.0.0.0:9090
proxies:
- name: '节点名称'
type: vmess
server: example.com
port: 443
uuid: your-uuid
# ... 其他配置
proxy-groups:
- name: '🚀 节点选择'
type: select
proxies:
- 节点名称
rules:
- GEOIP,CN,DIRECT
- MATCH,🚀 节点选择现象:通过 HTTPS 地址访问 Dashboard(例如 https://metacubex.github.io/metacubexd/),填入后端地址 http://your-server:9090 后,浏览器报错 Mixed Content 并拒绝请求。
原因:HTTPS 页面不允许发起 HTTP 请求,属于浏览器安全限制,无法绕过。
解决方案(推荐):用反向代理同时代理前端页面和 API
在服务器上配置 nginx,将同一个 HTTPS 域名同时反代 Dashboard UI 和 mihomo API:
server {
listen 443 ssl;
server_name your-domain.com;
# ssl_certificate / ssl_certificate_key 省略
# 反代 Dashboard UI
location /ui/ {
proxy_pass http://127.0.0.1:9090/ui/;
}
# 反代 mihomo API(Dashboard 会向同域名发起 API 请求)
location / {
proxy_pass http://127.0.0.1:9090/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}配置完成后,通过 https://your-domain.com/ui/ 访问 Dashboard,后端地址填 https://your-domain.com,前端和 API 均走 HTTPS,不再触发混合内容限制。
备选方案:直接用 HTTP 地址访问内置 Dashboard,例如 http://your-server:9090/ui/,避免 HTTPS 限制。
- 检查
SUB_URL是否正确,可在宿主机用curl -v "$SUB_URL"验证是否可以直连访问 - 如果订阅地址需要代理才能访问,且本地没有现成配置文件,请通过
DOWNLOAD_PROXY提供一个可用的外部代理:-e DOWNLOAD_PROXY=http://192.168.1.1:7890
- 查看容器日志确认具体报错:
docker logs glash
- 查看订阅更新专项日志:
docker exec glash cat /var/log/subscription.log
TUN 状态写在运行时内存中,容器重启后不会保留。请通过环境变量持久化:
environment:
- TUN_ENABLED=true同时确保 compose 文件中已添加必要权限:
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun设置后,每次重启容器都会自动向配置文件注入 TUN 配置段并生效。
- 确认容器正在运行:
docker ps | grep glash - 确认宿主机端口映射正确(9090 已映射):
docker port glash - 如果是远程服务器,请将
127.0.0.1替换为服务器实际 IP,并确认防火墙已放行 9090 端口 - 检查配置文件中是否包含
external-controller: 0.0.0.0:9090(缺少此配置则 API 不启动)
- 使用
:ro(只读)模式挂载单个文件时,直接重启容器即可生效 - 使用订阅功能时禁止用
:ro模式,因为 start.sh 需要向配置文件写入secret、allow-lan等字段 - 若修改配置后容器行为未变化,请先检查挂载路径是否正确:
docker exec glash cat /root/.config/mihomo/config.yaml | head -5
如果你有好的需求或者发现了一些Bug, 欢迎PR,一起共建开源生态
https://docker.1ms.run
https://docker.kejilion.pro
https://docker-registry.nmqu.com
https://docker.xuanyuan.me
https://dockerproxy.net
https://hub.rat.dev
https://hub1.nat.tf
https://hub2.nat.tf
https://hub3.nat.tf
https://hub4.nat.tf
https://mirror.iscas.ac.cn
https://docker.hpcloud.cloud
https://docker.apiba.cn- Mihomo: v1.19.22
- MetacubexD: v1.244.2
- 架构: linux/amd64, linux/arm64
有问题、有想法,或者就是想和一群搞开发的人聊聊?
- 论坛:linux.do —— 来这里讨论、分享你的配置、反馈问题,欢迎常驻。
感谢以下开源项目:
- Mihomo - 强大的代理内核
- MetacubexD - 现代化 Web Dashboard
|
全网超划算的 ChatGPT Plus / Claude Pro 会员充值平台!支持官方正版订阅,独立账号、共享车位应有尽有。多通道稳定续费,售后无忧,让您用更低的成本体验最顶尖的 AI 工具。
🎁 专属 9 折 优惠码: |
MIT