syncthing是一款开源同步工具,可以在多台设备之间同步文件,如果在自己的vps上安装,那么就可以实现私有的云同步了。

同步速度还是很快的,基本是一把文件拖进文件夹,就会看到同步开始进行,小文件的话,几秒钟就能在另一台手机上看到所同步的文件了。

不过访问服务器上的syncthing的方法是通过网址http://IP:8384,使用http明文方式传输不是很安全,就算使用自带的加密,chrome浏览器上也会显示红线划掉的~~https~~,逼死强迫症,而且有一个自有域名,怎能浪费。

syncthing配置还是很简单的,如果不需要在服务器上使用,而是只需要在手机和电脑之间同步文件,那就更简单了,直接安装客户端,配置同步设备和文件就可以了。服务器上的搭建教程可以参考:syncthing搭建教程:拥有自己的文件同步服务器,在设备间快速同步文件

域名解析

syncthing要使用域名访问的话,需要先设置域名解析,也就是给添加一个syncthing添加一个域名,例如我的域名是wenjinyu.me,这里以syncthing.wenjinyu.me举例。

了解如何设置域名解析,可以查看:设置域名解析:给域名设置一些实用有趣的二级域名

配置

配置解析之后,还需要对服务器进行配置,这里选择nginx作为web服务器,先添加一个配置文件:

1vim /etc/nginx/conf.d/syncthing.conf

nginx配置文件内容如下:

 1server {
 2    listen                443 ssl;
 3    server_name           cloud.wenjinyu.me;                     # 这里替换为自己的域名
 4    ssl_certificate       /etc/letsencrypt/live/cloud.wenjinyu.me/cert.pem;   # 替换为ssl密钥存放位置
 5    ssl_certificate_key   /etc/letsencrypt/live/cloud.wenjinyu.me/privkey.pem; # 同上
 6    ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
 7    ssl_ciphers           HIGH:!aNULL:!MD5;
 8
 9    location / {
10          proxy_set_header        Host localhost;
11          proxy_set_header        X-Real-IP $remote_addr;
12          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
13          proxy_set_header        X-Forwarded-Proto $scheme;
14
15          proxy_pass              http://127.0.0.1:8384/;
16
17          proxy_read_timeout      600s;
18          proxy_send_timeout      600s;
19
20          auth_basic "RESTRICTED ACCESS";                      # 加密
21          auth_basic_user_file /etc/nginx/.htpasswd;           # 加密文件位置
22    }
23}
24
25server {
26    listen          80;
27    server_name     cloud.wenjinyu.me;
28    return 301 https://cloud.wenjinyu.me;
29}

由于配置了域名,任何人都可以登录这个网站,所以需要使用加密,nginx自带加密,配置了上面的nginx配置文件之后,先不急着重载nginx,需要先生成加密密码:

1sudo sh -c "echo -n '用户名:' >> /etc/nginx/.htpasswd"
2sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

按下回车,按照提示输入两次密码即可。

需要注意的是,用户名后面有冒号,生成的密码文件位于/etc/nginx/.htpasswd,这个密码文件其他网站也可以使用。

此时重载nginx:

1nginx -s reload

然后使用域名打开网站,应该就能看到一个用户密码输入框,输入刚才设置的用户密码就可以登陆了。chrome的输入密码界面大概像这样子:

syncthing登录.png

如果密码输入错误或者不输入密码,那么就会变成404页面:

登录syncthing密码输入错误的404页面.png

打开syncthing后,如果出现这个提示

1Host check error

关掉使用加密连接到图形管理页面

syncthing取消使用加密连接到图形管理页面.png

然后使用浏览器访问域名就能打开了

此时还能通过http://IP:8384进行访问,可以修改配置文件:

  • 如果把端口设置成:0.0.0.0:8384,那么syncthing可以通过ip进行访问
  • 如果把端口设置成:127.0.0.1:8384,那么只能通过域名访问,因为这个时候只有通过nginx代理才能访问到127.0.0.1这个本地地址