官方的 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
- 缺省用户名 /密码是
admin/zero-ui,可以通过环境变量ZU_DEFAULT_USERNAME和ZU_DEFAULT_PASSWORD来设置 - 环境变量
ZT_PRIMARY_PORT定义了 ZeroTierOne 的local.conf配置文件中primaryPort的设置 - 其他环境变量可以参考 zero-ui 的相关说明
