services:
clash:
image:
docker.io/metacubex/mihomo:latest # mihomo 是 Clash 的社区维护版本,性能更好
container_name: clash
restart: always
network_mode: host
privileged: true # 特权模式:用于创建 TUN 设备实现透明代理
cap_add:
- NET_ADMIN # 网络管理权限(必需
- SYS_ADMIN # 系统管理权限(必需)
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- /vol1/@appdata/docker-flclash/config:/root/.config/clash
working_dir: /root/.config/clash
environment:
- TZ=Asia/Shanghai
entrypoint: ["/mihomo"]
command: ["-f", "/root/.config/clash/config.yaml"] # 启动命令:指定使用 mihomo 核心,加载 config.yaml 配置文件
dashboard:
image:
ghcr.io/metacubex/metacubexd:v1.243.0 # metacubexd 是官方推荐的现代化 Web 面板,这里使用了国内加速镜像源
container_name: clash-dashboard
restart: always
ports:
- "9099:80" # 访问地址: http://NAS_IP:9099
environment:
- CLASH_API_URL=http://192.168.31.14:9095 # 环境变量:指定 Clash API 地址,让面板能控制核心
----------------------------------------------------
上面这个配置,直接使用 host 模式,docker 启动一个 mihomo 内核,ip 直接跟 linux 共用,只占用指定的 9095 7891 7890 等端口,这样局域网内的所有设备包括宿主机都可以 通过 7890 进行代理。
这个方案也不会影响宿主机的网络,就算 docker 挂了,宿主机网络也正常。
这个方案有什么缺点,不用旁路由模式,这样用可以不。