字节笔记本

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

bash
# Debian/Ubuntu 等
apt update && apt install git -y

# CentOS 等
yum update && yum install git -y

2. 安装 Docker

bash
curl -fsSL https://get.docker.com | bash

3. 启动 Docker

bash
service docker start

4. 配置 Docker 加速镜像(可选)

bash
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 docker

5. 下载项目源码

bash
git clone https://github.com/xubiaolin/docker-zerotier-planet.git

或使用加速镜像:

bash
git clone https://ghproxy.imoyuapp.win/github.com/xubiaolin/docker-zerotier-planet.git

6. 执行安装脚本

bash
cd docker-zerotier-planet
./deploy.sh

脚本会提示选择操作:

text
欢迎使用 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

重要: 首次登录后请立即修改默认密码!

创建网络

  1. 登录管理界面后,点击 "Add Network"
  2. 输入网络名称(可选)
  3. 点击 "Create" 创建网络

创建成功后系统会自动生成一个网络 ID,这个 ID 在后续客户端配置时会用到,请记录下来。

分配网络 IP

  1. 在管理界面点击刚创建的网络
  2. 进入 "IPv4 Auto-Assign" 选项卡
  3. 选择或输入 IP 地址范围(如 192.168.192.0/24
  4. 点击 "Submit" 保存

客户端配置

ZeroTier 支持多种主流操作系统的客户端,包括:

  • Windows
  • Linux
  • macOS
  • Android
  • iOS
  • OpenWRT

Windows 配置

步骤 1:下载客户端

ZeroTier 官网 下载 ZeroTier 客户端。

步骤 2:替换 planet 文件

  1. 停止 ZeroTier 服务:

    powershell
    Stop-Service ZeroTierOneService
  2. 替换 planet 文件: 将下载的 planet 文件复制到 C:\ProgramData\ZeroTier\One\ 目录下,替换原有文件。

步骤 3:重启服务

powershell
Start-Service ZeroTierOneService

步骤 4:加入网络

使用管理员身份打开 PowerShell,执行如下命令:

powershell
zerotier-cli.bat join 网络id

成功后会显示 200 join OK

步骤 5:授权设备

  1. 打开管理界面 http://your-server-ip:3443
  2. 进入对应的网络
  3. 在 "Members" 选项卡中找到刚加入的设备
  4. 勾选 "Authorized" 授权该设备

授权后,设备会在 "IP assignment" 里面获得 ZeroTier 的内网 IP。

步骤 6:验证连接

执行如下命令验证连接状态:

powershell
zerotier-cli.bat peers

如果看到类似以下的输出,说明连接成功:

text
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 客户端

bash
# 安装 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 网络id

macOS 客户端

  1. 下载并安装 ZeroTier 客户端
  2. 停止 ZeroTier 服务
  3. 替换 /Library/Application Support/ZeroTier/One/planet 文件
  4. 重启服务
  5. 使用 zerotier-cli join 网络id 加入网络

Android 客户端

  1. 下载 ZeroTier One App
  2. 将 planet 文件推送到手机 /sdcard/zerotier/planet
  3. 在 App 设置中选择自定义 planet 文件
  4. 添加网络并加入

iOS 客户端

iOS 需要使用第三方客户端或越狱后替换 planet 文件,具体方法请参考项目文档。

OpenWRT 客户端

bash
# 安装 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 配置如下:

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 启动部署:

yaml
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

卸载

如需卸载,执行以下命令:

bash
docker rm -f zerotier-planet

常见问题

Q1: 为什么我 ping 不通目标机器?

  • 检查防火墙是否放行了 ZeroTier 端口(默认 9993/UDP)
  • 确认设备已在管理界面授权
  • 检查 IP 分配是否正确

Q2: iOS 客户端怎么用?

iOS 需要使用第三方客户端或越狱后替换 planet 文件,具体方法请参考项目文档。

Q3: 为什么看不到官方的 Planet?

自建 Planet 服务器后,客户端只连接你的私有 Planet,不再连接官方 Planet,这是预期行为。

Q4: 我更换了 IP 需要怎么处理?

需要重新生成 planet 文件并分发给所有客户端:

  1. 停止容器
  2. 删除旧的 planet 文件
  3. 重新运行部署脚本
  4. 将新的 planet 文件分发给客户端

Q5: PVE LXC 容器没有创建网卡?

需要在 PVE 宿主机上修改 LXC 配置文件,添加:

text
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

对于 cgroup2 系统:

text
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

Q6: 管理后台忘记密码怎么办?

需要进入容器重置密码:

bash
docker exec -it zerotier-planet bash
# 在容器内执行重置密码命令

Q7: 为什么连不上 planet?

  • 检查服务器防火墙是否放行端口
  • 确认 planet 文件是否正确替换
  • 检查客户端日志排查问题

Q8: 如何判断是直连还是中转?

执行 zerotier-cli peers 查看连接状态:

text
<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 配置示例。

风险声明

本项目仅供学习和研究使用,不鼓励用于商业用途。我们不对任何因使用本项目而导致的任何损失负责。

项目链接

分享: