- 纯白色冰淇淋2025-11-1335921
简介
-
mihomo核心 (原clash.meta) 官方文档:https://wiki.metacubex.one/startup/- 常用客户端里, 缺少
linux服务器的docker部署的使用方案- 本篇教程在
ubuntu下的docker环境下实现mihomo核心代理和自动订阅更新项目地址
https://github.com/pure-white-ice-cream/mihomo-sub快速部署```
services:
mihomo:
image: purewhiteicecream/mihomo-sub:latest
container_name: mihomo-sub
volumes:
- /opt/mihomo-sub:/root/.config/mihomo
environment:
- "TZ=Asia/Shanghai"
- "sub_url=https://这里换成你的订阅地址"
ports:
- "7890:7890"
- "9090:9090"
```分步解决, 原理同上面的项目docker compose```
services:
# mihomo 核心
mihomo:
image: metacubex/mihomo:v1.19.15
container_name: mihomo
restart: always
environment:
- "TZ=Asia/Shanghai"
ports:
- "7890:7890"
- "9090:9090"
# 挂载卷根据自己喜好位置选择
volumes:
- "/opt/mihomo:/root/.config/mihomo"# 订阅转换工具
subconverter:
image: tindy2013/subconverter:0.9.0
container_name: subconverter
restart: always
environment:
- "TZ=Asia/Shanghai"
ports:
- "25500:25500"
```WEB 面板- 下载最新面板:
https://github.com/MetaCubeX/metacubexd/releases- 将下载到的文件解压复制到
/root/.config/mihomo/ui路径下, 保证存在/root/.config/mihomo/ui/index.html文件定期更新订阅脚本```
#!/bin/bash这里写你的订阅连接, 转换成https://www.urlencoder.org/中的格式
url=""
function end {
log+="\n"
printf "%b" "$log" >> $LOG_FILE
exit 0
}CONFIG_DIR="/opt/mihomo"
CONFIG_FILE="$CONFIG_DIR/config.yaml"
LOG_FILE="$CONFIG_DIR/log.txt"output="" # 保存生成的 config 内容
log="" # 保存日志内容output+="mixed-port: 7890\n"
output+="external-ui: /root/.config/mihomo/ui\n"订阅文件更新
log+="[$(date -R)] \n\t订阅文件更新...\n\t"
sub_response=$(curl -s --max-time 15 -w "%{http_code}" -o /tmp/mihomo_temp.yml "http://127.0.0.1:25500/sub?target=clash&url=$url")
sub_exit_code=$?if [ "$sub_exit_code" -ne 0 ]; then
log+="Error❌️: 网络错误,退出码: $sub_exit_code\n\t"
end
elif [ "$sub_response" -ne 200 ]; then
log+="Error❌️: 订阅文件更新失败,响应码: $sub_response\n\t"
end
fioutput+="$(awk 'NR>=3' /tmp/mihomo_temp.yml)""\n"
printf "%b" "$output" > $CONFIG_FILE
log+="订阅文件更新成功 ✅\n\t"配置重新加载
log+="配置重新加载...\n\t"
reload_response=$(curl -s --max-time 15 -w "%{http_code}" -X PUT "http://127.0.0.1:9090/configs?force=true" -H "Content-Type: application/json" -d '{"path":"","payload":""}')
reload_exit_code=$?if [ "$reload_exit_code" -ne 0 ]; then
log+="Error❌️: 网络错误,退出码: $reload_exit_code\n\t"
end
elif [ "$reload_response" -ne 204 ]; then
log+="Error❌️: 配置重新加载失败,响应码: $reload_response\n\t"
end
filog+="配置重新加载完成 ✅\n\t"
end- 编辑定时任务: `crontab -e```` # 参考写法, 文件路径改成自己脚本的路径 # m h dom mon dow command 5 * * * * bash /opt/mihomo/sub.sh ```title: mihomo核心在docker部署教程 date: 2025/11/04 12:00:00 原作者: 纯白色冰淇淋主楼 - 大帅哥10小时前6194
感谢大佬教程
- 纯白色冰淇淋10小时前35921
新增内容, 做了个一键部署的镜像
项目地址
https://github.com/pure-white-ice-cream/mihomo-sub快速部署```
services:
mihomo:
image: purewhiteicecream/mihomo-sub:latest
container_name: mihomo-sub
volumes:
- /opt/mihomo-sub:/root/.config/mihomo
environment:
- "TZ=Asia/Shanghai"
- "sub_url=https://这里换成你的订阅地址"
ports:
- "7890:7890"
- "9090:9090" - 辟支独觉10小时前66951
这个是用docker部署透明网关吗?
- naive10小时前31223
这个配置文件不是应该自带自动更新吗
- 纯白色冰淇淋10小时前35921
- 纯白色冰淇淋10小时前35921
- ChenLiang10小时前36988
- 纯白色冰淇淋10小时前35921
访问路径是
http://xxx.xxx.xxx.xxx/ui没输入/ui回直接调用核心的api - naomi23310小时前66952
用proxy-provider,订阅定时更新,可以不用写脚本
- 纯白色冰淇淋10小时前35921
感谢
目前只在官方相关材料里找到这两个相关的描述, 找不到更详细的资料了, 目前尚未实践, 不知道网上有没有详细教程```
Mihomo 格式的节点或支持 *ray 的分享格式
proxy-providers:
provider1:
type: http # http 的 path 可空置,默认储存路径为 homedir 的 proxies 文件夹,文件名为 url 的 md5
url: "url"
interval: 3600
path: ./provider1.yaml # 默认只允许存储在 mihomo 的 Home Dir,如果想存储到其他位置,请通过设置 SAFE_PATHS 环境变量指定额外的安全路径。该环境变量的语法同本操作系统的PATH环境变量解析规则(即Windows下以分号分割,其他系统下以冒号分割)
proxy: DIRECT
# size-limit: 10240 # 限制下载文件最大为10kb,默认为0即不限制文件大小
header:
User-Agent:
- "Clash/v1.18.0"
- "mihomo/1.18.3"
# Accept:
# - 'application/vnd.github.v3.raw'
# Authorization:
# - 'token 1231231'
health-check:
enable: true
interval: 600
# lazy: true
url: https://cp.cloudflare.com/generate_204
# expected-status: 204 # 当健康检查返回状态码与期望值不符时,认为节点不可用
override: # 覆写节点加载时的一些配置项
skip-cert-verify: true
udp: true
# down: "50 Mbps"
# up: "10 Mbps"
# dialer-proxy: proxy
# interface-name: tailscale0
# routing-mark: 233
# ip-version: ipv4-prefer
# additional-prefix: "[provider1]"
# additional-suffix: "test"
# # 名字替换,支持正则表达式
# proxy-name:
# - pattern: "test"
# target: "TEST"
# - pattern: "IPLC-(.*?)倍"
# target: "iplc x $1"
```proxy-providers 文件内容=== “yaml”
{.yaml linenums="1"} proxies: - name: "ss1" type: ss server: server port: 443 cipher: chacha20-ietf-poly1305 password: "password" - name: "ss2" type: ss server: server port: 443 cipher: chacha20-ietf-poly1305 password: "password"=== “uri”
{.yaml linenums="1"} ss://YWVzLTI1Ni1nY206bWV0YUAxMjcuMC4wLjE6NDQz#home vmess://eyJhZGQiOiIxMjcuMC4wLjEiLCJhaWQiOiIwIiwiYWxwbiI6IiIsImZwIjoiIiwiaG9zdCI6IiIsImlkIjoiMTIyMzQ1Njc4OSIsIm5ldCI6InRjcCIsInBhdGgiOiIiLCJwb3J0IjoiNDQzIiwicHMiOiJ2bWVzcyIsInNjeSI6ImF1dG8iLCJzbmkiOiIiLCJ0bHMiOiIiLCJ0eXBlIjoibm9uZSIsInYiOiIyIn0==== “base64”
{.text linenums="1"} c3M6Ly9ZV1Z6TFRJMU5pMW5ZMjA2YldWMFlVQXhNamN1TUM0d0xqRTZORFF6I2hvbWUKdm1lc3M6Ly9leUpoWkdRaU9pSXhNamN1TUM0d0xqRWlMQ0poYVdRaU9pSXdJaXdpWVd4d2JpSTZJaUlzSW1ad0lqb2lJaXdpYUc5emRDSTZJaUlzSW1sa0lqb2lNVEl5TXpRMU5qYzRPU0lzSW01bGRDSTZJblJqY0NJc0luQmhkR2dpT2lJaUxDSndiM0owSWpvaU5EUXpJaXdpY0hNaU9pSjJiV1Z6Y3lJc0luTmplU0k2SW1GMWRHOGlMQ0p6Ym1raU9pSWlMQ0owYkhNaU9pSWlMQ0owZVhCbElqb2libTl1WlNJc0luWWlPaUl5SW4wPQ==!!! note base64 的 uri 通常为提供商提供给 v2ray/xray 的订阅链接内容```
YAML/uri/base64不可写在同一文件,uri/base64不需要proxies:字段,直接书写即可 - 梨叔叔10小时前37900
佬 我一直没想明白,docker里面的镜像部署这个有啥用,是能把这个网络共享吗?
- 竹叶10小时前66953
能不能实现配置文件,节点列表,规则列表分离,在 github 上看到一个分流规则完善的项目,想规则跟着这个项目的更新,节点另外跟着机场更新 GitHub - Aethersailor/Custom_OpenClash_Rules: 分流完善的 OpenClash 订阅转换模板,搭配保姆级 OpenClash 设置教程,无需套娃其他插件即可实现完美分流、DNS无污染无泄漏,且快速的国内外上网体验,配套自动化域名规则提交机器人
还有一个问题,目前这个 docker 不支持 ARM,希望能支持 ARM64
- huohuo10小时前24039
我是开7890端口代理,给其他容器用,或者局域网代理
- yeluo00110小时前5622
相当于路由器代理插件的作用,可以通过将设备dns和网关指向docker的代理ip实现科学上网,也可以直接在局域网使用http-proxy等方式直接让设备或docker容器使用本代理
- 纯白色冰淇淋10小时前35921
- 梨叔叔10小时前37900
- 梨叔叔10小时前37900
- 梨叔叔10小时前37900
[运行这个镜像的机器ip:7890] 这个端口可以提供代理服务
别的应用, 系统, 可以用这个端口, 比如
windows, 比如linux, 或者docker自己, 用来拉镜像好滴好滴 这回懂了
- 纯白色冰淇淋10小时前35921
规则分离应该不难, 可以把规则地址参数留出来给
compose,yaml文件分离这块我始终没在mihomo文档上看到相关内容, 所以目前不知道怎么分离mihomo也有ARM64所以应该也可以支持,我争取后续有空的时候慢慢做

