字节笔记本
2026年2月23日
docker-zerotier-planet:一分钟私有部署 ZeroTier Planet 服务器
本文介绍 docker-zerotier-planet,一个让你一分钟内私有部署 ZeroTier Planet 服务器的开源项目。通过自建 Planet 服务器,你可以完全掌控自己的 ZeroTier 网络,获得更好的性能、安全性和可靠性。
项目简介
docker-zerotier-planet 是一个开源的 Docker 部署方案,由 xubiaolin 开发维护。该项目让你可以快速搭建私有的 ZeroTier Planet 服务器,摆脱对官方服务器的依赖。截至目前,该项目在 GitHub 上已获得 3.9k stars,拥有 729 forks,是一个广受欢迎的网络工具项目。
什么是 ZeroTier
ZeroTier 是一个软件定义网络(SDN)平台,它可以将分布在不同地理位置的设备虚拟到一个局域网中,就像它们在同一个物理网络中一样。它使用了一种独特的技术,结合了 VPN 和 SD-WAN 的优点,提供了简单而强大的网络连接方案。
工作原理
ZeroTier 使用一种称为"全局虚拟网络"的技术。每个加入 ZeroTier 网络的设备都会被分配一个唯一的 10 位地址(类似 192.168.x.x 或 10.x.x.x)。当设备想要通信时,ZeroTier 会尝试建立直接的点对点连接(P2P)。如果直接连接不可行(例如由于 NAT 或防火墙限制),数据将通过 Planet 服务器中转。
ZeroTier 网络中的关键概念
| 概念 | 说明 |
|---|---|
| Planet | 根服务器,负责协调网络中的节点,是 ZeroTier 网络的核心 |
| Moon | 中继服务器,帮助节点建立连接,提高连接稳定性 |
| Leaf | 普通节点,即连接到 ZeroTier 网络的终端设备 |
| Network ID | 网络标识符,用于加入特定网络 |
| Controller | 网络控制器,管理网络配置和成员授权 |
为什么要自建 Planet 服务器
自建 Planet 服务器有以下几个重要原因:
性能优势
- 降低延迟:使用地理位置更近的服务器,减少网络延迟
- 提高带宽:不受官方服务器带宽限制,传输速度更快
- 直连优先:更好地支持 P2P 直连,减少中转开销
安全优势
- 数据隐私:数据不经过第三方服务器,保护隐私
- 自主控制:完全掌控网络配置和访问权限
- 隔离性:私有网络与公共互联网隔离
可靠性优势
- 独立运行:不依赖官方服务,避免官方服务器故障影响
- 自定义配置:根据需求调整网络参数
- 长期稳定:适合需要长期稳定运行的场景
核心特性
- 一键部署:使用简单的脚本即可完成部署
- Docker 容器化:基于 Docker 运行,环境隔离,易于管理
- Web 管理界面:提供直观的 Web UI 管理网络
- 多平台支持:支持 Windows、Linux、macOS、Android、iOS 等客户端
- SSL 支持:支持为管理面板配置 HTTPS
- 自动配置:自动生成 planet 文件和配置文件
安装指南
环境准备
在开始安装之前,请确保您的服务器满足以下条件:
服务器要求:
- 具有公网 IP 的服务器(IPv4 或 IPv6)
- 至少 512MB 内存
- 1GB 可用磁盘空间
软件依赖:
- Git
- Docker
- Docker Compose(可选)
系统要求: 推荐使用较新的 Linux 发行版:
- Ubuntu 20.04+
- Debian 10+
- CentOS 7+
安装步骤
1. 安装 Git
# Debian/Ubuntu 等
apt update && apt install git -y
# CentOS 等
yum update && yum install git -y2. 安装 Docker
curl -fsSL https://get.docker.com | bash3. 启动 Docker
service docker start4. 配置 Docker 加速镜像(可选)
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.aster.edu.pl",
"http://hub.imoyuapp.win"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker5. 下载项目源码
git clone https://github.com/xubiaolin/docker-zerotier-planet.git或使用加速镜像:
git clone https://ghproxy.imoyuapp.win/github.com/xubiaolin/docker-zerotier-planet.git6. 执行安装脚本
cd docker-zerotier-planet
./deploy.sh脚本会提示选择操作:
欢迎使用 zerotier-planet 脚本,请选择需要执行的操作:
1. 安装
2. 卸载
3. 更新
4. 查看信息
5. 退出
请输入数字:选择 1 开始安装,安装过程会自动完成以下操作:
- 拉取 Docker 镜像
- 生成 planet 文件
- 启动服务
7. 下载 planet 文件
安装完成后,需要从服务器下载以下文件到客户端:
/data/zerotier/dist/planet/data/zerotier/ztncui/token
可以通过以下方式获取:
- SCP 下载:
scp root@your-server:/data/zerotier/dist/planet ./ - HTTP 下载:如果开启了文件服务器,可以通过浏览器下载
8. 访问管理界面
安装完成后,访问 http://your-server-ip:3443 进入管理界面。
默认账号密码:
- 用户名:
admin - 密码:
password
重要: 首次登录后请立即修改默认密码!
创建网络
- 登录管理界面后,点击 "Add Network"
- 输入网络名称(可选)
- 点击 "Create" 创建网络
创建成功后系统会自动生成一个网络 ID,这个 ID 在后续客户端配置时会用到,请记录下来。
分配网络 IP
- 在管理界面点击刚创建的网络
- 进入 "IPv4 Auto-Assign" 选项卡
- 选择或输入 IP 地址范围(如
192.168.192.0/24) - 点击 "Submit" 保存
客户端配置
ZeroTier 支持多种主流操作系统的客户端,包括:
- Windows
- Linux
- macOS
- Android
- iOS
- OpenWRT
Windows 配置
步骤 1:下载客户端
去 ZeroTier 官网 下载 ZeroTier 客户端。
步骤 2:替换 planet 文件
-
停止 ZeroTier 服务:
powershellStop-Service ZeroTierOneService -
替换 planet 文件: 将下载的
planet文件复制到C:\ProgramData\ZeroTier\One\目录下,替换原有文件。
步骤 3:重启服务
Start-Service ZeroTierOneService步骤 4:加入网络
使用管理员身份打开 PowerShell,执行如下命令:
zerotier-cli.bat join 网络id成功后会显示 200 join OK。
步骤 5:授权设备
- 打开管理界面
http://your-server-ip:3443 - 进入对应的网络
- 在 "Members" 选项卡中找到刚加入的设备
- 勾选 "Authorized" 授权该设备
授权后,设备会在 "IP assignment" 里面获得 ZeroTier 的内网 IP。
步骤 6:验证连接
执行如下命令验证连接状态:
zerotier-cli.bat peers如果看到类似以下的输出,说明连接成功:
200 peers
<ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
fcbaeb9b6c 1.8.7 PLANET 52 DIRECT 16 8994 1.1.1.1/9993到这里就加入网络成功了!
Linux 客户端
# 安装 ZeroTier
curl -s https://install.zerotier.com | sudo bash
# 停止服务
sudo systemctl stop zerotier-one
# 替换 planet 文件
sudo cp /path/to/planet /var/lib/zerotier-one/
# 启动服务
sudo systemctl start zerotier-one
# 加入网络
sudo zerotier-cli join 网络idmacOS 客户端
- 下载并安装 ZeroTier 客户端
- 停止 ZeroTier 服务
- 替换
/Library/Application Support/ZeroTier/One/planet文件 - 重启服务
- 使用
zerotier-cli join 网络id加入网络
Android 客户端
- 下载 ZeroTier One App
- 将 planet 文件推送到手机
/sdcard/zerotier/planet - 在 App 设置中选择自定义 planet 文件
- 添加网络并加入
iOS 客户端
iOS 需要使用第三方客户端或越狱后替换 planet 文件,具体方法请参考项目文档。
OpenWRT 客户端
# 安装 ZeroTier
opkg update
opkg install zerotier
# 配置
uci set zerotier.sample_config.enabled='1'
uci commit zerotier
# 替换 planet 文件后启动
/etc/init.d/zerotier start管理面板 SSL 配置
管理面板的 SSL 支持需要自行配置,参考 Nginx 配置如下:
upstream zerotier {
server 127.0.0.1:3443;
}
server {
listen 443 ssl;
server_name {CUSTOM_DOMAIN}; # 替换自己的域名
# SSL 证书地址
ssl_certificate pem 或 crt 文件的路径;
ssl_certificate_key key 文件的路径;
# SSL 验证相关配置
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://zerotier;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name {CUSTOM_DOMAIN};
return 301 https://$server_name$request_uri;
}Docker Compose 部署
项目也支持使用 docker-compose 启动部署:
version: '3'
services:
myztplanet:
image: xubiaolin/zerotier-planet:latest
container_name: ztplanet
ports:
- 9994:9994
- 9994:9994/udp
- 3443:3443
- 3000:3000
environment:
- IP_ADDR4=[IPV4IP ADDRESS]
- IP_ADDR6=
- ZT_PORT=9994
- API_PORT=3443
- FILE_SERVER_PORT=3000
volumes:
- ./data/zerotier/dist:/app/dist
- ./data/zerotier/ztncui:/app/ztncui
- ./data/zerotier/one:/var/lib/zerotier-one
- ./data/zerotier/config:/app/config
restart: unless-stopped卸载
如需卸载,执行以下命令:
docker rm -f zerotier-planet常见问题
Q1: 为什么我 ping 不通目标机器?
- 检查防火墙是否放行了 ZeroTier 端口(默认 9993/UDP)
- 确认设备已在管理界面授权
- 检查 IP 分配是否正确
Q2: iOS 客户端怎么用?
iOS 需要使用第三方客户端或越狱后替换 planet 文件,具体方法请参考项目文档。
Q3: 为什么看不到官方的 Planet?
自建 Planet 服务器后,客户端只连接你的私有 Planet,不再连接官方 Planet,这是预期行为。
Q4: 我更换了 IP 需要怎么处理?
需要重新生成 planet 文件并分发给所有客户端:
- 停止容器
- 删除旧的 planet 文件
- 重新运行部署脚本
- 将新的 planet 文件分发给客户端
Q5: PVE LXC 容器没有创建网卡?
需要在 PVE 宿主机上修改 LXC 配置文件,添加:
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file对于 cgroup2 系统:
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=fileQ6: 管理后台忘记密码怎么办?
需要进入容器重置密码:
docker exec -it zerotier-planet bash
# 在容器内执行重置密码命令Q7: 为什么连不上 planet?
- 检查服务器防火墙是否放行端口
- 确认 planet 文件是否正确替换
- 检查客户端日志排查问题
Q8: 如何判断是直连还是中转?
执行 zerotier-cli peers 查看连接状态:
<ztaddr> <ver> <role> <lat> <link> <lastTX> <lastRX> <path>
69c0d507d0 - LEAF -1 RELAY # RELAY 表示中转
93caa675b0 1.12.2 PLANET -894 DIRECT # DIRECT 表示直连- DIRECT:直连
- RELAY:通过服务器中转
Q9: 为什么我的 ZeroTier 传输不稳定?
- 检查服务器带宽和延迟
- 确认是否为直连,中转会影响稳定性
- 检查是否有防火墙干扰
Q10: 支持域名吗?
支持,可以在客户端配置中使用域名代替 IP 地址。
Q11: ARM 服务器可以搭建吗?
可以,项目支持 ARM64 架构,使用对应的 Docker 镜像即可。
Q12: 支持 docker-compose 启动部署吗?
支持,参考上方的 Docker Compose 配置示例。
风险声明
本项目仅供学习和研究使用,不鼓励用于商业用途。我们不对任何因使用本项目而导致的任何损失负责。
项目链接
- GitHub 仓库:https://github.com/xubiaolin/docker-zerotier-planet
- ZeroTier 官网:https://www.zerotier.com