群晖docker安装并运行Clash+UI

By | 2020年7月5日

前一篇文章中我们提到了在群晖的 docker 中安装 RcloneBrowser,而为了更好的为其提供网络环境,这篇文章我们将介绍如何在群晖 docker 中安装并运行 Clash 以及 UI 界面。有关下载镜像和创建容器的步骤可以参考前文,这里便不再重复说明了。

1.准备 Clash 配置文件

本篇文章并不会涉及如何获取适当的 Clash 配置文件,这部分请自行想办法解决。

在准备好 Clash 配置文件后,使用任意文本编辑器打开,查找并确认以下设置:(不要带上#及后面的部分)

  • port: 7890 #http/https监听端口
  • socks-port: 7891 #socks5监听端口
  • allow-lan: true #允许外部连接
  • external-controller: 9090 #UI监听端口

如果配置文件中不存在对应的项目,请在文件头部进行添加。其中第一,第二及第四项的端口号可以在1024-65535之间任意设置但不得重复,第三项必须设置为 true

示例配置文件如下:

保存后将该文件复制到群晖的共享文件夹中,如 /docker/clash/sub.yaml。

2.创建 Clash 容器

进入 docker 套件并下载映像 dreamacro/clash,随后双击映像创建容器,并点击高级设置。在卷页面中,为 /ui 创建文件夹挂载点,为 /root/.config/clash/config.yaml 创建文件挂载,指向前一步中的配置文件。

在端口设置页面中,为前一步中的 port, socks-port, external-controller 三个端口创建对应的映射端口。如有需要类型可以选择 TCP 和 UDP。

3.创建 UI 容器

在 docker 中下载映像 haishanh/yacd 并创建容器,这里只需要为 80 端口创建映射端口即可。

4.登录使用

在确保以上两个容器都启动运行后,在浏览器中打开 http://群晖的ip地址:步骤3中的本地端口(本例中是 http://reizhix:5080),便可以看到如下的登陆界面。

其中,Hostname 填写群晖的 ip 地址(切勿使用默认的127.0.0.1),Port 填写步骤2中 9090 所对应的映射端口(本例中是5090),点击 Confirm 即可进入 Clash UI 的主界面。

此时 Clash 会监听步骤2中的 5890 和 5891 端口并向局域网提供服务。由于本教程中没有配置认证,请勿将相关端口映射到外网。

96 thoughts on “群晖docker安装并运行Clash+UI

  1. 岷江灵隐

    大佬你好,请教一下,我按照你的教程使用docker创建了dreamacro/clash和haishanh/yacd两个容器,也弄好了clash的配置文件,节点信息都是可以使用的。启动容器之后,可以看到clash的登陆界面,但是进去之后就是找不到节点信息,尝试了各种办法,都不行,不知道是哪一步错误了,希望得到你的帮助。方便的话可以加一下QQ吗,QQ;

    Reply
  2. 小土

    你好,我的是omv系统,配置后能看到节点信息,选择节点后通过代理却无法达到效果。用相同的节点信息在电脑cladh客户端使用却正常留学。不知道是哪里出错呢?

    Reply
    1. reizhi Post author

      UI 只是一个图形界面,类似 aria2 的 web 控制台。检查 ip 和端口设置

      Reply
      1. Hollis

        感谢!我把yaml文件里external-controller:改成‘0.0.0.0:9090’后,能够成功进入控制台了!

        Reply
  3. david

    很好的教程感谢,配置过程中发下yacd页面中没有confirm 按钮 ,在接口下方有个add 按钮,
    录入api url和port后点击add报failed to connect ,求指教,谢谢

    Reply
    1. reizhi Post author

      我这里测试没有任何问题,请检查 yacd 中填入的 port > clash 容器对外映射 port > 配置文件中 external-controller 这整个链路中的端口设置情况。

      Reply
      1. 拓海

        hhh多谢回复,我也一样刚发现,主要是教程中的UI布局不太一样无脑填了

        Reply
  4. david

    大佬好,感谢您的分享,通过你的教程已成功在nas上部署clash,现在遇到几个奇怪的问题,
    1.clash容器日志的时间和容器的时间晚8个小时,请问大佬是否遇到以上类似问题,如何解决的。

    Reply
    1. reizhi Post author

      群晖 docker 时区问题网上应该能搜到很多解决办法,这个就不赘述了。

      Reply
  5. sail

    “很好的教程感谢,配置过程中发下yacd页面中没有confirm 按钮 ,在接口下方有个add 按钮,
    录入api url和port后点击add报failed to connect ,求指教,谢谢”

    同样的问题!一同求教!!!

    Reply
  6. littlehuihui

    博主你好,我配置导入成功UI也可以运行,但是一直显示无连接,也无上传和下载,请教下是什么情况?

    Reply
      1. littlehuihui

        日志出现大量[TCP] dial DIRECT (match IPCIDR/127.0.0.0/8) to 127.0.0.1 error: dial tcp4 127.0.0.1:2379: connect: connection refused

        Reply
        1. reizhi Post author

          日志完全不应该出现127.0.0.1这样的ip,我建议你再仔细看一次教程。

          Reply
  7. username.seesee

    不错,非常简单,一次成功。

    有了这样的代理之后,很多客户端设备上就不用装任何软件了,直接一个代理就OK了,目前发现TG的手机客户端上不了,估计是因为WIFI网络连接中设置的代理是HTTP代理,TG好像需要socks代理才行。

    Reply
    1. reizhi Post author

      IOS 版在 Data and Storage 里可以单独设置 socks5 代理

      Reply
  8. WZY

    DDNS怎么解决?用花生壳DDNS,synology代理设置本机后,DDNS无法连接。

    Reply
    1. reizhi Post author

      我不太明白你为什么要给群晖设置代理,这个的目的是给局域网其他设备作为代理网关。
      群晖的代理建议在路由器上部署。

      Reply
  9. nimo

    谢谢大佬的教程!我在威联通上安装成功了,端口和你设置的一样。但是进去ui界面后发现网速一直为零,并且连接数也一直为零,用emby的tmdb刮削失败了。进入ui界面还需要设置啥么?

    Reply
    1. QNAP NAS

      您好,請問威聯通上如何設置,我找不到可以掛在config.yaml的地方,也就是沒找到作者所說/ui的那四個選項卡界面。謝謝!

      Reply
  10. nimo

    谢谢大佬的教程!我在威联通上安装好之后进去ui发现速度和连接数都为0,想用tmdb刮削失败了。进入ui后还需要设置啥么?

    Reply
    1. reizhi Post author

      我没用过 emby ,按这个教程设置完并不会给群晖加上代理。你还要在需要使用代理的软件里(比如 emby)去设置代理,比如按教程设置是 HTTP 代理:nasip:5890,或者 socks 代理 nasip:5891 。

      Reply
      1. nimo

        谢谢!我看emby没有地方设置代理,我路由器ax3也没法设置api强制走代理。我还是乖乖改hosts吧

        Reply
  11. llx

    这个设置完成后 是不是群晖本身还是没法走代理规则,我想用cloud sync同步google云盘,看网上的好多教程试了v2ray和clash都只能帮助局域网连接,本身似乎没法用,请问大佬有什么好的解决办法吗?

    Reply
      1. DAYSHEN

        其实我也有一新的问题,但路由有梯子那就不需要运行这个了~

        Reply
  12. 机灵的问题

    我的clash和yacd都安装配置好了,但是遇到了一个绝望的问题,yacd并不像win客户端一样可以科学上网的配置,这该怎么弄啊

    Reply
  13. Jerry

    其他我都看懂了,就是装载路径我不明白,我的群晖NAS上并没有这个目录和路径,这样填写是否可以?
    我也在后面IP:5080这里出现了ADD的页面,然后输入HTTP://IP:9090 提示Failed to connect

    Reply
    1. reizhi Post author

      文件/文件夹你按照自己实际的填,装载路径按图原样填。
      如果基础薄弱建议先去了解些 docker 基础。

      Reply
  14. pdx

    This program can only be run on AMD64 processors with v3 microarchitecture support. 我的clash运行报错,大佬知道啥原因吗

    Reply
      1. reizhi Post author

        你的机型是 arm 处理器吧,这是 clash 的报错还是 yacd 的?

        Reply
      2. Shadow

        换一个dreamacro/clash的tag来部署,我用latest(v1.10.0)也是这个问题,用dev的就可以。

        Reply
  15. grape

    大佬你好 按教程配置好了 以后clash可以用了 ,我用ps4设完代理联网没问题了 。
    但是浏览器输入IP:端口连不上去,显示无法访问此页面 ..**(我的IP)已拒绝连接。端口都按教程设置了,这么搞都连不上,求救!!

    Reply
    1. reizhi Post author

      这个IP端口不是给你浏览器访问用的,请设置代理。

      Reply
  16. 牛卡

    请教一下,有没可以自动更新订阅配置的具体方法呢

    Reply
    1. Hsinchu

      正好我也有这个需求就自己搞了一下,控制面板-计划任务创建一个root任务
      curl -o /volume1/docker/clash/config.yaml https://sub.nya-cloud.com/link/**********?clash=1
      docker restart dreamacro-clash
      其中/volume1/docker/clash是你配置文件的目录,右键目录点属性看位置,dreamacro-clash是你docker容器的名字

      Reply
  17. 梧桐

    你好,感谢你的教程,比其他很多地方的都简洁有效多了
    但是我根据教程部署过程中出现一个问题,报错无法下载mmbd文件,我手动下载这个文件放在映射的config目录下,但是并不起作用,依然报错。
    请问这个要怎么处理?

    time=”2022-04-20T15:40:04Z” level=fatal msg=”Initial configuration directory error: can’t initial MMDB: can’t download MMDB: Get \”https://cdn.jsdelivr.net/gh/Dreamacro/maxmind-geoip@release/Country.mmdb\”: dial tcp: lookup cdn.jsdelivr.net on 8.8.8.8:53: dial udp 8.8.8.8:53: connect: network is unreachable”

    Reply
    1. reizhi Post author

      建议你检查本地网络不要挂代理,我这边测试Country.mmdb很顺利可以下载。
      下载这一步是写死在dockerfile里的,并不会因为本地已经存在就跳过下载。

      Reply
  18. Alie

    感谢大神。教程很好,我小白也基本搞定。现有一问题。我在macOS上安装有CLASH,在IVPN付费订阅了流量给到一个.yamkl文件。我现按你的思路在nas上导入了这个yaml文件,打开clash+ui显示我的mac和iphone(事先设定了通过NAS代理上网)国内网都是从CLASH上走的。但是需要科学上网的外网节点(yaml文件内proxies这些站点)测试都没速率(该显示速率的地方显示:Vmess),这个是什么问题,该如何解决。是订阅的问题吗
    再次感谢!我本意是想在nas上做一个代理服务器,实现多设备同时能科学上网

    Reply
    1. reizhi Post author

      你可以在 mac 端用 clashx 测试一下这个订阅是否能用。

      Reply
  19. 王哈哈

    老师你好,我订阅的节点信息是在CFS配置-以文本模式编辑,然后另存为yaml文件导入的,但是它的配置是mixed-port: 7890
    allow-lan: true
    bind-address: ‘*’
    mode: rule
    log-level: info
    external-controller: ‘127.0.0.1:9090’
    可以看到他只配置了一个mixed-port,其他http和sock都是0,这种需要自己加上吗, 另外我这个代理限制2个客户端,在局域网多台设备设置群晖nas出来的代理算是一个客户端吗,设置代理填不填认证信息用户名和密码呢(clash ui 配置完了,也看到了代理线路,但是不会用其他设备局域网内连接这个代理。。。不知道怎么用得)

    Reply
    1. reizhi Post author

      不需要,mixed-port 代表端口同时接受 http 和 socks 代理。
      不会认定为多个客户端。
      代理设置 http://nasip:7890 或者 socks5://nasip:7890

      Reply
  20. tu66

    请教一下,我按照教程安装后,一运行就意外暂停,看了下日志,说只支持amd64处理器,我用的220+,不知有适合的映像吗?

    Reply
  21. 老小白

    dns:
    ake-ip-range: 198.18.0.1/16
    default-nameserver:
    – 114.114.114.114
    – 119.29.29.29
    – 223.5.5.5
    enable: true
    enhanced-mode: redir-host
    fallback-filter:
    geoip: true
    ipcidr:
    – 240.0.0.0/4
    ipv6: false
    nameserver:
    https://223.5.5.5/dns-query
    https://223.6.6.6/dns-query
    https://doh.pub/dns-query
    use-hosts: true
    port: 7890
    socks-port: 7891
    redir-port: 7892
    allow-lan: true
    mode: Rule
    log-level: info
    external-controller: ‘0.0.0.0:9090’
    secret: ”
    bind-address: 127.0.0.1
    proxies:
    这个是我的config.yaml文件的前面部分,现在面板可以进入,也显示节点信息,我的电脑网卡设置设定网关和dns为群晖ip,也没有办法越过鸿沟,难道docker里面的网络设置出了问题,docker里面容器连接的网络是bridge,

    Reply
      1. 老小白

        用port扫描工具扫描群晖ip,发现7890/7891端口并未开放(5890/5891也没开),启动映像的高级设置里网络模式是bridge,不知道是哪里设置错误,在电脑网络设定代理也没有用。谢谢热心的作者,不管这条有没有收到回复都感谢

        Reply
  22. 新云

    楼主,这个怎么才能给群晖全局代理呢,像我用其他应用也没法走这边的代理,那这个的作用是干啥的啊

    Reply
    1. reizhi Post author

      给其他docker或局域网内其他设备提供服务,无法代理本机。

      Reply
      1. sunbeam

        可以的,群晖里设置代理就行了,但应该不是所有应用都能用吧

        Reply
  23. sunbeam

    我发现在外面的时候,只能通过映射到公网再访问,不能填局域网IP,否则yacd就会显示连接失败

    Reply
  24. dywt

    我快要疯掉了,9090端口直接访问能返回配置正确的提示,但是yacd无论如何都连不上~ 通过在线的控制台页面也好 还是部署UI镜像也好,都不连不上控制页面。目前是UI的端口都访问不了。

    Reply
  25. syydnr

    大佬,搞完节点可以看到也可以测速成功,但概览里速度一直是0怎么破啊

    Reply
      1. syydnr

        那大佬请问下有能直接代理本机的容器或其他方法的教程吗

        Reply
  26. holo

    大佬
    external-controller: ‘127.0.0.1:9090
    和0.0.0.0:9090有什么区别,127是localhost 为什么就会add 不了链接而用0.0.0.0:9090就可以

    Reply
  27. 猪想发福人想红

    都成功了,但是怎么让电脑手机能用这个上网啊?谷歌还是访问不了啊

    Reply
  28. laoxia

    你好,大佬,请求帮忙,能否付费配置一下CLASH代理。

    Reply
  29. Carmen

    你好,我是绿联dx4600的nas,x86架构。
    现在已经安装了clash和yacd,并且访问ip:9090后会显示hello clash,应该是已经设置好了吧?
    但yacd界面,填入ip和端口后,总是显示无法连接,Failed to connect,想问问应该如何处理?

    Reply
  30. 沃德天

    付费求助,搭建成功之后QQ有网收不到图片,网页goole是好的但是 tg的软件没网,twitch软件直播有画面聊天室连接不上,网页的却一切正常。

    Reply
      1. 沃德天

        我是群晖docker跑的clash,
        配置文件
        mixed-port: 7890
        allow-lan: true
        bind-address: ‘*’
        mode: rule
        log-level: info
        external-controller: ‘0.0.0.0:9090
        然后端口
        7890/tcp 5890
        7891/tcp 5891
        9090/tcp 5090
        我是华为手机修改wifi代理手动
        主机名 内网NASIP 端口5090.

        Reply
  31. 梁非凡

    作者怎么联系您,想有偿帮忙解答一下问题,关于如何doker走代理

    Reply
    1. reizhi Post author

      让其他docker走这个代理?建议把问题说清楚

      Reply
  32. 彼特天下

    为什么在打开群晖IP:5080,出现登录界面时和作者的不一样,API BASE URL输入了群晖的IP:5090, 后面的Sceret和Label都没有填,点ADD出现fail to Connect

    Reply
    1. reizhi Post author

      10元单次先款,可以接受的话再回复我一次

      Reply
  33. 天使风

    大佬好,想装个容器跑代理,最好是passwall2的,因为之前在op里用的这个。不行的话,clash也可以。接待有偿。谢谢

    Reply
    1. reizhi Post author

      passwall只是个op插件,做不到docker运行。clash docker单次20,订阅不能自动更新

      Reply
  34. 一光年

    我只用了 dreamacro/clash 镜像,反正测试结果是docker网络模式 bridge不行,必须是 host

    Reply
  35. MY

    我的容器启动不了,报错OCI runtime exec failed: exec failed: container_linux.go:367

    Reply
    1. reizhi Post author

      其他容器里跑的应用本身要支持设置代理才行

      Reply
  36. 轻舞飞扬华松

    ADD出现fail to Connect,请把clash文件夹下的配置文件删除,重启容器,会自动创建一个配置文件,然后下载或修改这个文件,将相关配置数据修改填充进去,重新覆盖原文件就可以了,我弄半天才发现这个配置文件的名称有问题,无论怎么修改都不对,只有用这种方法才保证和容器要求的一至,好奇葩!

    Reply
  37. 已解决

    docker里面的网络必须是host,用brdige是不通的
    连不上ui的解决办法是:配置文件的写法是 external-controller: 0.0.0.0:9090

    Reply

回复 kantamei 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

滑动到最右以进行验证 *