【Docker】搭建一款跨平台、基于规则的开源代理工具 - Clash
前言
本教程基于飞牛系统 fnOS 0.9.8 的 Docker Compose 功能进行搭建。目前该dreamacro/clash-premium
镜像暂时不支持自动更新订阅,自动更新订阅需要配合脚本进行自动更新。
简介
Clash 是一款跨平台、基于规则的开源代理工具,主要用于科学上网、网络加速和隐私保护。它通过灵活的规则引擎和丰富的协议支持,帮助用户高效管理网络流量,绕过地域限制。
部署
创建以下目录结构。
/clash ├── docker-compose.yml └── data/config/ └── config.yaml # 主配置文件
创建并编辑
config.yaml
文件,然后保存至./clash/data/config/
文件夹下。一般情况下订阅链接复制到浏览器打开便是一个
xxxx.yaml
的配置文件,将其内容复制粘贴放至config.yaml
文件。
注意将external-controller
的127.0.0.1:9090
务必修改成0.0.0.0:9090
port: 7890 socks-port: 7891 redir-port: 7892 allow-lan: true mode: Rule log-level: silent external-controller: '0.0.0.0:9090' secret: "your_strong_password" # 与compose中SECRET一致 # 代理规则示例(替换为实际订阅) #proxies: # - name: "Proxy-Server" # type: ss # server: server-ip # port: 443 # cipher: aes-256-gcm # password: "password" #proxy-groups: # - name: PROXY # type: select # proxies: # - Proxy-Server #rules: # - DOMAIN-SUFFIX,google.com,PROXY # - GEOIP,CN,DIRECT # - MATCH,PROXY
打开Docker管理器,选择「Compose」,点击右上角「新增项目」。
在创建项目窗口中填写「项目名称」和选择数据存放「路径」,然后选择「创建docker-compose.yml」,将下列代码根据自己实际情况修改后复制粘贴进去。
version: '3.8' services: # Clash 核心服务 clash: image: dreamacro/clash-premium:latest # 使用 Premium 版支持高级功能 container_name: clash-proxy restart: unless-stopped ports: - "7890:7890" # HTTP 代理端口 - "7891:7891" # SOCKS5 代理端口 - "9090:9090" # 控制端口 volumes: - ./data/config:/root/.config/clash # 配置文件目录 environment: - TZ=Asia/Shanghai - EXTERNAL_CONTROLLER=0.0.0.0:9090 # 控制端口监听 - SECRET=your_strong_password # API 访问密钥 # Clash 控制面板 yacd: image: haishanh/yacd:latest container_name: clash-dashboard restart: unless-stopped ports: - "8080:80" # 面板访问端口 http://<ip>:8080 environment: - YACD_DEFAULT_BACKEND=http://clash:9090 # 通过服务名连接Clash - YACD_AUTH=your_strong_password # 与SECRET一致
勾选「创建项目后立即启动」,最后点击「确定」。
等待构建完成,然后在浏览器中输入
IP:Port
访问。
使用
添加链接,进入管理后台。
进入后台查看「代理」,如能正常显示信息,则表示
config.yaml
文件格式没有问题。在「配置」中打开「Allow LAN」
Windows11使用代理
以 Windows 11 为例,使用代理。「设置」→「网络和Internet」→「代理」
手动设置代理
尝试访问地域限制网站,如谷歌(https://www.google.com/)、YouTube(https://www.youtube.com/)等进行试验。
单个Docker容器使用代理
以单个 Docker容器 为例,使用代理。使用 DockerCompose 构建镜像时,可以在 DockerCompose 中设置代理环境变量。
version: "3.8" services: metatube: image: metatube/metatube-server:latest container_name: metatube restart: always ports: - "28080:8080" # Web访问端口 environment: TZ: Asia/Shanghai # 设置为中国时区 http_proxy: http://192.168.1.6:7890 # 容器内HTTP代理 https_proxy: http://192.168.1.6:7890 # 容器内HTTPS代理 no_proxy: localhost,127.0.0.1,.internal,clash,yacd # 代理排除列表
- 感谢你赐予我前进的力量