Syncthing 可以很方便的实现文件共享和版本管理
当移动端想要访问最新文件时,有时会不方便启动其他设备来共享最新文件
这时有一台服务器作为中继服务器就会非常方便
每一个设备只需要提交,使得服务器端保存的是最新文件
客户端便只需要在使用时再从服务器获取最新文件就行

# 在 Ubuntu 服务器上安装 Syncthing

首先允许系统检查软件包的真实性,需要提供发行密钥。

sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg

添加 Syncthing 稳定版的 APT 仓库:

echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list

更新包列表并开始安装

sudo apt-get update
sudo apt-get install syncthing

# 配置服务器端允许远程访问

# 打开配置文件

配置文件被保存在 ~/.config/syncthing/config.xml 路径
使用以下命令编辑配置文件

vim ~/.config/syncthing/config.xml

# 查找 gui 部分

在文件中找到 <gui> 标签

<gui>
    ...
</gui>

# 修改监听地址

<gui> 标签内,找到 <address> 标签,并将 127.0.0.1:8384 修改成 0.0.0.0:8384

<gui>
    <address>0.0.0.0:8384</address>
    ...
</gui>

修改完后就可以通过 ip 加端口号访问了
在浏览器中输入 你服务器的公网ip:8384 访问服务器端的 Syncthing 的 GUI 界面
!!!记得为服务器端的 Syncthing-GUI 的远程连接配置身份验证(用户名加密码)

# Syncthing 配置开机自启

在服务器端配置开机自启
如果你没有移动 syncthing,文件地址应该为默认地址
如果已经移动,可以用 which syncthig 查找路径,修改为对应的就行

sudo vim /etc/systemd/system/syncthing.service

填入以下配置信息,并修改 User 为你的用户名

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
After=work.target
[Service]
User=<your_user_name>
ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuessExitStatus=3 4
RestartForceExitStatus=3 4
[Install]
WantedBy=multi-user.target

最后用以下命令开启

sudo systemctl daemon-reload
sudo systemctl enable syncthing.service
sudo systemctl start syncthing.service

配置后,在服务器重启后也能自动启动 syncthing 服务,确保服务器端文件为最新状态

# 最后

到这里,syncthing 在服务器上的配置就完成了
接下来在服务器端的 GUI 上连接自己的设备,并创建共享文件夹

# 一些问题

  1. 如果连接不到服务器端,检查客户端的软件有没有开启 NAT穿透 (没有公网 ip 就需要开启)
  2. 如果开启了 NAT 穿透,就 不需要 额外配置其他的 内网穿透
  3. 如果访问不了服务端 GUI,请确保你的服务器的防火墙允许 83834 端口通过
  4. 安卓端在接收共享文件夹时会出现无法写入,这是由于高版本安卓系统限制读写权限
    但在安卓端的 syncthing 创建共享文件夹时,可以授予 syncthing 进行读写操作