群晖DSM7安装Docker版Zerotier

15 min read

由于 DSM 7 不允许第三方应用直接使用root权限运行,因此原来的Zerotier套件就各种报错了。使用Docker版本则能解决这个问题。 当然,使用Docker方案,首次折腾会比较麻烦,但是一旦折腾好,就一劳永逸了。

完成这个教程,你主要需要完成以下流程:

  • 在NAS上启用SSH
  • 创建一个持久的 TUN
  • 安装Docker
  • 设置Docker

创建一个持久的TUN

使用SSH 连接到你的NAS,比如使用Putty工具连接。

ssh user@local-ip

切换为root身份

sudo -i

使用vi工具编写脚本到路径: /usr/local/etc/rc.d/tun.sh 这将使得 /dev/net/tun 在启动时调用

echo -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh

给这段脚本添加权限(其实应该先vi这个空的脚本,然后添加权限,最后在写入上面的脚本内容,不然会提示你readonly)

chmod a+x /usr/local/etc/rc.d/tun.sh

运行这个脚本

/usr/local/etc/rc.d/tun.sh

检查TUN的运行状态

ls /dev/net/tun
/dev/net/tun

安装Docker到你的NAS上

直接到套件中心去安装。

创建一个Zerotier目录

mkdir /var/lib/zerotier-one

创建一个容器,这里将它命名为zt(方便后续使用),这里会自动下载最新版的zerotier

docker run -d           \
  --name zt             \
  --restart=always      \
  --device=/dev/net/tun \
  --net=host            \
  --cap-add=NET_ADMIN   \
  --cap-add=SYS_ADMIN   \
  -v /var/lib/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest

使用与配置

查看状态

docker exec -it zt zerotier-cli status

添加网络

docker exec -it zt zerotier-cli join e5cd7a9e1cae134f

在zerotier后台授权当前设备,然后查看状态:

docker exec -it zt zerotier-cli listnetworks

查看运行中的容器:

docker ps

进入容器终端

docker exec -it zt bash

升级

升级zerotier需要先停止容器并且移除容器,然后再拉去最新的容器:

docker ps

列举显示信息:

CONTAINER ID   IMAGE                               COMMAND          CREATED       STATUS      PORTS     NAMES
52c7cb58a1dd   zerotier/zerotier-synology:latest   "zerotier-one"   5 weeks ago   Up 9 days             zt

停止容器(注意id)

docker stop 52c7cb58a1dd

移除容器(使用rm)

docker container rm 52c7cb58a1dd

拉取最新的容器

docker pull zerotier/zerotier-synology:latest

然后再回到创建的步骤。