使用腾讯云搭建Syncthing来同步obsidian

注意:Syncthing无法解决用于PC和iOS间的同步。另外,因为Syncthing设置比较复杂,并且国内网络环境复杂,可以考虑使用微力( 微力同步官网 - 私有云盘 企业文件同步 团队文件共享协助工具 )替代Syncthing。

预警:本文所提及操作属于高阶内容,涉及服务器配置、docker技术、网络安全等等内容。我本人也不是很了解,只勉强达到“会用”的程度,对过程的表述和理解可能有偏差,仅提供一种同步的思路。本文涉及到购买建议,请三思后行。本文仅代表我个人通过相关步骤,实现了使用腾讯云搭建Syncthing来同步obsidian的效果,不代表在任何情况(例如内网等)都能实现,不代表数据能足够安全等等,本人对因本文造成的损失概不负责。

背景介绍

obsidian早鸟价已经结束,同步服务的价格恢复到10美元(按月付)/8美元(按年付),超出了很多ob使用者的预期。在此背景下,使用者开始寻求一些ob第三方同步的方法,我这里也简单归纳一下:

  • 坚果云:如果只是Win、MAC之间的同步,推荐使用。不推荐与[[FolderSync(同步软件)]]连用给手机端做同步,很多人都遇到问题,可能是因为坚果云对第三方API调用的限制。
  • icloud:如果你的设备设计iOS(iPhone或iPAD),这是推荐的第三方同步方法,另一种能同步iOS的方法是[[Working copy]],但难度很高,我没有尝试过,听说效果也不是很好。
  • OneDrive:似乎可以和[[FolderSync(同步软件)]]连用给手机端同步,这可能要问Bon。但可能要考虑onedrive的网络问题和权限问题。我也不推荐该方法。
  • Syncthing:一个开源的同步软件,本文主要使用的软件,也是[[shaosen]]、[[淳帅二代]]主推的软件,我本人也推荐使用此第三方软件,但对该软件的配置问题不是很懂(有问题请不要问我,我也不太清楚),大家可以去github上留言: https://github.com/syncthing/syncthing 。这软件现在已经有41.4K的加星(star)这是很惊人的数量,说明软件深得人心。

使用Syncthing同步有一个问题是,必须有一个设备保持24小时在线,才能保证数据一直是最新的(其实所有的同步都是这样,需要有一个服务24小时运行)。因此我想到要租一个服务器(24小时在线且联网的电脑)。我先咨询了腾讯云的云开发CloudBase,想要使用其来搭建Syncthing服务。但工程师说,云开发的机器只能搭配已经适配好的那几款软件,即使有一个github导入,也必须是导入那几个适配好的软件。因此,我认为的最简单的也是最便宜的方案无法成功。

但我也给内部人员提出了相应建议,希望能早日适配syncthing。

正文部分

购买服务器

今天刚好见到了双十一腾讯云在促销自家的服务器(这活动一年有几次,所以如果你不是在最近看到,可以等等优惠的价格),可以点击我的推广链接( 腾讯云11.11大促_腾讯云11.11优惠活动-腾讯云 )前往会场。在“爆品秒杀”一栏,可以找到一台2核4G的服务器,3年只要198(我买的是这个),下面其实还有一台1核2G的3年144,但不知道性能可不可以,但更便宜。如果在购买和使用中遇到问题,请联系腾讯云的工程师和售后人员,他们应该很乐意也有义务提供专业的协助。

点击购买后,镜像一栏选择docker,我无法截图了,因为这价格一人只能买一次。选错镜像也没关系,之后可以重置镜像,服务器不要选错就行。

宝塔面板的配置

购买后,到轻量应用服务器页面( 登录 - 腾讯云 ),上面的帮助文档可以选择“宝塔面板”的方便入门,点击“安装和配置宝塔 Linux 面板腾讯云专享版”( 轻量应用服务器 安装和配置宝塔 Linux 面板腾讯云专享版 - 最佳实践 - 文档中心 - 腾讯云 )先查看宝塔面板的配置文档,直接从文中“配置轻量应用服务器网络防火墙”一节开始看,安装文中的步骤操作。

点击“更多”-“管理”。

再点击“防火墙”-“添加规则”-创建两个规则,一个端口号是8888一个是8384(8888是宝塔的端口,8384是后面给syncthing预留的登陆端口),备注可不填写,其他选项不动。

之后的内容请根据“安装和配置宝塔 Linux 面板腾讯云专享版”( 轻量应用服务器 安装和配置宝塔 Linux 面板腾讯云专享版 - 最佳实践 - 文档中心 - 腾讯云 )的“配置宝塔 Linux 面板”操作。

登陆宝塔界面

配置好宝塔面板后,在浏览器输入http://你的公网IP地址:8888/tencentcloud,具体见“应用管理”一栏。

安装docker

点击宝塔页面左边的“软件商店”-检索“docker”-选择安装“Docker管理器 3.7”。

然后就会自动安装,等待安装结束。

参考“安装 Docker 并配置镜像加速源”( 轻量应用服务器 安装 Docker 并配置镜像加速源 - 最佳实践 - 文档中心 - 腾讯云 )一文,配置docker加速镜像。

但我是直接在桌面新建一个txt文件,输入以下代码,重命名为daemon.json,通过宝塔面包的“文件”,找到/etc/docker/这个地址,然后再将daemon.json上传。

{
"registry-mirrors": [
 "https://mirror.ccs.tencentyun.com"
]
}

通过docker安装Syncthing

在服务器的界面( 登录 - 腾讯云 )点击“登录”,进入到你服务器中开始输入代码(此步骤不唯一,但应该对新手最简单)。

之后会弹出一个黑色界面(类似命令提示符CMD),让你输入代码。

Docker的入门教程可以参考菜鸟出品的 Docker Hello World | 菜鸟教程

但我用不了那么多,我参考了“docker安装Syncthing,并配置数据同步备份” ( docker安装Syncthing,并配置数据同步备份_跳墙网 ),这篇与CSDN上一篇很像( docker安装Syncthing,并配置数据同步备份_王然而的博客-CSDN博客_docker syncthing ),但CSDN无法复制代码,我就选择了前者。

首先,先输入sudo docker来验证docker是否安装成功,如果下面出现下面的界面就是成功的(没有报错,然后出来了一堆文字)。这样就可以开始按照上文来安装syncthing。

根据上文的代码,并在前面加上sudo,以获取最高权限,否则在该用户无法安装。即输入下面的代码:
sudo docker run -d -p 8384:8384 -p 22000:22000 -v /users/syncthing:/var/syncthing syncthing/syncthing

等待安装结束,文中的8384,就是之前在防火墙添加的8384,如果此处修改,防火墙那里的设置也要修改。

在你的浏览器中输入http://你的公网IP地址:8384,进入syncthing。之后就按正常操作配置syncthing,这已经有很多人论述,不在本文介绍范围内。

6 个赞

感谢分享,终于搭建成功了 :grinning:

谢谢,搭建好了。
不知道为啥,我在docker里创建好后无法访问,最后在宿主机安装就可以,相同的端口……

还是希望作者能够出一起Syncthing的配置教程,想我这种非计算机专业的学生自己动手还是有点头发懵(●—●)。

我对Sync也不是很了解。目前网络上已经有许多Sync设置的教程,可以百度一下。
本文的创新点是指出利用腾讯云来建立自己的同步渠道。无论你云端的VPS是Linux或者Windows都可以参考其他的Sync教程来设置同步。

不好意思,之前在弄好同步后忘记回复你的信息了 :face_holding_back_tears:


你好,请问为什么在使用的时候,上面图片的文件同步不到手机端了呢?

folder marker missing( this indicates
potential data loss, search docs/forum to
get information about how to proceed)​
显示错误是这段文字。

image
论坛检索关键字就出来解决方案了。

感谢楼主的方案,实验了几天,效果非常好。
这里有我的一个教训,大家可以参考。
日常清理内存时,注意不要清理完空文件夹,在syncthing中,设置同步的文件夹里有个用来做标签的空文件夹,删除了就无法同步了。

我也经常莫名其妙丢失这文件夹,久病成良医 :rofl:

是不是没有进行端口映射?将容器的端口映射到宿主机上

是按照文里的命令创建的,8384可以ping通,就是浏览器无法访问。停了这个docker后也无法ping到了,应该不是端口占用。好在宿主机能用,所以问题也不大

我今天成功通过docker部署syncthing,如果你想再次尝试的话,可以联系我帮你看下具体问题在哪

突然想到一个问题。
为什么不用在服务器上直接用windows系统来操作Syncthing,这样不就省下来前面配置Linux系统的那些步骤了。
是用Linux系统来实现同步有什么优点吗?

因为便宜的服务器装不了(或说运行不好)windows,linux的资源可以省一些。另外,windows需要授权费。

原来如此,但是我看了一下的腾讯轻量应用服务器的续费,有点贵,就算能用一个账号买几个便宜的服务器但是毕竟不是长久之计啊,之后看能不能通过NAS来实现同步,续费太贵了,要510一年,有点贵啊。

你过几年可以换下一家云服务器,因为你不是建站,不需要一直都在同一家公司。
目前来看,云资源是越来越便宜的趋势。

Linux服务器最低可以买到1C1G的,运行Syncthing足够。但是1C1G是无法满足Windows的最低要求的

原来如此啊,学到了学到了,感谢各位大佬!

用服务器实现同步实在是太方便了,完全能实现时时修改,再次感谢大佬的方案!

直接在家里搭建了个群晖,用群晖自带的Drive套件同步文件,很香。