1
头图

安装 Zerotier

准备一台带公网IP的云主机,配置不用高,我用的是Ubuntu 22.04系统。

进入命令终端,使用以下命令进行安装(同样适用于Debian系统)1

curl -s https://install.zerotier.com | sudo bash

或者如果有装 GnuPG 这是更安全的安装方法

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \  
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

默认安装在 /var/lib/zerotier-one/ 目录中

制作 planet 文件

新建脚本文件 make_planet.sh

#!/bin/bash
ip=`wget http://ipecho.net/plain -O - -q ; echo`
addr=$ip/9993
identity=`cat /var/lib/zerotier-one/identity.public`
apt-get -y install build-essential git nlohmann-json3-dev
git clone -b 1.12.2 --depth 1 https://github.com/zerotier/ZeroTierOne.git
cd ./ZeroTierOne/attic/world/
sed -i '/roots.push_back/d' ./mkworld.cpp
sed -i '/roots.back()/d' ./mkworld.cpp
sed -i '86i roots.push_back(World::Root());' ./mkworld.cpp
sed -i '87i roots.back().identity = Identity(\"'"$identity"'\");' ./mkworld.cpp
sed -i '88i roots.back().stableEndpoints.push_back(InetAddress(\"'"$addr"'\"));' ./mkworld.cpp
source ./build.sh
./mkworld
mv ./world.bin ./planet
cp -r ./planet /var/lib/zerotier-one/
systemctl restart zerotier-one.service

执行脚本

sudo bash make_planet.sh

部署网络控制器UI

下载 ztncui 的源码

git clone https://github.com/key-networks/ztncui.git

安装 nodejs 版本至少 14 以上2

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\
sudo apt-get install -y nodejs &&\
sudo npm install -g node-gyp pm2

准备运行参数3

cd ztncui/src/
secret=`cat /var/lib/zerotier-one/authtoken.secret`
echo "ZT_TOKEN=$secret" >>./.env
echo "HTTP_PORT=80" >>./.env
echo "HTTP_ALL_INTERFACES=yes" >>./.env
echo "NODE_ENV=production" >>./.env
ln -s /var/lib/zerotier-one/planet public/planet

安装依赖包

npm install

运行

pm2 start bin/www --name ztncui
pm2 startup
pm2 save

浏览器输入http://<服务器IP>,使用默认帐号 admin 密码 password登录

使用网络控制器

新建网络,取一个网络名字
image.png

点击 Easy setup 按钮进入ip地址池配置
image.png

点击 Generate network address自动生成配置
image.png

客户端加入网络

参考上文完成客户端的安装,从 http://<服务器IP>/planet 这个网址下载 planet 文件,替换掉安装目录的 planet 文件,然后重启客户端。

使用命令或UI加入新创建的网络

zerotier-cli join <网络ID>

到网络控制台打开新节点的 Authorized
image.png

为啥不用Docker

用 Docker 总感觉隐藏了很多令人不安的因素,所以我喜欢自己捣腾,本文所有源码和应用包都来自官方版本,原汁原味。


兆鑫软件
42 声望6 粉丝

引用和评论

0 条评论