飞牛 Docker 搭建 Clash Mihomo 以供局域网使用代理

平时上课无聊会刷刷一些论坛和外面的网站,每次都需要手动下载 Clash Verge 客户端再订阅,很麻烦。

于是我突然想到 Clash 有一个功能可以让局域网的电脑通过系统代理设置直接连接客户端使用节点,因此我可以在一个地方固定一台服务器部署好 Clash 并开放局域网连接,理论可行开始动手。

因为学校校园网可以全校跨网段互通,且工作室有可24小时运行的服务器,因此实现起来非常轻松。为了不让主要常用的服务过于分散,因此我打算把这个服务集中搭建在工作室的飞牛 NAS 系统上,方便管理。

Docker 部署

准备工作

在你的 NAS 任意位置创建一个文件夹用来存放配置文件,以下是我的目录结构参考,不一定跟我的一样。

用户储存空间
├── server  #专门存放 Docker 容器储存卷的目录
│   ├── mihomo  #存放本次教程的配置文件目录
│   │   ├── config.yaml  # Clash 配置文件
│   │   └── docker-compose.yml  #自动生成的 Docker Compose 文件
│   │   
│   └── ...
└── ...

在电脑本地创建 config.yaml 文件,并编辑配置好内容,具体配置请自行查阅 General configuration - mihomo docs

mixed-port: 6000 #混合代理端口
allow-lan: true #允许局域网连接,必须开启
mode: Rule
log-level: info
external-controller: 0.0.0.0:6001 #用于外部控制的 API 接口
secret: 'admin123' #外部控制验证密钥,可省略

dns:
  enabled: true
  nameserver:
    - 119.29.29.29
    - 223.5.5.5
  fallback:
    - 8.8.8.8
    - 8.8.4.4
    - tls://1.0.0.1:853
    - tls://dns.google:853

proxy-providers:
  这里写订阅标识(别名):
    url: "订阅链接"
    type: http
    interval: 86400
    health-check: {enable: true,url: "https://www.gstatic.com/generate_204", interval: 300}

proxy-groups:
  - name: 节点选择
    type: select
    use:
      - 对应上面写的订阅标识

创建好后就可以上传到刚才创建的目录了,比如我这里的目录是 /用户储存空间/server/mihomo

构建 Compose

在飞牛管理首页,点击打开 Docker,在弹出窗口的左边菜单点击进入 Compose,点击新增项目按钮。

services:
  mihomo:
    container_name: mihomo-core
    image: metacubex/mihomo
    restart: always
    ports:
      - '6000:6000'
      - '6001:6001'
    volumes:
      - ./config.yaml:/root/.config/mihomo/config.yaml

  metacubexd:
    container_name: mihomo-web
    image: ghcr.io/metacubex/metacubexd
    restart: always
    ports:
      - '6002:80'

Web 管理界面

构建好 Compose 后,在浏览器打开 http://IP:6002 即可打开管理页面。

进入页面后,会出现两个输入框,一个是后端地址,填写 http://IP:6001 ,一个是密钥,填写视配置而定,若你的配置了 secret 则填写该内容,没有就忽略不填写。

点击添加即可进入管理界面。

使用代理

在局域网内的电脑,通过给系统的代理设置即可使用。

设置方法:

注意:若你不需要使用代理时建议把“使用代理服务器”勾选为关。

可能的问题

  1. 局域网访问不了?
    • 检查飞牛 NAS 的防火墙是否关闭,或是否设置出入站规则。
    • 检查 config.yaml 配置文件是否运行局域网连接。