请自行准备订阅节点

一、config.yaml 配置(请修改 订阅地址)

这是我自己用的配置, 请根据自身情况进行修改

# HTTP 代理端口
#port: 7890

# SOCKS5 代理端口
#socks-port: 7891

# 混合代理端口
mixed-port: 7890

# Linux 和 macOS 的 redir 代理端口 (如需使用此功能,请取消注释)
# redir-port: 7892

# 允许局域网的连接(可用来共享代理)
allow-lan: true

# 规则模式:Global(全局代理)/ Rule(规则) / Script(腳本) / Direct(全局直连)
mode: Rule

# 设置日志输出级别 (默认级别:silent,即不输出任何内容,以避免因日志内容过大而导致程序内存溢出)。
# 5 个级别:silent / info / warning / error / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。
log-level: info

# clash 的 RESTful API
external-controller: '0.0.0.0:9090'


# 您可以将静态网页资源(如 clash-dashboard)放置在一个目录中,clash 将会服务于 `${API}/ui`
# 参数应填写配置目录的相对路径或绝对路径。
external-ui: /ui

# RESTful API 的口令 (可选)
secret: ""

# DNS 设置

dns:
 enable: true
 ipv6: false
 listen: 0.0.0.0:53
 enhanced-mode: redir-host
 nameserver:
  - 8.8.8.8
  - 119.29.29.29
  - 223.5.5.5
  - https://rubyfish.cn/dns-query
 fallback:
  - https://cloudflare-dns.com/dns-query
  - tls://1.0.0.1:853
  - https://dns.google/dns-query#

# 代理节点
proxy-providers:

  HaoJiaHuo:
    type: http
    path: ./Server/HaoJiaHuo.yaml # 这里文件名称需要与订阅节点名称一样
    url: xxxxx		# 订阅地址
    interval: 86400
    health-check:
        enable: true
        url: http://www.gstatic.com/generate_204
        interval: 300

# 代理组策略
proxy-groups:

# 策略组说明

# 「Proxy」是代理规则策略,它可以指定为某个节点或嵌套一个其他策略组,如:「url-test」(自动测试)、「Fallback」或「load-balance」(负载均衡)的策略组

  - { name: "MATCH", type: select, proxies: ["Proxy"]} 
  - { name: "Apple", type: select, proxies: ["DIRECT"], use: ["HaoJiaHuo"]}
  - { name: "Adobe", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Amazon", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "China", type: select, proxies: ["DIRECT"]}
  - { name: "GitHub", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Google", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Microsoft", type: select, proxies: ["DIRECT"], use: ["HaoJiaHuo"]}
  - { name: "Netflix", type: select, use: ["HaoJiaHuo"]}
  - { name: "Speedtest", type: select, proxies: ["DIRECT"]} 
  - { name: "Steam", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Spotify", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Telegram", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Tencent", type: select, proxies: ["DIRECT"]} 
  - { name: "YouTube", type: url-test, use: ["HaoJiaHuo"]}
  - { name: "Proxy", type: url-test, use: ["HaoJiaHuo"]} 
  - { name: "🎬哔哩哔哩", type: select, proxies: ["DIRECT"], use: ["HaoJiaHuo"]} 


rule-providers:
  Adobe:
    type: http
    behavior: classical
    path: ./ruleset/Adobe.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Adobe.yaml
    interval: 3600

  Amazon:
    type: http
    behavior: classical
    path: ./ruleset/Amazon.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Amazon.yaml
    interval: 3600

  GitHub:
    type: http
    behavior: classical
    path: ./ruleset/GitHub.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/GitHub.yaml
    interval: 3600
  
  Microsoft:
    type: http
    behavior: classical
    path: ./ruleset/Microsoft.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Microsoft.yaml
    interval: 3600
  
  Netflix:
    type: http
    behavior: classical
    path: ./ruleset/Netflix.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Netflix.yaml
    interval: 3600
  
  Spotify:
    type: http
    behavior: classical
    path: ./ruleset/Spotify.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Spotify.yaml
    interval: 3600

  Speedtest:
    type: http
    behavior: classical
    path: ./ruleset/Speedtest.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Speedtest.yaml
    interval: 3600

  Steam:
    type: http
    behavior: classical
    path: ./ruleset/Steam.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Steam.yaml
    interval: 3600

  Tencent:
    type: http
    behavior: classical
    path: ./ruleset/Tencent.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/Tencent.yaml
    interval: 3600

  YouTube:
    type: http
    behavior: classical
    path: ./ruleset/YouTube.yaml
    url: https://cdn.jsdelivr.net/gh/Semporia/Clash-X@master/Filter/YouTube.yaml
    interval: 3600

  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400

  icloud:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
    path: ./ruleset/icloud.yaml
    interval: 86400

  apple:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
    path: ./ruleset/apple.yaml
    interval: 86400

  google:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./ruleset/google.yaml
    interval: 86400

  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400

  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400

  private:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
    path: ./ruleset/private.yaml
    interval: 86400

  gfw:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
    path: ./ruleset/gfw.yaml
    interval: 86400

  greatfire:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/greatfire.txt"
    path: ./ruleset/greatfire.yaml
    interval: 86400

  tld-not-cn:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt"
    path: ./ruleset/tld-not-cn.yaml
    interval: 86400

  telegramcidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
    path: ./ruleset/telegramcidr.yaml
    interval: 86400

  cncidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400

  lancidr:
    type: http
    behavior: ipcidr
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
    path: ./ruleset/lancidr.yaml
    interval: 86400

  Whitelist:
    type: http
    behavior: classical
    url: "https://gitee.com/myisafei/script/raw/master/clash/rule/Whitelist.yaml"
    path: ./ruleset/Whitelist.yaml
    interval: 86400
    
  ME:
    type: http
    behavior: classical
    url: "https://gitee.com/myisafei/script/raw/master/clash/rule/Other.yaml"
    path: ./ruleset/Other.yaml
    interval: 3600
  
  TW:
    type: http
    behavior: classical
    url: "https://gitee.com/myisafei/script/raw/master/clash/rule/Tw.yaml"
    path: ./ruleset/Tw.yaml
    interval: 3600


# 分流规则  
rules:
  # Local Area Network
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT

  # 自定义部分
  - DOMAIN-SUFFIX,hexieshe.com,MATCH
  - DOMAIN-SUFFIX,themoviedb.org,MATCH
  - DOMAIN-SUFFIX,mangabz.com,MATCH
  - DOMAIN-SUFFIX,manhuagui.com,MATCH
  - DOMAIN-SUFFIX,taobao.com,DIRECT

  # BT,PT 规则
  - DOMAIN-KEYWORD,tracker,DIRECT
  - DOMAIN-KEYWORD,announce.php?passkey=,DIRECT
  - DOMAIN-KEYWORD,torrent,DIRECT
  - DOMAIN-KEYWORD,peer_id=,DIRECT
  - DOMAIN-KEYWORD,info_hash,DIRECT
  - DOMAIN-KEYWORD,get_peers,DIRECT
  - DOMAIN-KEYWORD,find_node,DIRECT
  - DOMAIN-KEYWORD,BitTorrent,DIRECT
  - DOMAIN-KEYWORD,announce_peer,DIRECT

  # 哔哩哔哩
  - DOMAIN-SUFFIX,biliapi.com,🎬哔哩哔哩
  - DOMAIN-SUFFIX,biliapi.net,🎬哔哩哔哩
  - DOMAIN-SUFFIX,bilibili.com,🎬哔哩哔哩
  - DOMAIN-SUFFIX,bilibili.tv,🎬哔哩哔哩
  - DOMAIN-SUFFIX,bilivideo.com,🎬哔哩哔哩
  - DOMAIN-SUFFIX,biligame.com,🎬哔哩哔哩
  - DOMAIN-SUFFIX,biligame.net,🎬哔哩哔哩
  
    ######### 自己的规则 start ##############
  # (直通)
  - RULE-SET,Whitelist,China
  # (自己平时访问的网址)
  - RULE-SET,ME,Proxy
  # (自己平时访问的网址)
  - RULE-SET,TW,Proxy

    ######### 自己的规则 end ##############

  # (adobe 服务)
  - RULE-SET,Adobe,Adobe
  # (亚马逊)
  - RULE-SET,Amazon,Amazon
  # (GitHub)
  - RULE-SET,GitHub,GitHub
  # (Microsoft)
  - RULE-SET,Microsoft,Microsoft
  # (奈飞)
  - RULE-SET,Netflix,Netflix 
  # (测速)
  - RULE-SET,Speedtest,Speedtest
  # (Steam)
  - RULE-SET,Steam,Steam
  # (Spotify)
  - RULE-SET,Spotify,Spotify
  # (腾讯)
  - RULE-SET,Tencent,Tencent
  # (YouTube)
  - RULE-SET,YouTube,YouTube
  - DOMAIN-SUFFIX,live.cn,China
  
  
  # (广告域名列表)
  - RULE-SET,reject,REJECT
  # (Apple 域名列表)
  - RULE-SET,apple,Apple
  # (iCloud 域名列表)
  - RULE-SET,icloud,Apple
  # (Google 域名列表)
  - RULE-SET,google,Google
  # (代理域名列表)
  - RULE-SET,proxy,Proxy
  # (直连域名列表)
  - RULE-SET,direct,China
  # (私有网络专用域名列表)
  - RULE-SET,private,China
  # (GFWList 域名列表)
  - RULE-SET,gfw,MATCH
  # (GreatFire 域名列表)
  - RULE-SET,greatfire,REJECT
  # (非中国大陆使用的顶级域名列表)
  - RULE-SET,tld-not-cn,MATCH
  # (Telegram 使用的 IP 地址列表)
  - RULE-SET,telegramcidr,Telegram
  # (中国大陆 IPv4 地址列表)
  - RULE-SET,cncidr,China
  # (局域网 IP 及保留 IP 地址列表)
  - RULE-SET,lancidr,China


  # GeoIP China
  - GEOIP,CN,DIRECT
  - MATCH,MATCH

二、ui 配置

下载第三方 ui yacd, 访问 https://github.com/haishanh/yacd/releases

下载后解压得到 public 文件夹, 修改名称为 ui, 把文件夹放到 docker-compose.yaml 文件同目录下

三、部署

1.1 docker 命令

docker run -d --name=clash -v "$PWD/config.yaml:/root/.config/clash/config.yaml" -v "$PWD/ui:/ui"  -p "7890:7890" -p "9090:9090" --restart=unless-stopped dreamacro/clash-premium
  • -v $/pwd/config.yaml – 配置文件
  • -v $PWD/ui – 控制面板的路径(访问: http://ip:9090/ui)
  • -p 7890 – 代理端口
  • -p 9090 – 控制接口的端口

1.2 docker compose 部署

创建 docker-compose.yaml 文件

version: '3.8'
services:
  clash:
    image: dreamacro/clash-premium
    container_name: clash-premium
    volumes:
      - ./config.yaml:/root/.config/clash/config.yaml
      - ./ui:/ui # 图形面板目录
    ports:
      - "7890:7890"
      - "9090:9090"
    restart: unless-stopped
    network_mode: "bridge"

运行

docker-compose up -d

查看日志

docker-compose logs

访问 http://IP:9090/ui 查看效果吧