马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 Evoke 于 2026-5-29 23:23 编辑
1. 简介与架构设计
在绿联 NAS (UGOS / UGOS Pro) 中,我们常常会部署许多需要连接外网的容器服务(例如:qBittorrent、Jackett、Radarr、Sonarr 或各类自动化同步/下载工具)。由于网络环境限制,这些容器可能需要通过代理才能正常拉取元数据或进行网络通信。 本指南将介绍如何使用 Docker 部署 Mihomo (原 Clash.Meta) 容器,并配置其他容器优雅、安全地通过它进行代理上网。
2. 前置准备(获取并上传✈️配置文件)
在运行 Docker 容器之前,必须准备好配置文件。如果直接运行,Docker 会因为找不到挂载路径而自动在宿主机创建同名文件夹,导致容器报错无法启动。 我们直接使用✈️提供的 Clash 配置文件,无须自己从头手写:
3. Mihomo & 控制面板一键部署 (Docker Compose)
在绿联云桌面端打开 容器 (Docker) 应用: - services:
- mihomo:
- image: metacubex/mihomo:latest
- container_name: mihomo
- restart: always
- network_mode: bridge
- ports:
- - "7890:7890" # HTTP 代理端口
- - "7891:7891" # SOCKS5 代理端口
- - "7892:7892" # 混合代理端口(推荐其他应用填这个最稳)
- - "9090:9090" # 外部控制面板 API 端口
- volumes:
- - /volume1/docker/clash:/root/.config/mihomo
- # extra_hosts 是选填的。仅在使用虚拟域名 host.docker.internal 时才需要开启
- # extra_hosts:
- # - "host.docker.internal:host-gateway"
-
- metacubexd:
- image: ghcr.io/metacubex/metacubexd:latest # 从 GitHub Registry 拉取面板
- container_name: metacubexd
- restart: always
- ports:
- - "18091:80" # 浏览器访问 http://NAS_IP:18091 来管理代理
复制代码
📝 注意(网络模式选择):网络模式为什么用 bridge 而不用 host?使用 host 模式会让容器直接占用宿主机的所有网络端口,虽然配置简单,但容易与宿主机自身的服务冲突,并且可能干扰 .local (mDNS) 服务。采用 bridge 模式可以实现网络隔离,只暴露出需要的代理和面板端口。
4. 如何访问并使用控制面板 (Web UI)
当容器拉起后,您可以通过网页非常直观地切换节点、管理代理。 访问步骤:
💡 提示:首次连接成功后,浏览器会自动保存这些配置。以后您只需直接访问 http://<NAS_IP>:18091 即可直接进入管理界面,无须重复填写。
5. 多容器互联代理配置(其他容器如何使用代理)
让其他 Docker 容器使用 Mihomo 代理,有以下三种方案。推荐采用 方案 A,安全性最高。 方案 A:使用共享 Docker Bridge 网络(推荐 ✨)
让需要代理的容器与 Mihomo 处于同一个自定义的 Docker 网络中。这样不需要通过宿主机中转,容器之间可以直接利用容器名解析。 💡 说明:此方案完全不需要配置任何 extra_hosts 选项,其他容器也无需做额外解析配置,非常清爽!
方案 B:使用 host.docker.internal(网关域名模式)
如果你的其他容器是独立部署的,无法方便地加入同一个 Docker 网络,你可以让它们通过 Docker 默认网关连接宿主机暴露出来的代理端口。 ⚠️ 注意:此方案由于在 Linux 环境下使用了虚拟域名 host.docker.internal,因此必须在需要代理的其他容器的 Compose 中声明 extra_hosts。如果您没有在其他容器中配置此映射,该域名将无法被解析。
在需要代理的容器配置中:
方案 C:使用宿主机物理局域网 IP / 默认网关 IP
这是最直接的办法,不需要任何 extra_hosts 选项。直接将代理地址设置为 NAS 在局域网中的固定 IP 地址(例如 192.168.1.100),或者默认的 Docker 网关 IP(通常为 172.17.0.1)。 使用物理 IP: - environment:
- - HTTP_PROXY=http://192.168.1.100:7892
- - HTTPS_PROXY=http://192.168.1.100:7892
复制代码
使用默认网关 IP: - environment:
- - HTTP_PROXY=http://172.17.0.1:7892
- - HTTPS_PROXY=http://172.17.0.1:7892
复制代码
⚠️ 警告(IP 变动风险):如果你的绿联 NAS 采用 DHCP 动态获取 IP,一旦路由器重启或租约到期导致 NAS IP 发生变化,物理 IP 代理配置将失效。建议在路由器中为 NAS 绑定静态 IP。而网关 IP(172.17.0.1)在 Docker 网络不重建的情况下是相对固定的,但安全性较低。
6. 验证代理是否生效
当配置完成后,你可以进入需要使用代理的容器控制台(Terminal),使用命令进行验证: # 进入目标容器内部,执行 curl 检查代理前后的 IP 变化
- curl -I https://www.google.com
复制代码如果返回 HTTP/2 200 或相应的重定向状态码,说明代理网络已成功打通! 也可以打印当前的出口公网 IP 以做双重确认: - curl myip.ipip.net
- # 或者
- curl ipinfo.io
复制代码
7. 常见问题排查 (Troubleshooting)
Q1: 启动容器时报错 Is a directory
Q2: 外部 Web 控制面板连接不上
原因 1:跨域限制 (CORS):如果你使用的是在线面板,浏览器会阻止向本地未启用跨域支持保持阻隔的位置发送请求。确保 config.yaml 中配置了允许 LAN 以及正确的绑定地址。 原因 2:API 端口未暴露:检查 docker-compose.yml 中的 ports 是否正确映射了 9090:9090,并且在连接面板时,API 地址填的是 http://<NAS_IP>:9090,如有密码,需填入 config.yaml 中 secret 定义的值。
Q3: 开启代理后其他容器的 .local 局域网服务无法访问
|