软路由相关

PVE 一键部署 mihomo 旁路由:pve-mihomo-oneclick.sh 详细教程

2026-08-19 14 次阅读 1968 字 · 5 分钟

PVE 一键部署 mihomo 旁路由:pve-mihomo-oneclick.sh 详细教程



> 上一篇《PVE 部署 mihomo 旁路由(透明代理)详细教程》是手动一步步来,这篇是它的"一条命令版":在 PVE 宿主机上跑一个脚本,自动完成建 LXC、放行 TUN、装 mihomo + 面板,最后打印面板地址。
> 适用版本:PVE 7 / 8 / 9(本文在 PVE 9.2.10 实测通过),容器用 Debian 12 模板。

> ⚠️ 地址说明:下文 http://10.10.10.2/... 是作者内网存放配套文件的服务器地址。你自己的环境要把配套文件放到自己能访问的位置,并把所有 10.10.10.2 替换掉。

一、脚本是干什么的



pve-mihomo-oneclick.sh 在 PVE 宿主机上一条命令跑完整个旁路由部署:

  • 自动选择 / 下载 Debian 12/11 模板(不用手动记版本号)

  • 自动探测存储和网桥(不用关心 local-lvm 还是 vmbr0)

  • 创建 LXC 容器(512M 内存、4G 磁盘、特权模式)

  • 放行 TUN 设备并写入开机自启配置

  • 容器内自动安装 mihomo 内核 + metacubexd 面板 + geo 数据 + systemd 服务

  • 打印旁路由 IP、面板地址和密码


  • 不需要会 PHP、不需要编译、不需要手写 Clash 规则。

    > 📥 直接下载:pve-mihomo-oneclick.sh

    二、准备工作



    • 一台 PVE(7 / 8 / 9 均可),能 SSH 或网页控制台进入 root shell;

    • 一个 Clash 格式的节点订阅链接(脚本默认用 http://10.10.10.2/yaml/sub-clash.yaml,可在环境变量里改);

    • 主路由 DHCP 正常(爱快 / OpenWrt / 任意路由器)。


    • 配套文件清单(都放在 http://10.10.10.2/yaml/,可换成你自己的地址):

      文件用途
      pve-mihomo-oneclick.shPVE 宿主机一键部署脚本(本文主角)
      pgw-install.sh容器内一键安装脚本(mihomo + 面板 + 配置 + 开机自启)
      pgw-mihomo.yaml基础版配置(脚本内置,一般不用手动下)
      pgw-mihomo-split.yaml分流版配置(可选,见第十节)
      pgw-deploy.zip以上文件打包


      三、下载脚本并自检(先别急着部署)



      在 PVE 宿主机(root)执行:

      wget -qO /tmp/pve-mihomo-oneclick.sh http://10.10.10.2/blog/uploads/yaml/pve-mihomo-oneclick.sh
      bash /tmp/pve-mihomo-oneclick.sh --check
      


      --check 只做只读检查,不会创建任何东西。输出类似:

      [+] 探测模板…
      [+] 模板: debian-12-standard_12.12-1_amd64.tar.zst
      [+] 探测存储…
      [+] 存储: local
      [+] 探测网桥…
      [+] 网桥: vmbr0
      [+] 检查容器 ID…
      [+] VMID 200 空闲
      [+] 环境检查通过,未做任何修改。
      


      如果某一步报错(模板没有、找不到存储、网桥不对、VMID 被占用),按第十一节排查。

      四、正式部署(DHCP 自动拿 IP)



      bash /tmp/pve-mihomo-oneclick.sh 200 pgw-2026 pgw vmbr0
      


      四个参数依次是:

      参数含义示例
      第 1 个容器 ID(VMID)200
      第 2 个面板密码(建议纯字母数字)pgw-2026
      第 3 个容器主机名pgw
      第 4 个网桥名vmbr0


      部署过程会实时打印每一步,最后输出:

      ================= 部署完成 =================
      容器 ID    : 200(hostname: pgw)
      旁路由 IP  : 10.10.10.102
      节点面板   : http://10.10.10.102:9090/ui   密码: pgw-2026
      客户端设置 : 网关 = 10.10.10.102 , DNS = 10.10.10.102
      ===========================================
      


      五、正式部署(固定 IP)



      想给旁路由一个固定 IP(推荐,省得以后去主路由绑 DHCP),在第 4 个参数后面再加一个 IP:

      bash /tmp/pve-mihomo-oneclick.sh 200 pgw-2026 pgw vmbr0 10.10.10.200
      


      固定 IP 时:

    • 网关自动取 PVE 宿主机的默认网关(通常就是主路由的 LAN IP);

    • 容器 DNS 自动写成"网关 + 223.5.5.5";

    • 如果自动探测网关失败,用环境变量指定:PGW_GW=10.10.10.10 bash /tmp/pve-mihomo-oneclick.sh ...。


    • 六、环境变量(可选)



      变量作用默认值
      PGW_INSTALL_URL容器内安装脚本地址http://10.10.10.2/blog/uploads/yaml/pgw-install.sh
      PGW_TEMPLATE指定模板名,跳过自动选择自动选 Debian 12/11
      PGW_STORE指定存储自动选
      PGW_ROOTFS磁盘大小(GB)4
      PGW_GW固定 IP 时的网关PVE 默认网关


      示例:

      PGW_ROOTFS=8 PGW_TEMPLATE=debian-12-standard_12.12-1_amd64.tar.zst \
        bash /tmp/pve-mihomo-oneclick.sh 201 mypass pgw2 vmbr0 10.10.10.201
      


      七、脚本后台做了什么(原理)



    • 模板:pveam update + 自动挑 Debian 12/11 模板;本地没有就下载。

    • 建容器:pct create,特权模式(--unprivileged 0),net0 桥接到你指定的网桥,DHCP 或固定 IP。

    • TUN:往 /etc/pve/lxc/<ID>.conf 追加两行,放行 c 10:200 并把宿主机的 /dev/net/tun 挂进容器;同时确保宿主机 tun 模块开机自动加载。

    • DNS(固定 IP 时):容器内 /etc/resolv.conf 写入网关 + 223.5.5.5,保证能解析 apt 和 GitHub。

    • 容器内安装:下载 pgw-install.sh 并执行,它自动完成 7 步——装依赖、下载最新 mihomo 内核(GitHub 失败自动换 gh-proxy)、装 metacubexd 面板、下载 geoip/geosite、写配置、开 IP 转发、装 systemd 服务开机自启。

    • 等待服务:脚本会一直等到 mihomo.service 变 active 才结束。


    • 八、装好后验证



      面板能开不代表代理链路一定通,建议按顺序确认:

      # 1. 服务状态(应输出 active)
      pct exec 200 -- systemctl is-active mihomo
      
      # 2. 内核版本
      pct exec 200 -- /usr/local/bin/mihomo -v
      
      # 3. API 是否带密钥响应(把 pgw-2026 换成你的密码)
      pct exec 200 -- bash -c "curl -s -H 'Authorization: Bearer pgw-2026' http://127.0.0.1:9090/version"
      
      # 4. 代理出口测试(返回 204 说明节点链路通)
      pct exec 200 -- curl -s -o /dev/null -w "%{http_code}\n" -x http://127.0.0.1:7890 https://www.gstatic.com/generate_204
      


      浏览器打开 http://旁路由IP:9090/ui,密钥填部署时设的密码。连上后能看到订阅里的全部节点和两个策略组(🚀 节点选择 / ♻️ 自动选择)。

      九、把设备指到旁路由



      以爱快为例:网络设置 → DHCP 服务端 → 静态分配,把需要走代理的设备的网关和 DNS 单独填成旁路由 IP;其他设备不动,继续直连。

      验证方法:在指定设备上访问 ipinfo.io,出口 IP 应是你选的节点所在地区;访问百度应直连。

      十、按应用分流(可选)



      基础版只有一个总开关。想按应用分流(TikTok / AI 固定新加坡等),换成分流版配置:

      # 容器内执行
      cp /etc/mihomo/config.yaml /etc/mihomo/config.yaml.bak
      wget -qO /etc/mihomo/config.yaml http://10.10.10.2/blog/uploads/yaml/pgw-mihomo-split.yaml
      sed -i 's/CHANGEME/pgw-2026/' /etc/mihomo/config.yaml
      /usr/local/bin/mihomo -t -d /etc/mihomo -f /etc/mihomo/config.yaml
      systemctl restart mihomo
      


      十一、常见问题



      现象原因与处理
      --check 提示找不到模板先执行 pveam update,或 PGW_TEMPLATE=模板名 bash ... --check
      storage 'local-lvm' does not exist你的存储不叫这个名字,脚本已自动探测,确认 pvesm status -content rootdir 有输出
      网桥相关报错用 ip a 看实际网桥名,把第 4 个参数换成它
      VMID 已被占用换一个空闲 ID,例如从 201 开始试
      固定 IP 提示无法探测网关用 PGW_GW=主路由IP 指定
      容器 120 秒没拿到 IP检查主路由 DHCP、网桥是否选对
      mihomo 报 TUN 错误确认 /etc/pve/lxc/<ID>.conf 里有那两行 TUN 配置,并已重启容器
      面板提示后端无法连接 / unauthorized后端地址填 http://旁路由IP:9090,密钥和部署时一致
      面板里没有节点容器内测订阅:curl -I http://10.10.10.2/yaml/sub-clash.yaml
      设备提示无 InternetTUN 已启用即可;msftconnecttest 等直连规则基础配置已内置


      十二、回滚 / 卸载



    • 只撤销某台设备的代理:把它在 DHCP 里的网关/DNS 改回主路由即可;

    • 停用:pct exec 200 -- systemctl disable --now mihomo;

    • 彻底删除:pct stop 200 && pct destroy 200(连同容器磁盘一起删,建议先备份配置)。


    • 十三、下载



    • pve-mihomo-oneclick.sh — PVE 一键部署脚本

    • pgw-install.sh — 容器内安装脚本

    • pgw-mihomo.yaml — 基础版配置

    • pgw-mihomo-split.yaml — 分流版配置

    • pgw-deploy.zip — 全部打包下载


    > 和上一篇手动教程配合看:这篇讲"怎么一键装好",那篇讲"每一步为什么这么做"。

    评论(0)

    5 + 9 =
    ← 返回首页