更优的Obsidian云同步方案

前言

优化此前提到的 Obsidian 同步服务 LiveSync 的使用体验。

使用 1 Panel 快速搭建服务

服务器面板是一类可以通过图形化界面管理你的云服务器的工具。我目前使用的是 1Panel。1 Panel 是一个开源、免费(社区版)的面板,它基于 Docker 来部署管理其他应用。官方有清楚的安装教程,由于开发公司 飞致云 是中国公司,既不会在安装面板时碰上的网络问题,安装过程也有清楚的中文 CLI 信息输出,因此基本不存在安装难度。下面,我们以 v 1.10.21-lts 版为例进行讲解。

注意在云服务器的防火墙处放开对应的端口。

首先配置网络。安装后,打开浏览器登录管理界面,在 容器→配置→镜像加速 界面添加镜像网址。镜像源毕竟可能会失效,这里推荐以最新搜索和测试结果为准。1 Panel 也在文档中提供了一个镜像地址配置 - 1Panel 文档https://docker.1panel.live

随后点击 应用商店 一栏,直接搜索"LiveSync"进行安装。安装前面板提示的那些配置向看着来即可。一旦看到 已启动 的字样,那么说明已经安装成功了,参考此前的文章去配置 CouchDB 和 Obsidian 上的 LiveSync 插件吧。

注意在云服务器的防火墙处放开对应的端口。

此后都可以通过 1 Panel 面板进行升级和启停等管理。

使用反向代理简化迁移

不久前我的老服务器到期了,于是经历了一次小小的迁移。由于是腾讯云到腾讯云,整个过程只是制作镜像安装镜像,并不难。但是,云服务器对应的 IP 地址发生了变化。如果 LiveSync 的远端 URI 我们写的都是 IP 地址的话,那么每次迁移就得一台一台设备地改掉 URI。通过反向代理我们可以解决这个问题。

反向代理,从定义上来说,就是客户端只访问到代理服务器,而不访问真正提供资源的服务器(们),由代理服务器去代办"找资源服务器要资源"这件事。由于人们把“代理客户端进行网络请求”叫做 正向代理,那么 代理服务端响应网络请求 自然就是 反向代理。具体到这件事儿上,其实我们就是配一个代理服务,将一个网址反向代理到我们的实际 IP 端口上去。

首先当然需要有个域名,给它配置 DNS 解析将一个域名指向服务器的公网 IP 地址。

例如,假设我的域名为 example.com, 那么我的 Obsidian 同步服务域名可以设置为 obsidian.example.com

然后在 1 Panel 面板中,在 应用商店 中安装 OpenResty,这是一个基于 Nginx 的 Web 应用服务器。

安装成功后,在 网站网站 下选择 新键网站反向代理主域名 (和 代号)填写前面设置的域名(如 obsidian.example.com)。代理地址 为本地地址+ CouchDB 的访问端口(如 127.0.0.1:5984)。

最后,将 LiveSync 中 URI 配置成这个域名。

此后,LiveSync 访问同步服务器资源将会是如下的步骤:

  1. 向 DNS 请求解析域名,得到到代理服务器地址(如 1.1.1.1:80);
  2. 代理服务器被访问后,把请求扔给同一台机器上的同步服务器 CouchDB(对代理服务器来说,是 127.0.0.1:5984 ,对客户端来说是 1.1.1.1:5984);
  3. CouchDB 进行同步。

这样,LiveSync 就不再关心服务器的地址了。即使同步服务运行的服务器地址发生了变化,无论我们有几台设备,我们只需要在 DNS 解析处进行一次配置就可以完成修改。

🎯:我们还可以通过 Let's Encrypt 获取加密证书,进一步提升客户端和服务端沟通时的安全性。在 1 Panel 的 网站设置HTTPS 中可以设置。不过需要注意开启后,LiveSync 的 URI 前也需要写明 https://your.website.domain