前言

本教程基于飞牛系统 fnOS 0.9.8Docker Compose 功能进行搭建。目前该dreamacro/clash-premium​镜像暂时不支持自动更新订阅,自动更新订阅需要配合脚本进行自动更新。

简介

Clash 是一款跨平台基于规则的开源代理工具,主要用于科学上网、网络加速和隐私保护。它通过灵活的规则引擎和丰富的协议支持,帮助用户高效管理网络流量,绕过地域限制。

部署

  1. 创建以下目录结构。

    /clash
    ├── docker-compose.yml
    └── data/config/
        └── config.yaml          # 主配置文件
  2. 创建并编辑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
  3. 打开Docker管理器,选择「Compose」,点击右上角「新增项目」。

  4. 在创建项目窗口中填写「项目名称」和选择数据存放「路径」,然后选择「创建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一致

    勾选「创建项目后立即启动」,最后点击「确定」。

  5. 等待构建完成,然后在浏览器中输入IP:Port​访问。

使用

  1. 添加链接,进入管理后台。

  2. 进入后台查看「代理」,如能正常显示信息,则表示config.yaml​文件格式没有问题。

  3. 在「配置」中打开「Allow LAN」

Windows11使用代理

  1. Windows 11 为例,使用代理。「设置」→「网络和Internet」→「代理」

  2. 手动设置代理

  3. 尝试访问地域限制网站,如谷歌(https://www.google.com/)、YouTube(https://www.youtube.com/)等进行试验。

单个Docker容器使用代理

  1. 以单个 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  # 代理排除列表