Syncthing 搭建个人同步网盘

为什么这么做?

我需要在我的两台电脑(宿舍和家里)之间进行同步。

文件互相传输也很方便,但是毕竟缺少版本的控制就乱的不行了。

而如果说单是两个文件夹之间要进行同步就需要使用版本控制工具的话,又实在太过硬核。

当然,在这个方面有很多的选择;比如说:坚果云、Dropbox。但是本着没事做就是折腾的准则,如果存在自己同步盘的需求的话,就可以尝试使用syncthing。

使用

其实使用 Syncthing 的过程非常简单,你所需要的就是在 Github上syncthing/syncthing项目最新的release地址 中下载你操作系统对应的版本,然后解压打开其中的 syncthing(.exe?) 文件即可。

然后你就能在浏览器中看到它网页: http://127.0.0.1:8384

界面的右上角有语言选项,可以选择中文(中国),这样大概就能比较轻松完成各种功能了。

同步的时候需要在某一方右上角设置 -> 显示设备ID;然后在另一台电脑右下角添加设备,并输入设备ID。一段时间后,就能看到有新的设备了。

至于文件夹同步有关的操作,感觉已经有一个简单易用的UI在那里了,所以我想可以略过了。

简单易用的UI

自建同步盘相较于原有的服务区别在于,你肯定需要某些东西一直开着。幸运的是,腾讯云那个一元一个月的服务器,现在也不知道该挂点什么东西在上面。于是就有了一个用于同步的Ubuntu服务器。

配置同步服务器

在服务器上完成 syncthing 的配置需要做一些不一样的工作。因为需要在网络中访问服务器界面以进入UI界面,所以还需要指定地址是 0.0.0.0

1
./syncthing-linux-amd64-v1.1.0/syncthing -gui-address="0.0.0.0:8384"

启动项覆盖警告

如果不希望每次都输这么长的指令,以及遇到上面这个警告,还是需要修改配置文件的。配置文件的存放位置包括:

1
2
3
4
$HOME/.config/syncthing
$HOME/Library/Application Support/Syncthing
%AppData%/Syncthing
%localappdata%/Syncthing

将配置文件上的<address>127.0.0.1:8384</address> 修改为 <address>0.0.0.0:8384</address>

当你从网络中第一次打开这个页面时,会出现提示让设置管理员账号密码,以保证不会被其他人访问。

此后我们还比较希望这个服务长期运行。那么可以使用systemd的方式来注册一个服务,来让它可以开机运行或者进行其他的操作。而 syncthing 的开发者甚至已经为我们写好了这样的服务了。我们只需要从中拿出就用即可。

1
2
3
4
mkdir ~/.config/systemd/user/ -p
cp ./syncthing-linux-amd64-v1.1.0/etc/linux-systemd/user/syncthing.service ~/.config/systemd/user/
sudo ln ./syncthing-linux-amd64-v1.1.0/syncthing /usr/bin/syncthing
systemctl --user start syncthing.service

如果需要开机启动

1
2
$ systemctl --user enable syncthing.service
Created symlink from /home/ubuntu/.config/systemd/user/default.target.wants/syncthing.service to /home/ubuntu/.config/systemd/user/syncthing.service.

其他还有更多启动 syncthing 的方式,可以参考这里