前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造跨平台的免费私有知识库!一文搞定为Obsidian笔记软件搭建私有云同步服务器

打造跨平台的免费私有知识库!一文搞定为Obsidian笔记软件搭建私有云同步服务器

原创
作者头像
raydiodroid
发布2024-03-23 21:33:16
8140
发布2024-03-23 21:33:16
举报
文章被收录于专栏:玩转Lighthouse玩转Lighthouse

你是否曾使用过Notion,但却因离线无法查看而抓狂?

你是否曾使用过印象笔记,但却对满屏广告感到生理不适?

你是否曾使用过OneNote,但却被卡顿、结构臃肿和同步错误折腾到痛不欲生?

本文将详细介绍如何使用Self-hosted LiveSync插件搭建私有的Obsidian云同步服务器,来实现一个免费的、私有的、跨平台的、允许多端即时同步的强力笔记软件。

引言:为什么选择使用Obsidian?

Obsidian是什么

Obsidian 是一款高度灵活且功能丰富的Markdown语法笔记软件,它最核心的功能是双向链接和关系图谱,可以用点线图谱显示笔记之间的关联,还有标签、元数据等分类筛选功能,这使得它成为知识管理和个人知识库构建的理想工具。 笔者选用Obsidian的原因主要有三点:

免费、功能很丰富

个人使用Obsidian是完全免费的,可以不注册任何账号,也不用购买任何许可证。它的本体十分轻量简洁,也几乎无需任何配置,开箱即用。

同时,Obsidian又拥有一个非常活跃的开源社区,支持大量社区插件,且在软件中集成了插件市场。因此,用户可以根据需求自由地自定义Obsidian的功能和外观,将其打造为一个完美适配自己使用习惯的笔记利器。本文将介绍的Self-hosted LiveSync插件就是一款优秀的社区插件。

通用、多平台支持

Obsidian 使用通用的Markdown格式存储文件,其创建的文件可以使用任何一个支持.md的文本编辑器打开,加粗、代码块等都可以正确显示。并且,Obsidian本体以及大部分社区插件都支持在Windows、Linux、Android、macOS、iOS等多种设备和操作系统上运行,体验统一、多平台兼容性良好。

本地、数据可控制

使用Obsidian时,产生的所有资料全部存储在本地,用户拥有对自己的数据的完全控制权和隐私,而不像Notion、印象笔记等以云为中心的笔记软件将数据存在云端,存在隐私问题、无法导出非加密内容、或者甚至强制要求在线使用。

多端编辑及即时同步笔记的方式

前面提到,Obsidian的文件都存储在设备本地,那么如何在多个不同设备之间同步笔记的修改内容呢?

Obsidian 提供了官方的云同步服务,称为 Obsidian Sync。这项服务可以用户在多个不同平台设备之间实时同步笔记内容。由于这是官方提供的同步服务,因此它可以与 Obsidian 的其他功能(如链接、附件、插件等)完美集成,设置和使用也很方便。 但它也存在两个致命缺陷:

付费服务:Obsidian Sync是一项付费服务。虽然使用Obsidian本身无需付费,但将笔记资料多端同步的服务以及将笔记作为博客网站发布的服务都需要订阅。即使其价格相对合理,笔者也并不觉得值得为这些服务付费。

数据泄露:使用官方同步服务意味着需要将笔记上传到官方的服务器,个人的数据将不再私有、本地化,使用体验上就与Notion、印象笔记等其他笔记软件类似了。那我为什么不直接用Notion?

幸运的是,Obsidian的开源社区治理十分优秀,我们可以使用Self-Hosted LiveSync这一社区插件作为官方同步服务几乎完美的平替。

Self-Hosted LiveSync

Self-Hosted LiveSync 是一款由日本开发者@vorotamoroz 开发及维护的Obsidian 社区插件,它让用户可以通过自己搭建的云同步服务器实现笔记实时同步(效果参见题图),从而成为官方同步服务几乎完美的平替,并且还可以实现数据和隐私的完全自主控制。它采取增量同步模式,并且支持版本控制,在遇到不同设备的内容冲突时还可以可视化选择保留其中某一个设备的内容或对二者进行合并。

这个插件也存在一些缺点:它在同步配置文件、插件及其他各类隐藏文件时兼容性较差,报错log有时语焉不详,需要细心检查配置情况,不如官方的Obsidian Sync服务不用费心折腾。但瑕不掩瑜,它仍旧是最适合长期使用、无感体验的Obsidian云同步插件,在Github上已揽星3k+。

下面将介绍如何搭建Self-Hosted LiveSync的服务端及配置客户端。即使读者之前从未接触过云服务器相关知识,按照步骤完成这些工作也轻而易举。

服务端配置

我们需要拥有一台基于Linux的云服务器,在云服务器上安装docker环境,然后在docker中安装CouchDB数据库,即可完成基本的服务端配置。如果读者拥有一台可运行docker的NAS,也可以直接利用NAS作为服务端,无需额外购买云服务器,但获取公网ip等问题则需要自行解决,此处不作介绍。

配置云服务器

购买云服务器

同步服务十分轻量,几乎不占用多少服务器性能,在任意一家云服务商购买一台最低配的云服务器就可以满足需求。这里使用腾讯云自家的Lighthouse轻量服务器作为示例。

【应用创建方式】可以使用任意Linux发行版本,也可以直接使用腾讯云做好的docker环境,我们只需要能够运行docker即可。

【地域】方面,则强烈建议选择中国大陆以外的地域,如新加坡、东京等,一方面是性价比更优,另一方面则是位于中国大陆的服务器需要备案,过程费时费力且令人反感,切勿贪图一点点延时优化而导致悔恨终生。

云服务器购买完成后即可使用SSH登入,这里我们可以直接使用腾讯云OrcaTerm。如果此前选择的是没有安装docker的纯净操作系统,需要在登入云服务器后自行安装。

以ubuntu系统的安装命令为例,完整复制下列命令并输入终端即可, 也可以自行前往Docker官网(Install Docker Engine on Ubuntu | Docker Docs)获取不同系统的安装方式。

代码语言:javascript
复制
# Set up Docker's apt repository
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \ 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Install the latest version:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Verify that the Docker Engine installation is successful by running the `hello-world` image:

sudo docker run hello-world

看到提示“Hello from Docker"则表示docker已经安装完成。

放通端口

购买完成后,还要在轻量的防火墙界面放通你预期留给CouchDB使用的端口,可以使用默认的5984,也可以使用任意一个高位端口以增强安全性。

配置https加密

移动端的Obsidian不支持不安全的http方式通信,因此如果希望在手机上使用Self-hosted LiveSync,则需要配置https加密,具体方式和流程可参考腾讯云官方教程文档。

轻量应用服务器 为网站设置 HTTPS-操作指南-文档中心-腾讯云

为服务器开启https,部署加密证书需要购买一个域名,域名也可以在腾讯云购买,前往DNSPod选购一个心仪的域名即可。

域名注册_免费智能DNS_域名交易_域名购买申请 - DNSPod - 腾讯云官网

笔者的服务器是ubuntu系统,选择的是nginx反代方式部署证书。注意这种方式需要再指定一个反代端口,并且记得将这个端口在防火墙放行。

SSL 证书 Nginx 服务器 SSL 证书安装部署-证书安装-文档中心-腾讯云

配置CouchDB

现在我们需要配置Self-hosted LiveSync?依赖的CouchDB数据库。这个数据库可以开箱即用,无需了解其具体原理。

首先我们需要创建一个基础配置文件。新建一个txt,将以下代码复制进去,然后将其改名为local.ini,就完成了配置文件创建。之后将其复制到你指定的数据存储位置(例如/opt/couchdb/) 即可。

代码语言:javascript
复制
[couchdb]
single_node=true

[chttpd]
require_valid_user = true

[chttpd_auth]
require_valid_user = true
authentication_redirect = /_utils/session.html

[httpd]
WWW-Authenticate = Basic realm="couchdb"
enable_cors = true

[cors]
origins = app://obsidian.md,capacitor://localhost,http://localhost
credentials = true
headers = accept, authorization, content-type, origin, referer
methods = GET, PUT, POST, HEAD, DELETE
max_age = 3600

配置文件创建完成后,就可以安装并启动 CouchDB了。

安装CouchDB命令

代码语言:javascript
复制
docker run --rm -it -e COUCHDB_USER=<username> -e COUCHDB_PASSWORD=<password> -v /opt/couchdb/db:/opt/couchdb/data -v /opt/couchdb/local.ini:/opt/couchdb/etc/local.ini -p 5984:5984 couchdb

请读者根据自己情况修改安装命令中下列选项的值:

COUCHDB_USER?后面的<username>改为希望设置的用户名;

COUCHDB_PASSWORD?后面的<password>改为希望设置的用户密码;

/opt/couchdb/local.ini?改为前述配置文件的外部路径;

/opt/couchdb/db?改为希望存放数据库文件夹的路径;

-p 5984:5984?冒号前面的5984是希望暴露在外的端口,与前述防火墙放通的端口一致即可。

安装完毕后,即可以尝试通过下列地址访问你的服务器:

http://你的服务器IP或域名:你的端口

如果配置了https,则为:

https://你的服务器IP或域名:你的端口

(假设购买的域名为penguin.com,设置的端口为5984, 则访问www.penguin.com:5984

请在弹出的对话框中输入前述步骤里设置的用户名和密码。如果能够成功打开欢迎页,显示一个 JSON 字符串,则表示 CouchDB 已经成功启动,最难的部分已经完成:

客户端配置

客户端配置相对简单,只要成功配置服务端后,按步骤填入服务端的信息,即可正常启动。

先在官网下载并安装Obsidian,并新建一个仓库。

安装完成后,在设置内选择“第三方插件”,根据提示关闭安全模式,启用第三方插件。

然后在社区插件市场搜索、安装并启用Self-hosted LiveSync。如果无法成功加载插件列表,则需要科学上网。

安装插件后,选择第二项“Minimal Setup”,根据提示填写服务端信息即可:

URI 填写服务端网址,例如前述的www.penguin.com:5984

Username及Password请根据自己设置填写。

Database name 为数据库名称,第一次设置时请根据喜好随意填写,如果该名称指向的数据库不存在,会自动创建一个。

后续设置时,请填写与之前设置相同的名称。如果填写了新名称,则会新创建一个数据库,多个不同名称数据库之间互相独立。

填写好各项配置后,点击Test Database Connection,若右上角弹窗显示Connect to 数据库名称,则表示连接成功。

然后再点击Check Database Configuration,如果所有选项都显示通过,则表示服务端可以正常使用。

最底部的端到端加密选项,如果只需要同步文章则可以关闭。在配置了https的情况下,数据已经相对安全。

进入下一页,选择同步选项,一般选择LiveSync即时同步。如果不希望所有操作都即时同步到所有设备,也可以选择Periodic周期性同步。如果希望完全手动进行同步,则选择Disable all automatic。

现在,所有基本设置已经完成,各设备应当已经可以互相同步。Self-hosted LiveSync将依靠本地已有的笔记文件创建数据库,然后将其上传到云服务器,成为远端标准数据库。

回到笔记页,右上角将会显示目前的同步运作状态。如果显示睡眠符号,则说明本地数据库已完成和远端数据库的同步,处于最新状态,可以尽情使用了。

调试及排障

云同步并非备份,请定期妥善备份你的数据!

作为一款社区插件,Self-hosted LiveSync由社区开发者志愿维护,无法避免出现意料之外的问题而导致数据丢失的可能性。数据无价,应当定期对本地Obsidian库文件夹采取云同步以外的其他方式进行备份(例如网盘同步盘等)。

如果在使用过程中出现问题,例如远端或本地的数据库卡死报错,可先按步骤检查配置是否有误,然后在妥善备份本地数据的情况下,在插件设置页的最后一页使用自动操作进行排障。

Overwrite remote database将清除远端数据库,将此设备的本地数据库同步至云服务器并设为标准。

Fetch rebuilt DB将清除本地数据库,并完整拉取云端数据库。

如果上述两项仍无法排除错误,那么可以在页面底部使用最终手段:

Rebuild Everything 将清除远端和本地所有数据库,使用本地文件重建本地数据库,然后重新上传作为远端数据库。

Self-hosted LiveSync目前支持同步插件和隐藏文件,然而这项功能并不稳定,在尝试同步可能创建大量隐藏文件的插件(例如emoji和icon相关)时,有概率导致数据库损毁或其他意料之外的情况,所以笔者建议将同步隐藏文件功能保持关闭。

结语

Obsidian作为一款优秀的笔记管理软件,其强大之处远远不止于此,使用者不仅能够依靠内置的白板和思维导图自由记录思考灵感,还能够通过第三方插件,实现按照模板批量创建笔记、记录闪念胶囊、运用看板和甘特图进行任务管理等等。只要愿意花一些时间做基础设置,就可以使它真正成为专属于自己的趁手兵器、第二大脑。笔者推荐每一位希望进行知识管理的读者都尝试一下这款软件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言:为什么选择使用Obsidian?
    • Obsidian是什么
      • 免费、功能很丰富
      • 通用、多平台支持
      • 本地、数据可控制
    • 多端编辑及即时同步笔记的方式
      • Self-Hosted LiveSync
      • 服务端配置
        • 配置云服务器
          • 购买云服务器
          • 放通端口
        • 配置https加密
          • 配置CouchDB
          • 客户端配置
          • 调试及排障
          • 结语
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com