五分钟自建 ZeroTier 的 Planet/Controller

2021-09-03 11:05:48 +08:00
 sbilly

官方的 roots 都不在大陆地区,ZT 穿越 NAT 成功率和时延、丢包率这些网络质量有关。现在 VPS 越来越便宜了,而且 ZT 的 controller 也不太要求大带宽,自建一个 ZT 的 controller 非常有利于 NAT 穿越,搞了一个容器化的 zerotier controller (github.com/sbilly/docker-zerotier-controller),五分钟内就可以让自己的 controller 上线

目前使用的是 zero-ui 作为 controller 的 WEB 界面(缺省用户名 /密码是 admin/zero-ui),如下图。

自定义 planets

github.com/sbilly/docker-zerotier-controller 的内容复制到本地,按照你自己的需求修改 patch/planets.json,然后构建容器镜像。

{
  "planets": [
    {
      "Location": "Beijing", // planet 所在位置,其实可以是任何注释信息
      "Identity": "a4de2130c2:0:ab5257bb05cd2fb8044fe26483f6d27b57124ca7b350fb3e0f07d405c68c4416094dbc836bf62ed483072501aa3384dff3c74ac50050c1bfbb1dc657001ef6a1", // planet 使用的公钥
      "Endpoints": ["127.0.0.1/9993"] // 端点清单,使用 IP/port 格式,支持 IPv4/IPv6
    }
  ]
}

构建镜像

docker build --force-rm . -t sbilly/zerotier-controller:latest

运行

可以根据实际需求启动容器镜像,下面是几个例子:

# Run with default settings
docker run --rm -ti -p 4000:4000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest

# Run with custom envirments settings
docker run --rm -ti -e ZU_SECURE_HEADERS=false -e ZU_CONTROLLER_ENDPOINT=http://127.0.0.1:9993/ -e ZU_DEFAULT_USERNAME=admin -e ZU_DEFAULT_PASSWORD=zero-ui -p 4000:4000 -p 3000:3000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest

# Run with docker volumes
docker run --rm -ti -v `pwd`/config/identity.public:/app/config/identity.public -v `pwd`/config/identity.secret:/app/config/identity.secret -v `pwd`/config/authtoken.secret:/app/config/authtoken.secret -p 3000:3000 -p 4000:4000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest

其他的也可以看看 github.com/sbilly/docker-zerotier-controller

23440 次点击
所在节点    宽带症候群
56 条回复
sbilly
2021-11-17 09:39:47 +08:00
@TossPig 需要
Markxu0
2021-11-21 16:55:18 +08:00
迫于楼主这个国内机器下载过慢,自己也写了一个 https://github.com/xubiaolin/docker-zerotier-planet
sbilly
2021-12-07 09:17:19 +08:00
发文以后自建 ZeroTier Planet/Controller 的 docker 镜像和帖子都多了不少,甚至有一些提到了能不做任何修改光一个 UI 就可以自建 planet ,这其实是有误导的。大家可以看一下自己机器上 zerotier-cli listpeers 的显示,如果你自己的节点都是 peer 或者 moon ,则意味着并没有成为 planet 。

ZeroTier 本身有几个概念:

- root/planet:就是 zerotier-cli listpeers 看到的 planet 。
- controller:控制器,提供内部的 API ,参与到 network 的寻址等一系列流程中。实际部署中不少其实也是 root/planet ,也可以不部署在一起。
- controller UI:控制器的 WEB 界面,提供用户层面的界面和 API 。缺省可以和 root/planet 、controller 在同一台机器上,但实际上是可以 不部署在一起。

目前 github.com 上提供的和 controller 相关的开源项目基本都是 controller UI (包括:zero-ui 、ztncui ),这几个项目主要是提供了界面,并绕过官方在界面上对节点数量的限制,但实际上对时延这些并无改善。
tallest
2021-12-09 16:17:30 +08:00
绝了,我不论是自己编译的镜像还是直接用你的,都连不上 planet ,客户端 join 之后 members 死活是空的。
客户端执行 zerotier-cli peers 也只有一行,在你 issues 有个一样的问题,
luo362722353
2021-12-12 19:49:52 +08:00
@sbilly 冒昧问一下 ,openwrt 需要改动哪几个配置,Planet 建立后,客户端无法上线到 Planet
documentzhangx66
2021-12-30 14:53:56 +08:00
最近研究了一下 moon 到 plannet ,发现很多问题。

1.这软件就是个傻子,当连接不上时,正常的 tracert 手段根本无法跟踪。

2.这软件的开发也是个傻子,IP 与端口这些信息居然写死在源代码里。

而且这软件基于 UDP ,很多企业环境里,网管直接把 udp 给禁了,这软件也废了。
humbass
2022-05-19 23:38:22 +08:00
新版本可以直接搭建 Planet 服务器,客户端都不用动,直接联网。
modrich
2022-06-22 13:23:06 +08:00
@humbass 请问有教程吗,怎么搞
gam2046
2022-06-29 10:49:44 +08:00
大佬 想咨询一下,搭建私有的 controller 与 moon ,那么在客户端需要做哪些事情呢。
CloudyKumori
2022-08-03 16:32:26 +08:00
@humbass 客户端不用动是指调用官方 api 来连接服务器吗?这个办法好像已经不行了,运营商开始干扰 zerotier 的官方服务器通讯,必须得在服务器端和客户端修改 planet 文件替换才能正常使用了
ZeroDu
2022-08-04 17:03:48 +08:00
直接用你的机箱运行
ZeroDu
2022-08-04 17:05:24 +08:00
直接用你的镜像运行
```
docker run --rm -ti -e ZU_SECURE_HEADERS=false -e ZU_CONTROLLER_ENDPOINT=http://127.0.0.1:9993/ -e ZU_DEFAULT_USERNAME=admin -e ZU_DEFAULT_PASSWORD=zero-ui -p 4000:4000 -p 3000:3000 -p 9993:9993 -p 9993:9993/udp sbilly/zerotier-controller:latest
```

客户端设置 plannet 还是显示 leaf
jqtmviyu
2022-09-20 00:11:13 +08:00
@ZeroDu 构建镜像可能需要进一步处理, docker 容器里没有把官方的 planet 文件删掉, 需要自己手动替换 planet 配置文件.
楼主在[issuecomment-1061609898]( https://github.com/sbilly/docker-zerotier-controller/issues/11#issuecomment-1061609898)里回复我了. (但我当时没看到换成 ztncui 控制器的镜像了)
原作者的回复是[issuecomment-1062405242]( https://github.com/sbilly/docker-zerotier-controller/issues/11#issuecomment-1062405242) 你可以试下有没有效果, 有的话让楼主 fix 下

你也可能参考下我的一些处理方式[issuecomment-1059961262]( https://github.com/Jonnyan404/zerotier-planet/issues/11#issuecomment-1059961262).
Xiaosteven
2023-08-16 14:38:21 +08:00
@sbilly @Markxu0 因最近国内电信把 4 个官方节点都封了,只能走自建 planet 。请问有没有什么办法可以添加多个 planet?例如我有 3 个服务器,能把这 3 个服务器都添加进来吗?这样不管哪个服务器 ban ,都还有其他的备用。谢谢
lxian
316 天前
@tallest 我也遇到这个问题了。你现在有解决了吗?
tallest
314 天前
@lxian 没有,放弃了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX