debian/ubuntu/centos7系统安装syncthing文件同步软件教程
实验系统:debian10/ubuntu/CentOS7 64位
阿里云限量代金券 | 此广告位出租25元/月 |
用putty或者其他ssh工具连上服务器,然后用wget命令下载Syncthing的Linux 64位版,版本号对应官网上的最新版,请自行选择:
wget https://github.com/syncthing/syncthing/releases/download/v1.22.2/syncthing-linux-amd64-v1.22.2.tar.gz
现在可以把下载到的文件解压,然后进入解压后的目录:
tar zxvf syncthing-linux-amd64-v1.22.2.tar.gz
cd syncthing-linux-amd64-v1.22.2
有个可执行文件syncthing,我们要把它放到我们的PATH中,以便直接执行:
cp syncthing /usr/local/bin
返回上一级目录:
cd ..
到这里我们在VPS上的Syncthing已经安装好了,可是直接运行的话,并不能通过外网访问到管理页面,因为Syncthing的管理页面默认是只有本机可以访问的,所以接下来还要进行一点修改,先运行Syncthing:
syncthing
随后就会看到有很多信息,和之前在Windows运行一样,看到类似以下内容的时候就可以按CTRL-C退出程序了:
[OH4IP] 13:32:15 INFO: Completed initial scan (rw) of folder edatb-zzc5f [OH4IP] 13:32:15 INFO: Device OH4IPQD-QDCDAZB-YMMZE4F-BAK4BLQ-3EZLPTD-V73J37V-LTW44V6-YSM6JQ7 is "ruter.ga" at [dynamic] [OH4IP] 13:32:15 INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or directory [OH4IP] 13:32:15 INFO: Creating new HTTPS certificate [OH4IP] 13:32:15 INFO: GUI and API listening on 127.0.0.1:8384 [OH4IP] 13:32:15 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/ [OH4IP] 13:32:16 INFO: Detected 0 NAT devices
我们第一次运行是为了让它创建配置文件,然后我们再进行修改。用以下命令对配置文件进行编辑(centos建议用vi命令):
nano ~/.config/syncthing/config.xml
一瞬间是不是懵逼了?不要慌,先找到下面这几行:
<gui enabled="true" tls="false" debugging="false"> <address>127.0.0.1:8384</address> <apikey>2GeGJK9z6tXKP3nHJYU56ZHoYSYnqQ9S</apikey> <theme>default</theme> </gui>
然后把IP127.0.0.1修改成0.0.0.0即可保存退出:
<gui enabled="true" tls="false" debugging="false"> <address>0.0.0.0:8384</address> <apikey>2GeGJK9z6tXKP3nHJYU56ZHoYSYnqQ9S</apikey> <theme>default</theme> </gui>
2024年7月3日更新:
遇到一个棘手的问题,主机哥在debian12系统下运行syncthing后竟然没有在此路径“~/.config/syncthing/config.xml”找到config.xml配置文件,询问ChatGPT后得知可以使用下面命令查找config.xml
find ~ -name config.xml
结果如下:
/root/.local/state/syncthing/config.xml
在debian12系统下修改config.xml配置文件:
nano /root/.local/state/syncthing/config.xml
设置好之后执行syncthing运行,就可以通过http://your_ip_addr:8384来进行访问管理了,如果直接通过外网ip:端口访问还是无法打开管理页面,那就需要进行防火墙的设置开启8384端口了(不懂防火墙设置的也可以借用第三方VPS管理软件设置如宝塔、appnode):
其实主机哥我不会使用命令,命令是我的弱项,我这里就不班门弄斧了,自行去百度搜索方法
再次打开http://your_ip_addr:8384就能看见管理页面了
可以很明显地看到一条警告信息,提醒我们设置管理用户及密码,点击「设置」,然后把「用户名」和「密码」填写好,「使用加密连接到图形管理页面」这个是开启HTTPS,按需勾选
执行syncthing报错提示WARNING: Failed to initialize config: failed to generate default config: get free port (GUI): listen tcp 127.0.0.1:0: bind: cannot assign requested address的解决办法:
是因为没有生成默认的配置文件导致的,手动创建配置文件:
nano ~/.config/syncthing/config.xml
复制黏贴以下内容
<configuration version="30"> <gui enabled="true" tls="false"> <address>127.0.0.1:8384</address> <apikey>自己设置的API KEY</apikey> <theme>default</theme> <user>somename</user> <password>a password</password> </gui> <options> <listenAddress>[::]:22000</listenAddress> <globalAnnounceServer>announce.syncthing.net:22025</globalAnnounceServer> <localAnnounceEnabled>true</localAnnounceEnabled> <autoUpgradeIntervalH>12</autoUpgradeIntervalH> <minHomeDiskFree unit="GiB">5</minHomeDiskFree> </options> </configuration>
注意:请将以上内容中的"自己设置的API KEY"、"somename"和"a password"替换为您自己设置的值。注意passwd是采用了 bcrypt 算法进行加密,并且设置了 10 作为 cost 参数生成的哈希值。
主机哥搞了个php代码可以生成syncthing专用的密码哈希值
<?php $password = "mypassword"; // 指定密码 $options = [ 'cost' => 10, // 设置 cost 参数为 10 ]; // 使用 password_hash() 函数生成哈希值 $hash = password_hash($password, PASSWORD_BCRYPT, $options); echo $hash; // 输出生成的哈希值 ?>
保存为mm.php
然后执行下面命令就可以看到密码哈希值了
php -f mm.php
如果你觉得麻烦可以使用主机的在线生成网址:https://sh.23vps.com/syncthing-config-gui-passwd-hash.php
最后登录进去时会提示监听地址错误,进设置修改一下就好了,还有就是自己设置的API这里可以在设置-常规里点一下生成,磁盘最低可用值改为1%就好了。最后为了安全,在设置-图形用户界面那里点一下使用加密连接到图形管理页面,保存后刷新一下页面就成了https链接了。
开机启动官方提供了两种方法:Supervisord和systemd
开机自动启动官方文档:https://docs.syncthing.net/users/autostart.html
主机哥采用systemd的方式
找到解压目录etc/linux-systemd/system/syncthing@.service这个文件,改名为syncthing@root.service,root是你希望使用的用户
cd etc/linux-systemd/system mv syncthing@.service syncthing@root.service
将syncthing@root.service里的ExecStart这行路径修改成实际路径和运行命令,我发现官方给的ExecStart路径里少了个local路径,所以要修改为/usr/local/bin
vi syncthing@root.service #centos nano syncthing@root.service #debian
复制文件到/etc/systemd/system/中
cp syncthing@root.service /etc/systemd/system
重新加载配置文件
systemctl daemon-reload
管理命令
#设置开机启动 systemctl enable syncthing@root.service #取消开机启动 systemctl disable syncthing@root.service #启动服务 systemctl start syncthing@root.service #停止服务 systemctl stop syncthing@root.service #查看状态 systemctl status syncthing@root.service
进阶:
让linux软件后台运行的简单方法:https://diannaobos.com/post/254.html
在服务器上使用Syncthing可以修改配置文件后使用外网进行访问管理,本地端也可以如法炮制,如果没有外网IP则需要使用FRP之类的进行映射,具体操作请移步FRP内网穿透工具:https://diannaobos.com/frp/
注意:
如果提示下图信息:
chmod 777 /usr/local/bin/syncthing
扩展:
以上只是简单的安装和设置步骤,还有很多内容没有涉及到,例如开机启动、忽略同步内容、命令行操作等等,具体请查看官方文档,里面有非常详尽的教程。
官方文档:https://docs.syncthing.net/index.html
命令行操作:https://docs.syncthing.net/users/syncthing.html
windows版教程:https://23vps.com/post/41.html