前言

最近发现了一个Obsidian的实时同步插件Self-hosted LiveSync,去网上寻找相关教程,没有找到较为完整的(指小白也可以看懂),有些教程还有一小部分错误,所以就自己来写(水)一篇。
下面是官方介绍:

Self-hosted LiveSync (自搭建在线同步) 是一个社区实现的在线同步插件。
使用一个自搭建的或者购买的 CouchDB 作为中转服务器。兼容所有支持 Obsidian 的平台。

注:后续又进行补充过,可能还是不太完善,如果有疑问请务必在评论区提出

所需材料

大脑
服务器,本教程使用的是 Linux Debian 11
Obsidian

服务端配置

连接到服务器

这一步是考虑到完全不会使用服务器的小白写的,如果会的话请跳过

下载SSH工具

下载Putty 并安装,安装时版本请根据自己实际情况选择(如果你不知道请点击这里直接下载 ,Windows用户一般都是这个)
下载完成后请安装,基本就是点下一步下一步,这里就不多赘述了
如果你安装失败了可以到评论区问

连接服务器

当你完成安装后我们就可以看到如下图所示的界面啦!

image.png

看到上面的箭头没,没错,那就是我们接下来要关注的地方
主机名称那一栏就是填IP地址,IP地址是什么呢?它长这样127.0.0.1
找到你买的服务器IP地址粘贴上去就好啦
端口一般是22,我们可以留意一下服务商有没有说指定的端口
输入完成后点击下面的打开就开始连接啦

也许你会看到这样的页面,不要害怕,点击是就好啦

image.png

接着我们会来到下图这样的页面,请先输入root,这是服务器用户名,一般都是这个,按下键盘上的Enter键,这样就与下图一样啦
image.png

我们找找服务器的密码,将它复制下来
来到上图的界面,鼠标右键点击一下就是粘贴上啦
咦,右键后怎么什么内容都没出现?笨蛋,那是你的密码,不能让人看见,就算粘贴上去也不会显示出来,所以请右键按一下就直接键盘按Enter键 等待登录成功

这里特别强调一下,接下来要粘贴内容时都可以直接使用鼠标右键哦,文章后面的除“复制以下内容并粘贴进文件“这段话下面的代码块内容全部复制粘贴外,其余代码块内容都请一行一行复制。能不能把代码块的中文也复制进去?可以的,#是注释(忽略)的意思,只是方便你理解它的作用,#后面的内容都会被忽略掉的。

image.png

如果你出现类似于上面的内容,那么恭喜你,连接成功啦!

安装Docker

docker version > /dev/null || curl -fsSL get.docker.com | bash #判断是否已安装docker,如果未安装则进行安装

service docker restart

安装数据库

首先创建配置文件local.ini

touch local.ini

编辑文件local.ini

nano local.ini

复制以下内容并粘贴进文件

[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

粘贴后键入Ctrl + X 再输入Y 键入Enter

创建/opt/couchdb目录并将local.ini移动到/opt/couchdb目录

mkdir /opt/couchdb # 创建 /opt/couchdb 目录

mv /root/local.ini /opt/couchdb/ # 将 root 目录下的 local.ini 文件移动到 /opt/couchdb/ 目录下

完成后,就可以启动 CouchDB

docker run -d --restart always  -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password -v /opt/couchdb/local.ini:/opt/couchdb/etc/local.ini -p 6900:5984 couchdb

其中: COUCHDB_USER 后面的是你的用户名 COUCHDB_PASSWORD 后面的是你的密码 /opt/couchdb/local.ini 是配置文件的路径 /opt/couchdb/db 是数据库的路径 -p 6900:5984 前面的 6900 是暴露在外的端口。

检查是否运行成功

sudo docker ps |grep couchdb

管理数据库

在浏览器访问http://IP:6900/_utils/,输入你设置的用户名和密码后可在网页端可视化管理你的数据库内容。

反向代理

反向代理用于移动端同步,如果所有设备并非移动端可跳过此步
这里考虑到手动安装不易操作,故使用面板,方便且易懂些
下面以1Panel为例

安装1Panel面板

请输入以下代码一键安装

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

安装成功后,控制台会打印面板访问信息,可通过浏览器访问 1Panel:

http://目标服务器 IP 地址:目标端口/安全入口
登录后我们会来到下图界面

image.png

安装相关应用

点击左侧的网站界面,展开后再点击网站一次会出现”未检测到 OpenResty ,请进入应用商店点击安装!去应用商店安装“,这时点击”去应用商店安装“,接下来直接点击下面的安装,安装完成后应该是这样的界面

image.png

申请证书以及配置反向代理

点击创建网站

image.png

箭头处是我们要注意的,如果你的服务器在国内并且没备案,那么域名需带上端口号(例如:blog.wfso.cn:8096,到时候地址为:https://blog.wfso.cn:8096/),代理地址填:127.0.0.1:5984
关于域名如何解析请移步此视频(非本人):新手如何搞定域名解析?
解析后请来到点击左侧证书界面
image.png

点击申请证书,输入自己的域名,如果不会配置DNS账号可选择手动解析
完成后回到网站界面,点击配置,如下图
image.png

选择HTTPS,单击Acme账户选择,单击证书选择刚刚申请的证书,点击保存
image.png

至此,完成,恭喜你,太厉害啦!

客户端配置

打开Obsidian的设置-第三方插件,在插件市场安装Self-hosted LiveSync

安装并启用后打开插件的设置界面(下图为老版本,新版本此界面多了Remote Type选项,选择CouchDB即可),填写箭头内容,URI 为刚刚的http://IP+端口(6900)(注:如果使用域名反向代理请填https:域名+(端口)),Username 和 Password 为前面的参数设置的内容,Database name 可以自己取,注意不要填大写字母,完成后点击test 按钮,如下图

右上角出现 Connect to 数据库名,则为连接成功

完成后点击下面的check ,将所有提示错误的选择fix,然后再次点击check ,直到没有错误,完成后如下图

划到最下方,选择端对端加密(End to End Encryption),在输入框中设置密码,点击启用即可

如果仅想要同步文章无需开启端对端加密

在Sync Setting 选项卡中,选择LiveSync(实时同步),点击Apply启用,如下图

建议启用 Use Trash for deleted files(删除文件到回收站)

建议启用 Miscellaneous 选项卡中的 Show staus inside editor (会在编辑器右上角显示状态)

配置同步插件、主题、设置等内容

如果只想同步文章内容可跳过这一步

点击Customization Sync选项卡,设置自己的设备名称(Device name),如下图

复制配置到其他设备

在插件Setup wizard 选项卡中,点击 Copy Setup URI,弹出的对话框设置密码,即可复制当前的配置信息

手机(其他设备)安装Obsidian

建议从Google Play下载,下载后新创建一个空笔记,之后到插件市场安装这个插件。

手机端同步

同步内容

在插件Setup wizard 选项卡中,点击 Open Setup URI,粘贴复制的内容,输入设置的密码,点击第一个Set it up as secondary or subsequent device(将此设备设置为辅助或后续设备)

同步插件、主题、设置等内容

点击Customization Sync选项卡,设置自己的设备名称(Device name),点击Open 按钮

image.png

在Open 后会显示可同步的内容,找到需要同步的内容,点击原本的——,选择自己的最初的设备(同步源),选择完成后点击Apply all ,再点击Sync once 即可

参考资料

obsidian-livesync/README_cn.md at main · vrtmrz/obsidian-livesync

obsidian-livesync/docs/setup_own_server_cn.md at main · vrtmrz/obsidian-livesync

不使用第三方软件实现Obsidian多平台实时同步