服务器搭建syncthing客户端,自己私有syncthing发现服务器和中继服务器

chenyajun  2023-07-28 11:44:20  阅读 1833 次 评论 0 条

本文都以centos为例说明,安装到指定文件夹

一:在服务器上安装syncthing

syncthing地址:https://github.com/syncthing/syncthing

1:创建指定文件夹,并下载 syncthing 程序

# 创建文件夹
mkdir -p /usr/local/syncthing/syncthing/
# 进入上面创建的目录
cd /usr/local/syncthing/syncthing/
# 下载 syncthing 程序
wget https://github.com/syncthing/syncthing/releases/download/v1.23.6/syncthing-linux-amd64-v1.23.6.tar.gz

2:解压和清理

# 进入上面创建的目录,可以忽略,上面命令已经进去了
cd /usr/local/syncthing/syncthing/
# 解压,默认以文件名创建文件夹解压到此文件夹下
tar -xvf syncthing-linux-amd64-v1.23.6.tar.gz
# 移动syncthing-linux-amd64-v1.23.6文件夹下文件到syncthing目录
mv syncthing-linux-amd64-v1.23.6/* /usr/local/syncthing/syncthing/
# 删除解压的目录和下载的源文件安装包
rm -rf syncthing-linux-amd64-v1.23.6 syncthing-linux-amd64-v1.23.6.tar.gz

3:启动运行

# 启动命令
./syncthing

运行命令后可以看到一些信息,如

# 配置文件在/root/.config/syncthing/config.xml
# 监听的是127.0.0.1:8384,外部ip无法访问
# 使用Ctrl+c停止掉syncthing,去编辑一下配置文件,将127.0.0.1:8384其改为[指定ip]:8384或0.0.0.0:8384,然后退出保存,记得防火墙放行8384
# 再次启动syncthing,,命令是./syncthing
# 这时就可以通过浏览器访问syncthing客户端了,例如http://服务器IP:8384

4:开机自启动

这个程序以 root 用户身份自动启动,可以在 /etc/rc.local 中添加如下命令:

# rc.local 脚本会在CentOS系统启动完成后以root权限执行,所以在里面用sudo启动syncthing就可以实现以root权限自动启动
sudo /usr/local/syncthing/syncthing/syncthing -no-browser -no-restart &
# 这里的命令详细解释:
- sudo - 使用 sudo 提升为 root 权限执行命令
- /usr/local/syncthing/syncthing/syncthing - 要启动的 syncthing 程序路径
- -no-browser - 不打开浏览器界面
- -no-restart - 不重启已经运行的进程
- & - 在后台执行

另一种方法是直接修改 syncthing 程序的所有者为 root:

chown root:root /usr/local/syncthing/syncthing/syncthing
chmod +xs /usr/local/syncthing/syncthing/syncthing

这样 syncthing 就默认会以 root 权限执行,直接启动即可:

/usr/local/syncthing/syncthing/syncthing -no-browser -no-restart &

总之,通过在 CentOS 的 rc.local 中以 root 身份执行 syncthing 命令,可以实现以 root 权限自动启动该程序

备注说明:syncthing电脑客户端启动后,命令行窗口会一直显示,看着很烦人,尤其像我这种有强迫症的人,可以用下面方式让其静默运行

打开记事本,输入

CreateObject("wscript.shell").run "syncthing.exe",0

然后保存,名称如syncthing.vbs保存为vbs文件,放到syncthing.exe同级目录,以后直接运行这个文件即可

二:在服务器上搭建发现服务器

syncthing发现服务器地址:https://github.com/syncthing/discosrv

1:创建指定文件夹,并下载 stdiscosrv 程序

# 创建文件夹
mkdir -p /usr/local/syncthing/stdiscosrv/
# 进入上面创建的目录
cd /usr/local/syncthing/stdiscosrv/
# 下载 stdiscosrv 程序
wget https://github.com/syncthing/discosrv/releases/download/v1.23.4/stdiscosrv-linux-amd64-v1.23.4.tar.gz

2:解压和清理

# 进入上面创建的目录,可以忽略,上面命令已经进去了
cd /usr/local/syncthing/stdiscosrv/
# 解压,默认以文件名创建文件夹解压到此文件夹下
tar -xvf stdiscosrv-linux-amd64-v1.23.4.tar.gz
# 可忽略,创建证书,程序好像也会自动创建证书,这一步或许可以忽略
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ~/key.pem -out ~/cert.pem
# 复制stdiscosrv-linux-amd64-v1.23.4文件夹下文件到stdiscosrv目录
cp stdiscosrv-linux-amd64-v1.23.4/* /usr/local/syncthing/stdiscosrv/
# 删除解压的目录和下载的源文件安装包
rm -rf stdiscosrv-linux-amd64-v1.23.4 stdiscosrv-linux-amd64-v1.23.4.tar.gz

3:启动

# 启动命令
./stdiscosrv

发现服务器默认端口为8443,防火墙放行,若想更改,使用“./stdiscosrv -listen=:新端口”来启动

注意事项:新端口前面要有冒号,不然提示错误,地址中缺少端口missing port in address,如./stdiscosrv -listen=:1443

我这里因为服务器的8443端口被别的程序占用,所以用了1443端口,防火墙放行了1443端口

4:配置

4-1,搜索Server device ID is,后面就是发现服务器的ID,将该ID填写至你的所有的syncthing客户端中

4-2,客户端填写在设置→连接下面的全局发现服务器,把default替换为此ID,格式是https://服务器地址:8443/?id=发现服务器ID

服务器搭建syncthing客户端,自己私有syncthing发现服务器和中继服务器-陈亚军博客

4-3,或用逗号和default分开,这样就能同时使用多个地址

5:后台运行开机自启

# 保持后台运行
cd /usr/local/syncthing/stdiscosrv/ && nohup ./stdiscosrv -listen=:1443 > stdiscosrv.log 2>&1 &
# 开机自动运行,把上面这条命令添加到etc/rc.local文件里面

三:在服务器上搭建中继服务器

Syncthing中继服务器地址:https://github.com/syncthing/relaysrv

1:创建指定文件夹,并下载 strelaysrv 程序

1:创建文件夹
mkdir -p /usr/local/syncthing/strelaysrv/
# 进入上面创建的目录
cd /usr/local/syncthing/strelaysrv/
# 下载 strelaysrv 程序
wget https://github.com/syncthing/relaysrv/releases/download/v1.22.1/strelaysrv-linux-amd64-v1.22.1.tar.gz

2:解压和清理

# 进入上面创建的目录,可以忽略,上面命令已经进去了
cd /usr/local/syncthing/strelaysrv/
# 解压,默认以文件名创建文件夹解压到此文件夹下
tar -xvf strelaysrv-linux-amd64-v1.22.1.tar.gz
# 可忽略,创建证书,程序也会自动创建证书,这一步或许可以忽略
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ~/key.pem -out ~/cert.pem
# 复制strelaysrv-linux-amd64-v1.22.1文件夹下文件到strelaysrv目录
cp strelaysrv-linux-amd64-v1.22.1/* /usr/local/syncthing/strelaysrv/
# 删除解压的目录和下载的源文件安装包
rm -rf strelaysrv-linux-amd64-v1.22.1 strelaysrv-linux-amd64-v1.22.1.tar.gz

3:启动和放行端口

# 启动
./strelaysrv -pools=""
或
./strelaysrv -pools="" -global-rate 3145728 -protocol=tcp4
# 上面说明
-pools=""参数意思是不加入全球任何中继池,保持中继服务器为私有

放行端口,防火墙放行22067端口,若需更换端口,可以使用 “-listen=:新端口”来更改端口

4:后台运行开机自启

# 保持后台运行
cd /usr/local/syncthing/strelaysrv/ && nohup ./strelaysrv -pools="" > strelaysrv.log 2>&1 &
# 开机自动运行,把上面这条命令添加到etc/rc.local文件里面

5:配置

上面运行./strelaysrv -pools=””启动命令以后可以看到信息,并填写到客户端协议监听地址处

1,看到URI: relay://0.0.0.0:22067/?id=,后面就是中继服务器的ID,将该ID填写至你的所有的syncthing客户端中

2,客户端填写在设置→连接下面的协议监听地址,把default替换为中继服务器的地址,如relay://0.0.0.0:22067/?id=中继服务器ID

服务器搭建syncthing客户端,自己私有syncthing发现服务器和中继服务器-陈亚军博客

本文地址:https://chenyajun.net/index.php/post/138.html
版权声明:本文为原创文章,版权归 chenyajun 所有,欢迎分享本文,转载请保留出处!

评论已关闭!