最近续费域名发现阿里云服务器 99 一年 2c2g,感觉自己血亏用了一整年的 78/month 的腾讯云,遂决定迁移。
经过测试发现 Zerotier 在迁移后需要根据 IP 重新生成 planet 文件,仍然需要重新分发,目前似乎没有好的解决办法,不如重新安装,安装时服务器的防火墙端口记得开

Nginx 配置

这次有一个阿里云的域名,干脆顺便配个 nginx
首先安装 nginx

yum install nginx

然后进入到 nginx 的目录,新建一个配置文件,写入以下内容

cd /etc/nginx
vim conf.d/zerotier.conf
upstream zerotier {
server 127.0.0.1:3443;
}

server {
listen 80;
server_name {your_site}; # 替换为自己的域名

location /zerotier/ {
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;
}
}

保存后使用 nginx -t 测试一下,重启服务即可

%% # 备份容器

  1. 找到想要迁移的容器 ID
docker ps -a
  1. 保存
docker commit [ID] [name]:[tag]
  1. 将保存的镜像文件保存为压缩包
docker save [name]:[tag] > path/to/name.tar

迁移到新的环境中

  1. 上传之前的压缩包,我这里使用 SCP 直接上传到目标服务器
scp path/to/name.tar root@[ip]:/new/path
  1. 在新服务器加载该镜像
docker load -i path/to/new/tar
  1. 运行该镜像
docker run -d -p 9995:9995 -p 9995:9995/udp -p 3443:3443 --name zerotier-planet -restart unless-stopped my-planet:v1.0
  1. 访问网页 UI 3443 端口,发现失败,使用 docker log 检查后发现配置文件仍然指向之前的服务器 IP,因此需要修改
  2. 这里发现如果 IP 地址修改后,对应的 planet 文件也会修改,因此需要对每个客户端去修改 planet,而且之前的网络数据全部丢了。 %%

To be continued