自己动手组建可远程实时同步的obsidian

Obsidian&Zettelkasten&LYT系列文章的总目录

      前几篇我们介绍了obsidian的具体用法,这一篇我们说说配套的一些网络配置,先说一下我的使用场景:日常办公我用的是一台macbookpro笔记本作为生产力的主力机,家里有一台高配的台式机安装win10操作系统,用来处理各种视频类剪辑任务(当然少不了玩玩游戏大作),还有一个群晖NAS设备用来进行数据备份和提供各类远程服务。每台设备上都安装了obsidian,obsidian的笔记和卡片数据需要在多个设备间实时同步,确保思路不中断,实时在线。如果在家里,这些设备都在家里的无线局域网内,实现实时互通没有问题,但是如果出差或者去单位上班,就无法进行数据同步。所以我的要求就是无论身在哪里,随时随地各个设备的数据能够做到实时同步,无论obsidian在哪台设备打开使用,第一时间看到的都是最新的数据。

      经过几天的折腾,最终搞定了这个诉求。我想这也是很多同学日常使用obsidian会遇到的问题,所以单独写一篇来简单介绍一下,类似的思路,可以解决大部分数据同步的诉求,不仅仅是obsidian,所以这也是一篇比较实用的教程了。

远程访问数据

      要解决obsidian异地远程数据同步的问题,需要几个步骤:

      1、开通外网IP

      2、申请域名,打开域名解析服务

      3、打开DDNS动态域名解析,确保随时随地在互联网可以访问到远端设备

      4、配置obsidian,使用syncthing实现远程实时同步

      上述步骤解决了两个核心问题,第一,拥有一个全球可随时访问的属于自己的域名。第二,通过域名访问到设备数据的同步机制可以随意配置,满足不同场景下自己对数据服务和数据备份的诉求。

      闲话不说,我们开始上干货。

      1、开通外网IP

      IP类似家里的地址门牌、个人的身份证,是在互联网上找到某台设备的唯一标识。由于IP资源是有限的,所以一般情况下,电脑使用的都是某个局域网内自动分配的内网IP,这个内网IP无法通过互联网直接访问。所以我们首先需要申请一个外网IP。现在大多数家庭使用的是几大运营商提供的宽带服务,默认都是不打开外网IP的权限,需要自己打电话向运营商申请,开通起来其实很方便,分分钟的事儿。需要注意的是,外网IP分为静态IP和动态IP两种,一般静态IP的租用价格很高,运营商给家庭开通的都是动态IP,动态IP在每次路由器重启时都会发生变化。

      如何查看自己的IP是不是外网IP呢,办法是,在www.ipip.net查询一下,如果显示是动态IP,再拿这个IP和你的电脑的IP配置里的默认网关的IP比较下,如果一致就说明这个动态IP申请成功了。

外网IP确认

      2、申请域名,开通域名解析服务

      接下来,我们需要拥有一个域名,域名就是平时大家上网在浏览器内输入的网址,相当于我们在互联网上的名字,域名通过域名解析(DNS)后,和我们第一步申请的外网IP就绑定在一起了。比如申请的域名是www.mysite.com,当我们在浏览器里输入这个网址时,路由器会自动把网址转换成对应的外网IP,进行寻址路由,最终在互联网上找到这台设备。外网IP是一个动态IP,所以每当动态IP发生变化的时候,需要将我们申请的域名和最新的IP地址重新绑定,这个事肯定不能手动去完成,需要动态的去解析更新,这个就是DDNS(动态域名解析)。所以我们申请好域名,开通域名解析之后,还要做一个动作就是开通DDNS服务,完成动态域名解析。

      看看具体操作:

      (1)申请域名。这个很常见,有很多域名服务商提供域名,建议花钱购买一个属于自己的域名,也不算贵,一般的域名价格每年几块到几十块不等,后缀都是一些不常用的。如果要一个常用后缀的域名,大概要每年70-90块钱。我在DNSPOD上申请了一个“.com”后缀的域名,一年70块钱。一般域名购买还是买一些大厂的域名要可靠一些,主要是后续的在线支持,遇到问题,大厂的技术支持要给力的多。这次我买的域名和域名解析都是腾讯云提供的,客服小姐姐很热心,半夜问问题都有耐心的回复。实在搞不定的,还可以QQ远程支持帮忙搞定。比如我申请的一级域名是mysite.com。

域名申请与域名解析DNS

      (2)配置域名。域名配置注意两个事,一个是搞清楚一级域名和二级域名的关系,这个我之前一直没搞明白,耽误了不少事。另一个是A记录类型的配置方法。

      我们以163.com的网站为例:163.com这个是一级域名,一级域名的格式类似XXX.com的格式,“.com"还可以被换成其他不同的后缀,比如“.cn”、“.gov”等等。

      www.163.com 这个是一个二级域名,它和mail.163.com类似都是一个二级域名,也就是说,在一级域名基础上每增加一个“.”的内容,就多出一级域名,比如bmw.auto.163.com就是一个三级域名,以此类推。

域名配置

      A记录类型的配置,根据所选域名服务商的不同,略有差异。不过基本步骤都一样。以DNSPOD提供的域名服务为例:

      添加一条记录,在主机记录填写子域名的名称,比如我家里的群晖主机未来通过域名访问我希望是nas.mysite.com,是一个二级域名,那么主机记录这里就写nas。记录类型选择A类型,线路默认,记录值这里填写你申请的外网IP地址。这里先这么填,后面打开了DDNS动态域名解析服务后,这个IP地址会随着动态IP的变化而自动改变。TTL填写600,点击添加,过几秒后,服务显示正常。

      域名配置是否成功,可以通过命令来检测:

      使用dos控制台,输入“ping www.mysite.com” 如果返回不超时,则说明DNS解析正常。也可以通过输入“nslookup www.mysite.com” 命令来看域名解析的情况。

      (3)设置动态域名DDNS。这一块花费的时间比较多,要解决多个问题。还以腾讯云提供的DDNS服务为例。要配置好DDNS,需要做几个动作:

      第一,把DDNS服务申请打开。

DDNS的Token和密钥申请

      先在DNSPOD的账号管理中心的密钥管理里申请一对TokenID和Token密钥,然后在使用dos控制台(win10是在运行窗口里输入:cmd打开控制台),输入如下指令:

curl -X POST https://dnsapi.cn/Record.List -d "login_token=XXXX,XXXXXXXXXXXXXXXX&format=json&domain=mysite.com&sub_domain=nas&record_type=A&offset=0&length=3"

二级域名ID获取命令

      “domain=”这里写你申请的一级域名,我写的mysite.com;“sub_domain=”这里写你申请的二级域名,我的是nas。

      返回的结果,需要解析一下,把返回的json数据,在https://www.json.cn网站进行在线解析,找到nas二级域名对应的ID为:71XXX3。

用jason解析工具找二级域名ID

      有了二级域名的ID后,需要更新动态域名,在命令行中输入以下命令:

curl -X POST https://dnsapi.cn/Record.Ddns -d “login_token=XXXX,XXXXXXXXXXXXXXXX&format=json&domain=mysite.com&record_id=71XXX3&record_line_id=0&sub_domain=nas”

更新二级域名的DDNS

      返回的结果,同样需要解析,如果“status=1”说明DDNS设置成功。

      查看DDNS是否设置成功,可以重启一下路由器,如果DNSPOD的里的域名对应的IP地址自动发生变化,就说明设置成功。

      第二,把家里连接光猫的WIFI路由器的端口转发NAT打开。现在一般家里的宽带都是光纤入户,用的是光猫,然后WIFI无线路由器连接到光猫上进行自动配置实现上网。运营商光猫的路由功能不强,所以需要把后续的路由器配置从光猫改到WIFI路由器上配置,因此第一步先让运营商客服修改下光猫的配置,把自动联网改为拨号上网,然后登陆无线wifi后台,通过PPPOE拨号上网的方式重新配置WIFI路由器上网。配置好后,就可以通过无线路由器来进行后续的DDNS和NAT转换配置了。

      以我的wifi路由器华为Q2为例:

      不同路由器厂商对DNS服务商的支持程度不一样,华为Q2的路由器不支持DNSPOD提供的域名,所以配置DDNS我只能另辟蹊径,通过群辉NAS来实现DDNS。

      这个也很容易,登陆到群晖NAS的操作系统界面,在控制面板中选择外部访问,

在群晖NAS上配置DDNS

      接着配置WIFI路由器的NAT映射规则:

      以NAS远程访问为例,需要内外部打开5000端口,所以增加一条NAT端口映射记录:

在华为Q2路由器上设置NAT端口映射规则

      NAT端口映射的作用就是在某些端口被禁用的情况下,通过端口映射规则实现正常的应用访问。所以后面需要远程访问的应用,如果端口有限制都可以通过端口映射的方式来解决。

      配置好这些,就剩下最后一步了,obsidian的数据同步。

      4、配置obsidian,使用syncthing实现远程实时同步

      其实obsidian不需要额外的配置,因为他的所有文件就是一堆md文本,我们要做的就是在不同的设备之间实时同步这些文本。这里需要用到一个软件syncthing来实现内网同步和远程同步。

      syncthing是一个免费的同步软件,下载地址:https://syncthing.net/downloads/

      在MacBook Pro的MACOS、PC的win10和NAS的Linux上分别安装上syncthing,启动syncthing后,浏览器会自动弹出后台界面,这里Linux上的安装稍微麻烦一些,可以在PC的win10操作系统上通过ssh的方式登录到NAS的Linux的console控制台进行安装和配置。ssh的软件可以使用putty(https://www.putty.org/),很好用。

      使用putty的ssh登录到NAS的linux控制台后,输入命令:

# 下载syncthing,注意查看版本;

wget https://github.com/syncthing/syncthing/releases/download/v1.3.1/syncthing-linux-amd64-v1.3.1.tar.gz

# 解压

tar xzvf syncthing-linux-amd64-v1.3.1.tar.gz

# 进入解压文件夹

cd syncthing-linux-amd64-v1.3.1

# 将syncthing二进制程序复制到/usr/local/bin目录,然后就可以通过“syncthing”命令运行syncthing了

cp syncthing /usr/local/bin

# 运行syncthing

syncthing

      需要注意的地方就是,如果要实现远程访问NAS上的syncthing,需要在控制台下通过vim修改syncthing的配置文件,把原来的IP地址127.0.0.1改为0.0.0.0,这样就可以支持远程访问了。

      配置文件在这个文件里:“.config/syncthing/config.xml”,用vim打开进行编辑就可以了。

      关于syncthing的配置可以参考这篇文章:[Syncthing来同步服务器数据到本地](https://www.emperinter.info/2019/11/14/syncthing/)

      最终几个平台上的syncthing的配置如下:

MAC端syncthing的配置
群晖NAS端的syncthing配置
PC端的syncthing配置

      经过上述操作,现在可以远程访问NAS、远程同步obsidian,关键是以后可以自己做网盘,自己做各种策略来管理散布在不同地方的文件和数据,效率提升很多,也很方便。希望这篇文章对大家有用。

你可能感兴趣的:(自己动手组建可远程实时同步的obsidian)