如何在Debian桌面/服务器上安装Syncthing

  • 技术文档
  • 2022.03.22
  • 浏览:105

本教程将向您展示如何在Debian上安装SyncthingSyncthing是一个免费的点对点连续文件同步程序,允许您跨多个设备同步文件,可用于Linux、BSD、macOS、Windows、Android和Solaris。

它是流行的Resilio Sync(以前称为BitTorrent Sync)应用程序的开源替代方案。在一台机器上创建、修改或删除文件将自动复制到其他设备。Syncthing不会将文件上传到Nextcloud这样的中央服务器,而是直接在设备之间交换数据。在设备之间传输时,所有数据都会使用TLS加密。

通过Deb官方存储库在Debian上安装Syncthing

使用curl下载GPG密钥,然后使用apt密钥导入密钥。

sudo apt get安装curl-shttps://syncthing.net/release-key.txt| sudo apt按键添加-

如果在终端中看到OK,则表示GPG密钥已成功导入。然后使用以下命令添加正式的deb存储库。

回声“黛布”https://apt.syncthing.net/syncthing stable“| sudo tee/etc/apt/sources.list.d/syncthing.list

由于该存储库使用https,我们需要安装apt transport https包,以便apt包管理器可以与该存储库建立https连接。

sudo apt get安装apt传输https

更新本地包索引并在Debian上安装syncthing。

sudo-apt-get-update sudo-apt-get-install-syncthing

使用Systemd将Syncthing设置为系统服务

官方Syncthing deb包附带所需的systemd服务文件。在/lib/systemd/system/directory下,您将找到一个[email ;protected]文件。通过运行以下命令,使syncthing在启动时自动启动。用实际用户名替换用户名。

sudo systemctl启用[电子邮件和#160;受保护]用户名。服务

上述命令将创建指向[email ;protected]文件的符号链接。

从/etc/systemd/system/multi-user创建符号链接。目标想要/[email ;protected]到/lib/systemd/system/[email ;protected]

现在,我们可以使用以下命令启动Syncthing服务。

sudo systemctl start[电子邮件和#160;受保护]用户名。服务

检查状态

systemctl状态[电子邮件和#160;受保护]用户名。服务

输出:

 

提示:如果上述命令没有立即退出,请按Q键重新控制终端。

我们可以看到Syncthing autostart已启用并且正在运行。

syncthing systemd服务在/home/username/下创建配置文件。config/syncthing/和一个文件夹/home/username/Sync作为默认的同步文件夹。主配置文件是/home/username/。config/syncthing/config。xml。

在其他操作系统上安装Syncthing

转到Syncthing下载页面,在Windows、macOS、BSD、Android等其他操作系统上安装Syncthing。

打开防火墙中的端口22000

Syncthing使用端口22000与对等方通信。如果您的计算机或服务器启用了UFW防火墙,则需要使用以下命令允许端口22000。

sudo ufw允许22000/tcp

访问Debian Syncthing Web界面

默认情况下,Syncthing服务监听127.0.0.1:8384。现在,在Web浏览器的地址栏中,键入127.0.0.1:8384以访问Syncthing Web界面。您可以添加其他同步设备并与它们共享文件夹。

 

如果在远程Debian服务器上安装Syncthing,则可以通过编辑配置文件来启用对Syncthing web界面的远程访问。

nano/home/username/。config/syncthing/config。xml

找到下面两行。

<gui enabled=“true”tls=“false”debug=“false”&gt&书信电报;地址>127.0.0.1:8384&lt/地址>

将tls=“false”更改为tls=“true”,这样HTTP通信将被加密。并将127.0.0.1更改为Debian服务器的公共IP地址。保存并关闭文件。重新启动Syncthing以使更改生效。

sudo systemctl start[电子邮件和#160;受保护]用户名。服务

现在在web浏览器中键入服务器ip地址:8384以访问Syncthing web界面。显然,您需要使用Debian服务器的真实IP地址。您将被要求设置用户名和密码以保护Syncthing web界面。

您还可以使用Nginx或Apache设置反向代理以访问web用户界面,本教程稍后将对此进行解释。

开始在设备之间同步文件

一旦有两台设备运行Syncthing,我们就可以开始在它们之间同步文件了。

在Syncthing web界面中,单击操作>在右上角显示ID。您将看到设备ID,它是一长串字母和数字。QR码也是设备ID,用于在智能手机上配置Syncthing。

 

复制设备ID,然后打开第二台设备的Syncthing Web界面,单击右下角的添加远程设备。然后粘贴设备ID并为设备命名。点击保存按钮。

 

现在,第二台设备将尝试连接到第一台设备。在第一台设备上刷新Web界面,您将看到以下消息。单击“添加设备”将第二个设备添加到第一个设备的设备列表中。

 

现在,这两个设备已连接。

Web界面左侧的一个窗格是默认的同步文件夹(/home/username/sync)。单击“添加文件夹”按钮添加新文件夹。为此文件夹指定一个描述性标签,并设置文件夹路径。

 

Syncthing作为您自己的用户帐户运行,因此您需要对共享文件夹具有写入权限。如果在共享文件夹时看到以下错误消息,则表示您没有该文件夹的写入权限。

2020-06-21 20:05:49:无法创建文件夹标记:mkdir。stfolder:只读文件系统

您可以使用setfacl授予写入权限。

sudo apt安装acl
sudo setfacl-R-mu:username:rx/folder/path/

在共享选项卡中,选择其他同步设备。

 

在“高级”选项卡中,可以选择文件夹类型、重新扫描间隔等。

 

单击“保存”按钮开始同步。另一台设备的Web界面上将显示一条消息。单击“添加”以接收文件。

syncthing add share folder

现在这两台设备正在同步文件。在右边,你可以看到下载速率、上传速率、本地文件夹大小等。

syncthing check sycning progress

设置反向代理

由于它监听127.0.0.1:8384,Syncthing Web界面仅对来自同一台计算机的连接可用。为了能够从远程计算机访问Syncthing Web界面,我们可以使用Nginx或Apache为Syncthing设置反向代理。

Nginx

Nginx是一个非常流行的web服务器和反向代理。如果您更喜欢使用Nginx,请运行以下命令进行安装。

sudo apt安装nginx

然后创建一个服务器配置文件。

sudo nano/etc/nginx/conf.d/syncthing。形态

将以下内容添加到此文件。更换同步器。实例com与您首选的域名。您还应该为此子域添加DNS a记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。

服务器{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_passhttp://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。

sudo nginx-t sudo systemctl reload nginx

将域名指向Debian的IP地址后,在浏览器地址栏中键入域名,就会看到Syncthing Web界面。

syncthing web interface

如果浏览器无法连接到Syncthing web界面,可能需要在防火墙中打开端口80。例如,如果使用UFW,则运行以下命令。

sudo ufw允许80/tcp

阿帕奇

Apache是众所周知的web服务器,也可以用作反向代理。如果您更喜欢Apache而不是Nginx,请使用以下软件安装:

sudo apt安装apache2

启动Apache并启用自动启动。

sudo systemctl启动apache2 sudo systemctl启用apache2

要使用Apache作为反向代理,我们需要启用代理模块和头模块。

sudo a2enmod代理u http头代理u wstunnel

现在为Syncthing创建一个虚拟主机文件。

sudo nano/etc/apache2/网站可用/同步。形态

将以下行复制并粘贴到文件中。更换同步器。实例使用你的真实域名。您还应该为此子域添加DNS a记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。

<虚拟主机*:80>服务器名同步。实例com错误文件404/404。html ProxyPass/http://127.0.0.1:8384/ProxyPassReverse/http://127.0.0.1:8384/ErrorLog${APACHE_LOG_DIR}/syncthing_错误。log CustomLog${APACHE_log_DIR}/syncthing_访问。日志合并&lt/VirtualHost>

保存并关闭文件。然后启用这个虚拟主机。

sudo是一个敏感的东西。形态

重启Apache

sudo systemctl重启apache2

现在,您可以通过syncthing访问Web UI。实例通用域名格式。

如果浏览器无法连接到Syncthing web界面,可能需要在防火墙中打开端口80。例如,如果使用UFW,则运行以下命令。

sudo ufw允许80/tcp

使用HTTPS保护Syncthing Web UI

为了在通过域名访问Syncthing web UI时加密HTTP流量,我们可以通过安装Let’s encrypt颁发的免费TLS证书来启用HTTPS。首先,打开防火墙中的端口443。

sudo ufw允许443/tcp

然后运行以下命令安装Let's Encrypt client(certbot)。

sudo apt安装certbot

如果您使用Nginx,那么您还需要安装Certbot Nginx插件。

sudo apt安装python3 certbot nginx

接下来,运行以下命令获取并安装TLS证书。

sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email ;protected]-d syncthing。实例通用域名格式

如果使用Apache,请安装Certbot Apache插件。

sudo apt安装python3 certbot apache

并运行此命令以获取并安装TLS证书。

sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email ;protected]-d syncthing。实例通用域名格式

哪里

  • --nginx:使用nginx插件。
  • --apache:使用apache插件。
  • --同意:同意服务条款。
  • --重定向:通过301重定向强制HTTPS。
  • --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。
  • --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。

现在应获得证书并自动安装。
syncthing ubuntu https certbot
刷新Syncthing Web GUI,您会发现HTTP连接自动重定向到HTTPS安全连接。

启用用户身份验证

默认情况下,任何人都可以在设置反向代理后访问Syncthing web界面。我们可以启用用户身份验证来限制访问。单击右上角的操作按钮,然后选择设置->桂。

install syncthing on Debian 8

在GUI身份验证用户字段中输入用户名,在GUI身份验证密码字段中输入密码。然后保存你的设置。

syncthing gui user authentication

请注意,您不需要在Use HTTPS for GUI框上打勾,这使Syncthing能够使用自签名证书。我们已经在Apache/Nginx中安装了一个受主流Web浏览器信任的有效证书。

保存更改后,请重新启动Syncthing systemd服务,否则在重新加载页面时可能会看到502坏网关错误。

sudo systemctl restart[email ;protected]用户名。服务

现在使用新用户名和密码登录Syncthing Web界面。

仅发送&只接收文件夹

在Syncthing中共享文件夹时,可以转到“高级”选项卡,从三种文件夹类型中选择一种:

  • 发送&接收(默认)
  • 只发送
  • 只收

您可能希望选择仅发送或仅接收。例如,如果您有三台计算机:A、B和C,并且希望将计算机A和B上的文件夹聚合到计算机C上的单个文件夹中。则可以将文件夹类型设置为仅在计算机C上接收。这样,计算机C将所有文件都放在单个文件夹中。计算机A和B仍保留原始文件。不多也不少。

syncthing folder type

当您在计算机C上使用相同的文件夹路径时,Syncthing可能会警告您“此路径是现有文件夹的子目录”。您可以忽略此警告,因为您有一个只接收文件夹。不会删除文件夹中的现有文件。

通过中继服务器同步

如果两个Syncthing实例无法相互连接,则Syncthing将尝试使用中继服务器传输文件。

syncthing

它们无法相互连接的一个常见原因是其中一个位于NAT设备后面,并且没有配置端口转发。配置端口转发后,可以禁用中继服务器。下面是方法。单击编辑按钮并选择高级选项卡,将地址从动态更改为tcp://ip-address:22000.当然,你需要使用你真正的IP地址。

syncthing disable relay servers

故障排除

如果Syncthing实例无法相互连接,可以使用ss(socket stats)实用程序检查Syncthing是否正在TCP端口22000上侦听。

sudo ss-lnpt | grep syncthing

从下面的屏幕截图可以看到,我的Syncthing正在监听端口8384(web界面)和22000(对等连接)。

debian syncthing listen tcp port 22000

如果没有,您可以编辑配置文件。

纳米~/。config/syncthing/config。xml

找到下面这行。

<listenAddress>违约&lt/listenAddress>

将默认值更改为tcp://your-IP-address.

&lt;listenAddress&gt;tcp://12.34.56.78</listenAddress&gt;

保存并关闭文件。然后重启同步。

sudo systemctl restart[email ;protected]用户名。服务

错过了比赛。stfoler文件

这个Syncthing需要stfoler文件才能工作。这是一个空文件。你不需要添加任何内容。如果。同步文件夹下缺少stfolder文件,则同步将停止。您可以创建以下Cron作业来自动创建文件。

@每小时触摸/path/to/sync/folder/。stfolder

如果文件丢失,触摸命令将创建该文件。如果文件已经存在,它将更新文件时间戳。

收尾

我希望本教程能帮助您在Debian上安装和使用Syncthing。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?