本文都以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
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