Obsidian多端同步插件LiveSync

在这里插入图片描述

网友 LeoPaco反馈,群晖升级到 DSM7.2 ,注册表可以搜索镜像,根据 Leo 贴的 /var/packages/Docker/etc/dockerd.json 的内容,DSM7.2 应该是使用了 https://docker.nju.edu.cn 作为注册表镜像,但老苏测试过下面几种情况都不行,有需要的可以自己实际测试

  • 上海:DSM6.2.3DSM6.1.7
  • 深圳:DSM7.1.1

本文应网友Mr.Chow 的要求折腾;

这个需求有一段时间了,一方面老苏自用的方案是 Obsidian + syncthing,另一方面通过 cloudflare Tunnel 反代的域名连接时,一直有问题,就这么一直搁置了。最近老苏折腾了通过 https 访问 Tailscale 网络后, 正好可以用来试验一下

文章传送门:用自定义域名访问tailscale节点

什么是 Obsidian LiveSync ?

Obsidian LiveSync 是一个社区实现的 Obsidian 笔记同步插件。使用 CouchDB 数据库作为同步的中间服务器,能够在所有兼容 Obsidian 的平台上使用。需要注意的是,Obsidian LiveSync与官方的 Obsidian Sync 不兼容。

什么是 CouchDB ?

Apache CouchDB 是一个开源数据库,专注于易用性和成为 “完全拥抱 web的数据库”。它是一个使用 JSON 作为存储格式,JavaScript 作为查询语言,MapReduceHTTP 作为 API 的面向文档的 NoSQL数据库。

在这里插入图片描述

前期准备

将下面的内容保存到 local.ini 文件

源文件来自:https://github.com/vrtmrz/self-hosted-livesync-server/blob/main/conf/local.ini,老苏测试验证时有微调,但其实可能并没有起作用,应该可以用官方的原始的版本;

[couchdb]
single_node=true
max_document_size = 50000000

[chttpd]
require_valid_user = true
max_http_request_size = 4294967296

[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, cache-control, x-requested-with
methods = GET, PUT, POST, HEAD, DELETE, OPTIONS
max_age = 3600

这个文件要放入 couchdb 目录

安装 CouchDB

在群晖上以 Docker 方式安装。

Web GUI 安装

在注册表中搜索 couchdb ,选择第一个 couchdb,版本选择 latest

本文写作时, latest 版本对应为 3.3.2

在这里插入图片描述

docker 文件夹中,创建一个新文件夹 couchdb,并在其中建一个子文件夹 data,将前面准备的 local.ini 放入 couchdb 目录

在这里插入图片描述

文件夹装载路径说明
docker/couchdb/data/opt/couchdb/db存放数据库
docker/couchdb/local.ini/opt/couchdb/etc/local.ini配置文件

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
59845984

默认开了 3 个端口

在这里插入图片描述

但实际上 43699100 用于集群部署,只有 5984CouchDB 的主要端口,用于提供 HTTP APIWeb 界面。无论是单机模式还是集群模式,都使用这个端口,所以老苏把不用的端口删掉了

在这里插入图片描述

环境

可变
COUCHDB_USER用户
COUCHDB_PASSWORD密码

在这里插入图片描述

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 couchdb
mkdir -p /volume1/docker/couchdb

# 进入 couchdb 目录
cd /volume1/docker/couchdb

# 创建 local.ini 文件
touchu local.ini

在这里插入图片描述

FileStation 中打开 local.ini,将上面的内容粘贴进去

在这里插入图片描述

接下来就可以用 docker-cli启动了

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name couchdb \
   -p 5984:5984 \
   -v $(pwd)/local.ini:/opt/couchdb/etc/local.ini \
   -v $(pwd)/data:/opt/couchdb/db \
   -e COUCHDB_USER=admin \
   -e COUCHDB_PASSWORD=password \
   couchdb

在这里插入图片描述

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'

services:
  couchdb:
    image: couchdb
    container_name: couchdb
    restart: unless-stopped
    ports:
      - 5984:5984
    volumes:
      - ./local.ini:/opt/couchdb/etc/local.ini
      - ./data:/opt/couchdb/db
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=password

docker-compose.ymllocal.ini 放入当前目录,然后一键启动

# 一键启动
docker-compose up -d

在这里插入图片描述

修改 local.ini

每次容器启动之后,local.ini 的文件所有者都会变成 5984:5984。这是 docker 镜像的限制,请修改文件所有者或者赋予写权限后再编辑 local.ini

在这里插入图片描述

编辑权限,勾选 写入 权限

在这里插入图片描述

之后就有 w 权限了

在这里插入图片描述

每次重启之后,如果想要修改 local.ini 文件,都要重复上面的操作

运行

在浏览器中输入 http://群晖IP:5984 就能看到登录界面

在这里插入图片描述

输入前面设置的 COUCHDB_USERCOUCHDB_PASSWORD 的值,会看到一行 JSON

{"couchdb":"Welcome","version":"3.3.2","git_sha":"11a234070","uuid":"f151341b0599adeb5deacd59baa02074","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}

在这里插入图片描述

在浏览器中输入 http://群晖IP:5984/_utils/

在这里插入图片描述

可以修改 CORS等参数设置

在这里插入图片描述

反向代理

如果只有PC端需要同步,使用 http 协议即可,但是如果移动端也要同步,则需要使用 https 协议,所以反代是必须的

假设我们要使用的域名是 https://ol.laosu.ml

开始尝试过 cloudflared + npm 方案,但在同步测试时,会报错

在这里插入图片描述

在调试界面能看到下面的日志,但没找到解决办法

acess to fetch at 'https://ol.laosu.ml/test/' from origin 'app://obsidian.md' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

下面采用的是 tailscale + npm方案

在这里插入图片描述

没问题的话可以都勾上

在这里插入图片描述

客户端插件

【注意】:在进行下面的操作前,记得先备份好笔记,备份好笔记,备份好笔记~~~

老苏只测试了 windows 版的 Obsidian 客户端,其他平台的未验证,尤其是手机端未验证,因为老苏习惯把图片和附件也放在 obsidian 库中,所以整个资料库有 30G 以上;

在插件市场搜索 livesync

在这里插入图片描述

安装完成后,还需要启用插件

在这里插入图片描述

局域网使用,URI 使用 http://群晖IP:5984

  • Usename:对应 COUCHDB_USER 的值;
  • Password:对应 COUCHDB_PASSWORD 的值;
  • Database Name:随便填;

在这里插入图片描述

互联网使用,URI 使用前面反代的域名https://ol.laosu.ml即可

在这里插入图片描述

Device name 是用来区分不同的终端的,启用同步

在这里插入图片描述

同步状态将显示在状态栏

在这里插入图片描述

可以在数据库中查看 test

在这里插入图片描述

进入库能查看记录

在这里插入图片描述

小结

虽然网上很少权威的评测,但是从网上能找到的资料看,在插入大量数据时, CouchDBRDBMS(例如 MySQL)慢很多,主要原因是 CouchDB 使用 HTTP 协议来操作数据库,可能会造成网络性能略差。

参考文档

vrtmrz/obsidian-livesync
地址:https://github.com/vrtmrz/obsidian-livesync

vrtmrz/self-hosted-livesync-server
地址:https://github.com/vrtmrz/self-hosted-livesync-server

obsidian-livesync/docs/setup_own_server_cn.md at main · vrtmrz/obsidian-livesync · GitHub
地址:https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/setup_own_server_cn.md

不使用第三方软件实现Obsidian多平台实时同步 - 经验分享 - Obsidian 中文论坛
地址:https://forum-zh.obsidian.md/t/topic/2811

Obsidian 与 CouchDB 的同步配置 - StarryVoid - Blog
地址:https://blog.starryvoid.com/archives/1164.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值