一套围绕飞牛 NAS + Mihomo + Docker 的教程页,目标是做出可长期运行的透明代理方案。
飞牛 NAS、Mihomo、Docker、透明代理,这套教程到底在做什么
简单说,就是把 Mihomo 通过 Docker 部署到飞牛 NAS 上,再把 NAS 作为家庭网络里的透明代理网关使用。这样一来,不需要每台设备各自折腾,局域网里的设备都能共用同一套代理和分流能力。
适合想让全家设备共用代理、又不想让手机和电脑一台台单独配置的人。
设备越多,这种集中式方案越省心。订阅可更新、GEO 可更新、迁移也更方便。
它主要解决四件事:透明代理、DNS 防污染、订阅自动更新、GEO 数据自动更新,以及后续维护成本过高的问题。
主路由 → 飞牛 NAS 中运行的 Mihomo → 手机 / 电脑 / 平板 / 电视等局域网设备。理解这一点,后面的配置和验收就容易很多。
先做这 4 件事,再开始部署
这四项不是补充说明,而是前置条件。先准备到位,后面的部署过程会顺很多。
要做什么:提前把 `GeoSite.dat`、`GeoIP.dat`、`country-lite.mmdb`、`GeoLite2-ASN.mmdb` 放进 Mihomo 配置目录。为什么要做:首次启动时,NAS 往往还没连通代理,在线下载这些文件很容易失败。不做会怎样:常见结果是启动卡住、下载失败,或者日志里反复出现 `context deadline exceeded`。
要做什么:准备一个 Mihomo / Clash 能识别的订阅地址。为什么要做:节点来源不解决,后面的分组、规则和透明代理都没有实际意义。不做会怎样:容器即使能启动,面板里也没有可用节点,整个方案跑不起来。
要做什么:在飞牛 NAS 上先建好 Mihomo 目录,并确认 `docker-compose.yml` 中挂载路径和真实目录一致。为什么要做:Mihomo 的配置、providers 和 GEO 文件都依赖这个目录。不做会怎样:容器可能能启动,但配置不会按预期生效,排查起来最耗时间。
要做什么:确认飞牛 NAS 当前的局域网 IP。为什么要做:后面配置控制面板、局域网接入和验收都要用到这个地址。不做会怎样:很容易把文档里的示例 IP 当成自己的地址,导致面板打不开、设备接入失败。
最容易翻车的 3 个坑
新手最常见的问题,其实集中在少数几项。先把这些看明白,能少走很多弯路。
这是首启失败的高频原因。很多人以为 Mihomo 会自动拉好所有数据,但实际在代理没打通之前,NAS 往往拿不到这些文件。
`proxy-providers.lazydoge.url` 不改,节点就不会进来;文档里的示例 NAS IP 不改,面板地址和接入配置也都会错。
这是最隐蔽的一类问题。容器可能显示正常,但读到的不是你以为的那份配置,后面所有现象都会变得很怪。
建议按这个目录放文件
这样摆的好处是清晰、好排查、方便迁移。后面无论是更新订阅还是备份配置,都会更顺手。
/vol1/1000/Docker/mihomo/ ├── config.yaml ├── docker-compose.yml ├── GeoSite.dat ├── GeoIP.dat ├── country-lite.mmdb ├── GeoLite2-ASN.mmdb ├── cache.db ├── providers/ │ └── lazydoge.yaml └── backup/
飞牛 NAS 上用 Docker 部署 Mihomo:3 步走完
这部分按真实执行顺序来写。你不需要先理解所有参数,先把它正确跑起来,再回头细看配置会更轻松。
打开仓库里的 `config.yaml`,优先处理和你环境直接相关的内容,不需要一上来改全部细节。
- 把 `proxy-providers.lazydoge.url` 改成你自己的真实订阅链接。
- 把文档中的示例 NAS IP 改成你自己的局域网地址。
- 如果你知道自己要什么节点分组,再改代理组名称和筛选规则;如果暂时不确定,先用默认结构也可以。
这一阶段的目标是让 Mihomo 的运行目录完整可用,而不是只把 `docker-compose.yml` 丢进去就开跑。
- 至少放入 `config.yaml`、`docker-compose.yml` 和 4 个 GEO 文件。
- `providers/` 目录建议提前建好,后续订阅更新文件会放在这里。
- `providers/lazydoge.yaml` 和 `cache.db` 会在运行后自动生成,所以第一次没有是正常的。
前两步准备好之后,再进入飞牛 NAS 的 Docker 管理界面创建项目。这里不要跳步骤,先确认路径,再点击部署。
- 进入 `Compose -> 新增项目`。
- 项目名称可以写 `mihomo`。
- 项目路径选择你的 Mihomo 配置目录。
- 如果系统检测到已有 `docker-compose.yml`,直接使用现有配置创建项目。
- 部署完成后,先看容器是否持续运行,再进入后面的验收步骤。
如果你想核对 Docker 部署配置,可以对照这里
这个文件本身不复杂,重点还是三个:`host` 网络模式、`NET_ADMIN` 权限和正确的挂载路径。
services:
mihomo:
image: metacubex/mihomo:latest
container_name: mihomo
restart: unless-stopped
network_mode: host
privileged: true
cap_add:
- NET_ADMIN
volumes:
- /vol1/1000/Docker/mihomo:/root/.config/mihomo
部署成功,不等于容器只是绿色的
真正的验收要按清单做完。容器能跑只是开始,后面还要确认面板、出口 IP、日志和规则命中都正常。
- 容器 `mihomo` 持续运行,没有反复重启。
- 控制面板 `http://你的NASIP:9090` 能正常打开。
- 出口 IP 已经变成当前代理节点的出口,而不是你本地宽带 IP。
- 日志里没有持续的 GEO 下载失败或 DNS 解析报错。
- 国内流量走 `DIRECT`,OpenAI / Telegram 等规则能命中代理分组。
可以直接打开 `http://你的NASIP:9090`。如果你更习惯图形化界面,也可以使用 metacubexd,把 API Base URL 填成你的 NAS 控制器地址。
curl -I https://www.google.com curl ifconfig.me docker logs mihomo
- `curl -I` 能正常返回响应头,说明外网连通没问题。
- `curl ifconfig.me` 返回的应是当前代理节点的出口 IP。
- `docker logs mihomo` 里要重点看规则命中、GEO 更新和 DNS 解析是否正常。
- 如果容器是绿色的,但以上几项不对,就不能算真正部署成功。
这些配置值得知道,但不用一开始就全啃完
前面先让你把它跑起来,这里再解释几个真正影响稳定性的关键配置,方便你后续自己调整。
`tun.enable: true`
这是透明代理能成立的基础。没有它,NAS 就更像一个普通代理客户端,而不是局域网里的代理网关。
`dns.enhanced-mode: fake-ip`
这项主要用于更稳定地做 DNS 分流,减少污染和错误命中,也是这套方案稳定运行的重要部分。
`proxy-providers`
订阅节点通过 provider 自动拉取,而不是手写在主配置里。这样后续更新节点时更省事,也更适合长期使用。
`geo-auto-update: true`
它负责后续自动更新 GEO 数据,但第一次启动依然建议你先把 GEO 文件放到本地,别把首启成功率赌给网络环境。
`proxy-server-nameserver`
这项建议不要删。它会更稳定地解析代理节点域名,很多启动慢、链路建立失败的问题,都和这里有关。
送你一个额外资源
如果你顺手也想收下,就放在这里,直接点开即可。
这份资料我也一并放上了,点击领取:2026新版Seedance2.0,保姆级教程5套