如何在 Ubuntu 20.04 上安装 Syncthing
在此页
- 先决条件
- 开始
- 在两台服务器上安装 Syncthing Server
- 在两台服务器上创建系统单元文件
- 访问 Syncthing Web 界面
- 将 Nginx 配置为同步的反向代理
- 结论
Syncthing 是一种开源工具,用于在网络上的两台或多台计算机之间同步文件。它使用点对点架构并直接在您的设备之间交换数据。多个设备之间传输的所有数据都使用 TLS 加密。每当您在一台 Syncthing 机器上创建、修改或删除任何数据时,它都会自动复制到其他服务器。它可以安装在所有主要操作系统中,包括 Linux、Windows、Mac OS X 等。
在本指南中,我们将向您展示如何在 Ubuntu 20.04 上安装和设置 Syncthing 服务器。
先决条件
- 两台运行 Ubuntu 20.04 的服务器。
- 用您的服务器 IP 指向的有效域名。
- 在两台服务器上都配置了根密码。
入门
首先,通过运行以下命令将系统包更新到更新版本:
apt-get update -y
更新所有包后,您可以继续下一步。
在两台服务器上安装 Syncthing Server
默认情况下,Syncthing 包不包含在 Ubuntu 20.04 默认存储库中。因此,您需要将 Syncthing 存储库添加到 APT。
首先,使用以下命令在两台服务器上安装所有必需的依赖项:
apt-get install gnupg2 curl apt-transport-https -y
接下来,使用以下命令下载并添加发布密钥:
curl -s https://syncthing.net/release-key.txt | apt-key add -
接下来,使用以下命令将 Syncthing 存储库添加到 APT:
echo "deb https://apt.syncthing.net/ syncthing release" > /etc/apt/sources.list.d/syncthing.list
接下来,更新存储库并使用以下命令安装 Syncthing 服务器:
apt-get update -y
apt-get install syncthing -y
安装完成后,使用以下命令验证 Syncthing 的版本:
syncthing --version
您应该得到以下输出:
syncthing v1.18.0 "Fermium Flea" (go1.16.5 linux-amd64) 2021-06-21 20:53:50 UTC [noupgrade]
此时,Syncthing 已安装在两台服务器上。您现在可以继续下一步。
在两台服务器上创建系统单元文件
接下来,您需要创建一个 systemd 单元文件来管理 Syncthing 服务。您可以使用以下命令在两台服务器上创建它:
nano /etc/systemd/system/
添加以下行:
[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
[Service]
User=%i
ExecStart=/usr/bin/syncthing -no-browser -gui-address="0.0.0.0:8384" -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
[Install]
WantedBy=multi-user.target
完成后保存并关闭文件。然后,重新加载 systemd 守护进程以应用配置:
systemctl daemon-reload
接下来,使用以下命令启动 Syncthing 服务:
systemctl start
要验证 Syncthing 服务的状态,请运行以下命令:
systemctl status
您应该看到以下输出:
? - Syncthing - Open Source Continuous File Synchronization for root
Loaded: loaded (/etc/systemd/system/; disabled; vendor preset: enabled)
Active: active (running) since Fri 2021-07-09 04:40:12 UTC; 5s ago
Docs: man:syncthing(1)
Main PID: 2878 (syncthing)
Tasks: 14 (limit: 2353)
Memory: 44.2M
CGroup: /system.slice/system-syncthing.slice/
??2878 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
??2889 /usr/bin/syncthing -no-browser -gui-address=0.0.0.0:8384 -no-restart -logflags=0
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: QUIC listener ([::]:22000) starting
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Loading HTTPS certificate: open /root/.config/syncthing/https-cert.pem: no such file or d>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Creating new HTTPS certificate
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: GUI and API listening on [::]:8384
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: My name is "node1"
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] WARNING: Syncthing should not run as a privileged or system user. Please consider using a norma>
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 detected NAT type: Not behind a NAT
Jul 09 04:40:14 node1 syncthing[2878]: [WPOF6] INFO: quic://0.0.0.0:22000 resolved external address quic://45.58.35.6:22000 (via stun.syncthin>
此时,Syncthing服务已经启动,并监听8384端口,可以通过以下命令查看:
ss -antpl | grep 8384
您应该看到以下输出:
LISTEN 0 4096 *:8384 *:* users:(("syncthing",pid=2889,fd=12))
访问同步 Web 界面
接下来,打开 Web 浏览器并使用 URL http://first-server-ip:8384 和 http://first-server-ip:8384 访问 Syncthing Web 界面。
您应该看到以下屏幕:

单击设置以定义管理员用户和密码,如下所示:

提供您的用户名、密码并单击“保存”按钮以应用更改。您将被重定向到 Syncthing 登录页面:

提供您的管理员用户名和密码,然后单击“登录”按钮。您应该看到以下屏幕:

接下来,您需要将每台服务器的设备 ID 添加到另一台服务器,以便在两台服务器之间同步文件。为此,请在两台服务器上单击“操作”>“显示 ID”按钮。您应该看到以下屏幕:


在第一台服务器上,单击添加远程设备。您应该看到以下屏幕:

提供第二台服务器的设备 ID,然后单击“保存”按钮。
在第二台服务器上,单击添加远程设备。您应该看到以下屏幕:

提供第一台服务器的设备 ID,然后单击“保存”按钮。您应该看到以下屏幕:

现在,您需要添加并共享要与第二台服务器同步的文件夹。单击添加文件夹按钮。您应该看到以下屏幕:

提供您的文件夹标签、文件夹路径,然后单击“共享”选项卡。您应该看到以下屏幕:

勾选第二个服务器并单击“保存”按钮。您应该看到以下屏幕:

接下来,转到第二台服务器并单击“全部重新扫描”按钮。您应该看到以下屏幕:

单击添加以添加在第一台服务器上共享的备份文件夹。您应该看到以下屏幕:

现在,无论何时您在第一台服务器上的备份文件夹中创建或修改任何文件,它们都会自动同步到第二台服务器。
将 Nginx 配置为 Syncthing 的反向代理
您也可以将 Nginx 设置为反向代理,通过 80 端口访问 Syncthing 服务器。
首先,使用以下命令安装 Nginx 服务器:
apt-get install nginx -y
接下来,使用以下命令创建 Nginx 虚拟主机配置文件:
nano /etc/nginx/conf.d/syncthing.conf
添加以下行:
server {
listen 80;
server_name syncthing.example.com;
access_log /var/log/nginx/syncthing.access.log;
error_log /var/log/nginx/syncthing.error.log;
location / {
proxy_pass http://127.0.0.1:8384;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
保存并关闭文件,然后使用以下命令验证 Nginx 是否存在任何语法错误:
nginx -t
您应该得到以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
接下来,重新加载 Nginx 以应用更改。
systemctl reload nginx
您还可以使用以下命令检查 Nginx 的状态:
systemctl status nginx
您应该看到以下输出:
? nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-07-09 05:01:36 UTC; 21s ago
Docs: man:nginx(8)
Main PID: 3394 (nginx)
Tasks: 2 (limit: 2353)
Memory: 6.2M
CGroup: /system.slice/nginx.service
??3394 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
??3395 nginx: worker process
Jul 09 05:01:36 node1 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 09 05:01:36 node1 systemd[1]: Started A high performance web server and a reverse proxy server.
现在,您可以使用 URL http://syncthing.example.com 访问 Syncthing 服务器。
结论
恭喜!您已经在两台 Ubuntu 20.04 服务器上成功安装和配置了 Syncthing,并在两台服务器之间设置了同步。我希望本教程能帮助您备份您的服务器。