Mihomo Full 的安装与使用说明。
License: MIT
原则:能自动的绝不让你改配置文件;安全永远优先于省事。
订阅地址、机场链接、Bot Token 都是私密凭据,不要发到群聊、截图或 GitHub。
两种用法:
| 方案 | 适用场景 | 需要 VPS / v2ray-agent | 说明 |
|---|---|---|---|
| A. 链式代理 | 机场作入口 + 自建落地 | 需要 | 见下方「1. 安装」 |
| B. 仅机场 | 只用机场节点,不要落地链 | 不需要 | 见「2. 方案 B:仅机场模式」 |
下面「1. 安装」章节说明的是方案 A(链式);只想用机场节点、不想折腾 VPS 的,直接跳到「2. 方案 B」。
内核: 配置按稳定版 Mihomo v1.19.33 校验,不跟每天变动的 Alpha。这一版修了 CVE-2026-97031:畸形的 TLS ECH 握手可以把进程内存打满。客户端内核请用 1.19.33 或同一条稳定线的更新版本;更旧的内核读到不认识的字段会静默忽略,但拿不到这个修复。
下面四步是安装脚本无法替你省掉的前提。做完再运行一键安装。
- 准备一台可 SSH 登录的 Linux VPS(建议常见 Debian / Ubuntu)。
- 使用 root(或
sudo -i)登录。 - 按 v2ray-agent 官方说明安装并运行(本项目不安装、不升级、不卸载它)。
- 用其菜单(常见为
vasma)添加至少一种入站/协议,确保已生成 clashMeta 订阅文件。 - 在 VPS 上确认目录里有内容(路径以你实际安装为准,默认常见为):
ls -la /etc/v2ray-agent/subscribe_local/clashMeta有文件即可。若目录不存在或为空,先回到 v2ray-agent 完成节点配置,不要急着装 Mihomo Full。
- 在域名服务商处添加 A 记录(或 AAAA):主机名指向你的 VPS 公网 IP。
- 等待解析生效(通常几分钟,最长可能数小时)。
- 在 VPS 上自检(把
你的域名.com换成真实域名):
# 应能解析到本机公网 IP
getent ahostsv4 你的域名.com || ping -c1 你的域名.com解析不对时不要继续申请证书或安装,否则后续会失败。
订阅必须走 HTTPS。脚本不会在无证书时用明文 HTTP 暴露配置。
- 安装 Nginx(若尚未安装):
# Debian / Ubuntu
apt update && apt install -y nginx
# RHEL / CentOS / Fedora
dnf install -y nginx- 启动并设置开机自启:
systemctl enable --now nginx- 安装 certbot 并签发证书(推荐):
# Debian / Ubuntu
apt install -y certbot python3-certbot-nginx
# RHEL / CentOS
dnf install -y certbot python3-certbot-nginx-
确认防火墙 / 安全组已放行 80 和 443(证书申请与 HTTPS 都依赖这两端口)。按下面逐项检查:
4.1 云厂商安全组 / 防火墙(几乎所有 VPS 都要查)
- 登录云服务商控制台(如阿里云、腾讯云、AWS、Azure、Oracle、Vultr、Linode 等)。
- 找到该 VPS 实例绑定的 安全组 / Network ACL / Firewall rules。
- 入站(Inbound)规则中应允许:
- TCP 80(来源建议先
0.0.0.0/0,仅用于申请/续期证书;若你有固定 IP 也可收紧) - TCP 443(来源
0.0.0.0/0,否则外网无法访问 HTTPS 订阅)
- TCP 80(来源建议先
- 若使用 IPv6,同时放行对应的 IPv6 入站 80/443。
- 保存规则后等待约 1 分钟再生效。
4.2 系统防火墙(在 VPS 上执行)
先看是否启用了防火墙:
# Ubuntu/Debian 常见 command -v ufw >/dev/null && ufw status verbose # RHEL/CentOS/Fedora 常见 command -v firewall-cmd >/dev/null && firewall-cmd --state && firewall-cmd --list-all # 通用 command -v iptables >/dev/null && iptables -L INPUT -n | head -30
若 ufw 为 active,放行并重载:
ufw allow 80/tcp ufw allow 443/tcp ufw reload ufw status
若 firewalld 在运行:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services
4.3 本机监听确认(可选但推荐)
ss -lntu | grep -E ':80|:443' || netstat -lntu | grep -E ':80|:443'
看到 Nginx(或 certbot 临时)在听 80/443 即正常。若安全组已放行但这里无监听,先保证
systemctl status nginx为 running。4.4 外网探测(在你自己电脑上,可选)
# 把 IP 换成 VPS 公网 IP curl -sI --connect-timeout 5 http://VPS公网IP/ | head -5
能连上(哪怕返回 404/301)说明 80 大致通;443 可在证书配好后用
curl -sI https://你的域名验证。 -
为域名申请证书(把
你的域名.com换成真实域名):
certbot --nginx -d 你的域名.com按提示完成。成功后应存在:
ls /etc/letsencrypt/live/你的域名.com/fullchain.pem
ls /etc/letsencrypt/live/你的域名.com/privkey.pem- 若你使用自己购买的证书:在对应域名的 Nginx
server中配置好ssl_certificate与ssl_certificate_key,并执行:
nginx -t && systemctl reload nginx- 浏览器访问
https://你的域名.com应无证书告警(至少证书有效)。
不要跳过本步。 无有效 HTTPS 时,安装脚本会报错并再次打印操作指示。
- 在机场用户中心复制 Clash / Mihomo 订阅链接。
- 必须是以
https://开头的地址。 - 不要把完整链接发到公开群或提交到 GitHub。
- 安装时粘贴一次即可;以后换机场用管理菜单,不用改客户端固定地址。
确认 A~D 都完成后,在 VPS 上以 root 执行:
bash <(curl -fsSL https://raw.githubusercontent.com/dukangalex/mihomo-full/main/install.sh)按提示填写:
- 机场订阅链接(步骤 D)
- 域名(不要带
https://,例example.com) - clashMeta 目录(默认路径直接回车即可)
确认摘要后回车。脚本将:
- 下载固定版本代码并生成配置
- 自动写入 Nginx 订阅路径并尝试 reload
- 打印唯一需要导入客户端的固定 HTTPS 订阅地址
固定地址只在首次安装时生成。以后更换机场、更新落地节点或更新项目时,一般不需要更换客户端订阅地址。
- 复制终端里的
https://你的域名/assets/...完整地址。 - 在 Clash Meta / Mihomo 等客户端中「从 URL 导入订阅」。
- 选中策略组后开始使用。
- 日常维护优先用:
mff如果你不需要自建 VPS 落地、只想用机场节点直连目标,不用走 1.1~1.3 的整套 VPS/Nginx/HTTPS 流程,改用覆写脚本即可。
- 不需要 VPS,不需要 v2ray-agent,不需要域名和证书。
- 机场节点保留。地区按节点名自动识别,有节点才建组,每组三层:隐藏自动选择、隐藏负载均衡、对外手动选择。
- 核心出口:默认代理、节点选择、自动选择、负载均衡、故障转移。故障转移就是内核的
fallback,没有另一种叫 Failover 的策略。它按订阅顺序用第一个还活着的节点,连续失败 3 次才换;更靠前的节点恢复后会切回去。默认出口仍是自动选择。 - 服务组使用英文名,和 FCM、TikTok 一致:Bilibili、YouTube、Google、Telegram、Microsoft、Apple、Claude 等。Bilibili 和 FCM 默认直连,需要代理时再手动切。链式模板仍把 B 站钉在底层直连,国内视频不绕落地。
- 健康检查没选中不测,间隔 600 秒,只认
generate_204的 204。一个可用节点都没有时拒绝,而不是漏成直连。 - 额外获得:完整的规则集(含微信规则集)、DNS 防泄漏、Sniffer、银行/微信直连保护、STUN/远控例外等安全加固。行为细节见
docs/AIRPORT_MODE_POLICY.md。
在支持"订阅覆写/进策处理脚本"的客户端(如 FlClash、Bettbox 等 Mihomo/Clash Meta 内核客户端)中,为你的机场订阅启用覆写脚本,脚本地址填写:
https://raw.githubusercontent.com/dukangalex/mihomo-full/main/airport_overwrite.js
具体填写位置因客户端而异,一般在订阅的「编辑」或「高级设置」里找类似「覆写脚本 / Override Script / Pre-processing」的选项,把上面这个地址粘贴进去,保存后刷新订阅即可。
若使用私有机场订阅仓库,或 GitHub raw 在你的网络环境下访问不稳定,可以把 airport_overwrite.js 下载到本地,改用客户端支持的本地文件路径代替上面的 URL。
| 方案 | 需要 VPS/v2ray-agent | 落地节点 | 适用场景 |
|---|---|---|---|
| A. 链式 | 需要 | 自建 VPS 落地 | 想要固定且可控的落地出口 IP,或对机场落地质量不放心 |
| B. 仅机场 | 不需要 | 机场自身节点 | 不想折腾 VPS,直接信任机场的落地质量 |
两种方案的安全规则和 Sniffer 保持一致。DNS 解析器也相同,但链式模式的境外 DoH 走「国外服务」,机场模式没有这个组,同步时改写成「默认代理」。详见 docs/BEHAVIOR_POLICY.md 和 docs/AIRPORT_MODE_POLICY.md。
- 更换机场:直接在客户端里改订阅链接即可,不涉及本项目。
- 更新覆写脚本:多数客户端会按你设置的间隔自动重新拉取
airport_overwrite.js;也可以在客户端里手动「刷新订阅」或「更新覆写」。策略组有变更时,请手动刷新一次,否则界面还是旧缓存。 - 规则集、DNS 等安全加固内容随本仓库更新;仓库有更新时,客户端下次拉取覆写脚本会自动生效,不需要手动改动。
安装脚本会尽量自动:
- 检测域名是否已有 HTTPS 证书(Let's Encrypt 路径或站点中的
ssl_certificate) - 写入
/etc/nginx/snippets/mihomo-full-assets.conf - 在匹配的
server_name站点中插入include - 执行
nginx -t并 reload
按终端里的【方式 A / B】操作,或回到上文 步骤 C,完成后再重新执行 1.2 的安装命令。
说明证书或 Nginx 已存在,但脚本没匹配到站点文件。按终端提示:
- 打开该域名的 HTTPS
server { ... }配置 - 加入一行:
include /etc/nginx/snippets/mihomo-full-assets.conf;- 执行:
nginx -t && systemctl reload nginxnginx -t
curl -fsSI "https://你的域名/你的订阅路径"访问不存在的 /assets/任意不存在路径 应返回 404。
安装完成后,推荐统一使用:
mff进入管理菜单。
兼容入口仍可使用:
mihomo-full进入 mff 后可以:
- 更换机场订阅
- 更新 VPS 落地节点
- 管理规则集
- 查看当前状态
- 执行配置完整性审计
- 更新 Mihomo Full
- 卸载 Mihomo Full
进入:
mff
→ 更换机场订阅
输入新的 HTTPS 机场订阅地址并确认。
更换完成后项目会自动重新生成配置。
客户端原来的固定订阅地址不需要修改。
也可以直接执行:
mihomo-full --set-airport 'https://example.invalid/subscription'更新 v2ray-agent 后,进入:
mff
→ 更新 VPS 落地节点
程序会重新读取 v2ray-agent 的 clashMeta 节点并生成配置。
客户端固定订阅地址不需要修改。
进入:
mff
→ 规则集管理
可以选择:
- 查看当前覆盖
- 增加/替换规则集
- 禁用规则集
- 恢复模板默认
增加规则集时按照提示依次输入:
- 规则集名称
- HTTPS MRS 地址
- 类型:
domain或ipcidr - 命中策略组
不需要编辑 YAML。
核心安全规则不能通过管理入口关闭或覆盖。
说明:微信专用规则集(
日常检查:
mff
→ 配置完整性审计也可以直接:
mihomo-full --check
mihomo-full --audit如果检查失败,先不要继续重启服务或删除文件,根据终端提示处理。
安装完成后会得到一个固定 HTTPS 地址。
地址形式类似:
https://example.com/assets/普通英文词组...
它不是 UUID、十六进制字符串、Base64 字符串,也不会直接使用 proxy、node、subscribe、config 等明显的节点语义。
请把完整地址当作私有访问凭据保存。
不要发布到:
- GitHub
- Issue
- 公开群组
- 公开截图
- 公共日志
如果地址泄露,应尽快重新生成固定地址并重新配置客户端。
Telegram Bot 是可选的远程管理入口。
- 打开 Telegram。
- 搜索官方
@BotFather。 - 发送:
/newbot
- 按提示填写 Bot 名称。
- 按提示填写 username。
- 保存 BotFather 返回的 Bot Token。
不要把 Token 发到公开群组或提交到 GitHub。
Bot 只用数字 User ID 识别管理员,不能用 @用户名。
按下面任一方式获取你自己的数字 ID:
方式 A(推荐)
- 打开 Telegram,搜索
@userinfobot(或@getidsbot)。 - 进入对话,点击 Start / 发送
/start。 - 机器人回复里的 Id / Id 一串纯数字(例如
123456789)就是你的 User ID。 - 把这串数字记下来,安装 Bot 时填入「Telegram 管理员 User ID」。
方式 B
- 搜索
@RawDataBot,发送任意消息。 - 在返回的 JSON 里找到
"id":后面的数字(在from或message对象中)。 - 使用该数字作为管理员 User ID。
注意:
- User ID 是一串数字,不是
@xxx用户名。 - 可填写多个管理员,用英文逗号分隔,例如:
123456789,987654321。 - 只有列表中的 ID 才能操作 Bot;填错会导致你无法管理。
在 VPS 上执行:
bash /opt/mihomo-full/telegram-bot/install-telegram-bot.sh首次安装时程序会依次询问:
Bot Token
Telegram 管理员 User ID
VPS 每月总流量 GB
VPS 到期时间
流量提醒阈值
其中:
- VPS 每月总流量是购买 VPS 时确定的套餐额度。
- 不清楚额度时可以填写
0,以后再设置。 - 不清楚到期时间时可以留空,以后再设置。
- 流量提醒阈值默认 80%。
统计网卡会自动检测默认 IPv4 出口网卡,一般不需要手动填写。
安装完成后,在 Telegram 打开 Bot,发送:
/start
看到管理菜单即表示绑定成功。
Bot 中可以使用:
- 更换机场订阅
- 更新 VPS 落地节点
- 查看当前状态
- 查看 VPS 流量
- 查看 VPS 到期时间
- 设置月总流量
- 设置到期时间
- 设置流量提醒阈值
- 增加/替换规则集
- 禁用规则集
- 恢复规则集
- 配置完整性检查
- 卸载 Telegram Bot
- 卸载 Mihomo Full
需要确认的操作会要求再次确认。
Bot 不提供任意 Shell 命令执行。
进入 Bot:
📈 VPS流量/到期
→ 设置月流量
输入购买 VPS 时确定的月总流量。
例如:
500
表示 500 GB。
进入:
📈 VPS流量/到期
→ 设置到期时间
按照 Bot 提示输入日期或时间。
Bot 显示的是 VPS 本机网卡统计值。
它适合用于日常提醒和估算,不等同于服务商后台账单。
最终计费以 VPS 服务商后台为准。
进入:
📦 规则集
→ 增加/替换
按照 Bot 的四步提示完成即可,不需要输入 | 分隔格式,也不需要编辑配置文件。
进入:
🤖 卸载 Telegram Bot
连续确认后,Bot 会自动停止并删除自己的服务、程序和私有配置。
不会删除 Mihomo Full 主配置。
不会删除、停止或修改 v2ray-agent。
进入:
🗑 卸载 Mihomo Full
按照确认提示操作。
也可以在 VPS 上执行:
mff
→ 卸载 Mihomo Full或者:
mihomo-full uninstall卸载器会要求最终确认。
v2ray-agent 不会因为卸载 Mihomo Full 而被删除、停止或修改。
以下两个玩法彼此独立,也不属于 Mihomo Full 的安装必需项。
项目地址:
https://github.com/cmliu/edgetunnel
使用方法、部署方式和 Cloudflare 端配置请以该项目的官方说明为准。
本项目只提供该玩法的使用入口说明,不内置第三方项目代码。
项目地址:
https://github.com/alienwaregf/Cloudflare-Country-Specific-IP-Filter
使用方法和 IP 更新方式请以该项目的官方说明为准。
它与 EdgeTunnel 独立,可以单独使用。
mff
→ 查看当前状态mff
→ 更新 Mihomo Full更新前不需要删除现有安装。
mihomo-full --generatemihomo-full --checkmihomo-full --audit不需要。
只要使用的是安装器生成的固定订阅地址,更换机场后地址保持不变。
不会。
Mihomo Full 使用 v2ray-agent 提供的 clashMeta 节点,不负责管理 v2ray-agent 自身。
不会。
Mihomo Full 的卸载器只处理本项目自己的资源。
立即在 BotFather 撤销旧 Token,生成新 Token,然后重新运行:
bash /opt/mihomo-full/telegram-bot/install-telegram-bot.sh在 VPS 上进入:
mff
→ 查看当前状态固定地址保存在 VPS 私有配置中。
不要把包含完整地址的终端截图公开。
在 Bot 中选择:
🤖 卸载 Telegram Bot
只会移除 Bot,不会卸载 Mihomo Full。
一般不需要关。VPS 有没有 IPv6 和客户端本机网络有没有 IPv6 是两件独立的事:VPS 没有 IPv6,最多是极少数纯 IPv6 网站连不上(安全的失败,不是泄露);但如果客户端本机网络有 IPv6、配置却没有相应开启拦截,反而可能让 IPv6 流量绕开代理直连,这才是真正的风险。
只有在客户端设备所在网络本身也没有 IPv6时,关闭才有意义(纯粹省掉无效的 AAAA 查询延迟,不会有功能损失)。判断方法、利弊分析和具体开关步骤见 docs/IPV6_POLICY.md。
- 安全永远优先于省事:没有 HTTPS 证书时不要强行用 HTTP 暴露订阅。
- 不要把真实机场订阅、节点凭据、Bot Token 或固定订阅地址提交到 GitHub,也不要发到群聊或公开截图。
- 不要公开完整固定订阅地址;泄露后应视为凭据已曝光并尽快轮换。
- 不要直接编辑生成后的
output/full-config.yaml。 - 规则集优先通过
mff或 Telegram Bot 管理。 - 不要手动删除
/etc/v2ray-agent;本项目不接管其生命周期。 - 不要为了处理单个问题而删除现有功能或配置模块。
- v2ray-agent:https://github.com/mack-a/v2ray-agent
- Mihomo:https://github.com/MetaCubeX/mihomo
- Cloudflare EdgeTunnel:< 6DC2 a href="https://github.com/cmliu/edgetunnel">https://github.com/cmliu/edgetunnel
- Cloudflare Country-Specific IP Filter:https://github.com/alienwaregf/Cloudflare-Country-Specific-IP-Filter
- 仅机场覆写脚本:https://raw.githubusercontent.com/dukangalex/mihomo-full/main/airport_overwrite.js
- 公共行为策略:
docs/BEHAVIOR_POLICY.md - 机场模式行为规范:
docs/AIRPORT_MODE_POLICY.md - IPv6 策略与开关说明:
docs/IPV6_POLICY.md
- 本项目按「现状」提供,作者与贡献者不就使用本软件产生的任何直接或间接损失承担责任,包括但不限于账号封禁、流量费用、服务中断、数据泄露或配置失误。
- 你应遵守所在地法律法规及 VPS、机场、Telegram、域名等服务商的服务条款。本项目不提供任何形式的违法用途指导。
- 网络代理、订阅与节点涉及隐私与安全风险;请自行评估并做好凭据保管。因密钥/订阅泄露造成的损失由使用者自行承担。
- 第三方项目(如 v2ray-agent、Mihomo、Nginx、certbot、Telegram、以及下文鸣谢中的进阶玩法项目等)的行为与可用性以其官方说明为准,本项目不对其变更或故障负责。
- 在公共模板仓库中,请只使用占位配置;切勿提交真实订阅、Token 或固定订阅完整 URL。
感谢以下项目与社区(排名不分先后):
- v2ray-agent — VPS 多协议落地与 clashMeta 订阅生成
- Mihomo (MetaCubeX) — 内核与规则能力
- Nginx — 反向代理与静态订阅托管
- Let's Encrypt / certbot — 免费 HTTPS 证书
- Cloudflare EdgeTunnel (cmliu/edgetunnel) — 文档中引用的 Cloudflare 免费机场进阶玩法
- Cloudflare Country-Specific IP Filter — 文档中引用的 Cloudflare 优选 IP 进阶玩法
- 本项目部分策略组设计、规则组织方式以及机场覆写思路参考并借鉴了 MyClash。感谢 AIsouler/MyClash 项目的开源实践与思路贡献。本项目在此基础上根据自身的链式代理、机场覆写和安全策略需求进行调整与维护。
- 机场模式的故障转移健康检查(lazy、600 秒、连续失败 3 次、空组拒绝)对齐 HiClash。测速地址仍用本仓库模板的
generate_204,只认 204。 - 规则集与社区贡献者(广告/地理/防钓鱼等公开规则源)
- 所有提交 Issue、建议与测试反馈的用户
本仓库仅作入口说明与链接引用,不内置上述第三方项目的代码;使用方式以其官方仓库为准。
若你是相关项目作者,需要调整署名或链接,欢迎通过仓库 Issue 联系。
本仓库源代码与文档以 MIT License 发布,详见根目录 LICENSE 文件。
第三方项目(v2ray-agent、Mihomo、EdgeTunnel 等)仍遵循各自原有许可证,与本仓库许可相互独立。