Obsidian多端同步插件LiveSync

news2024/11/25 12:04:03

在这里插入图片描述

网友 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

易基因:易基因近期染色质免疫共沉淀测序(ChIP-seq)研究成果|项目集锦

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 在生物学研究中,DNA与蛋白质之间的互作(DNA-Protein Interactions,DPIs)是至关重要的,参与基因的表达、调控、复制、重组和修复…

m 序列(最长线性反馈移位寄存器序列)详解

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 m 序列 (最长线性反…

Git进阶系列 | 8. 用Reflog恢复丢失的提交

Git是最流行的代码版本控制系统,这一系列文章介绍了一些Git的高阶使用方式,从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章,这是最后一篇。原文:Using the Reflog to Restore Lost Commits[1] “Reflog”是Git不太为人所…

常见的未授权漏洞批量检测工具

常见的未授权漏洞检测 命令行版已放出支持多线程,批量扫描,指定服务扫描,命令行版地址https://github.com/xk11z/unauthorized_com GUI版unauthorizedV2已更新,可批量ip检测导出结果 项目包含 1 、FTP 未授权访问&#xff08…

SadTalker AI模型使用一张图片与一段音频便可以自动生成视频

SadTalker模型是一个使用图片与音频文件自动合成人物说话动画的开源模型,我们自己给模型一张图片以及一段音频文件,模型会根据音频文件把传递的图片进行人脸的相应动作,比如张嘴,眨眼,移动头部等动作。 SadTalker,它从音频中生成 3DMM 的 3D 运动系数(头部姿势、表情),…

webstorm配置vue开发环境

🌳🌳🌳前言:本文章针对于如何用IDE和webstorm运行一个别人的vue项目进行步骤记录。 📙参考:(10条消息) idea配置vue开发环境_idea配置vue运行环境_drinkworld的博客-CSDN博客https://blog.csdn.net/drinkwo…

VSCode ssh ubuntu20显示图像界面

1、在vscode中安装 Remote X11(SSH) 2、在本地端安装MobaXterm 点击Settings-->Configurations-->X11,设置如下: 3、在服务端修改 ~/.bashrc文件,在末尾添加 export DISPLAY"192.168.0.201:0.0" 其中引号中内容为本地端IP地…

英伟达股价能否凭借AI进一步上涨到500美元?

来源: 猛兽财经 作者:猛兽财经 猛兽财经在之前的关于英伟达的分析中(5月2日),就认为英伟达在人工智能方面的增长潜力还没有完全释放出来,并认为英伟达的股价将会很快涨到300美元,结果到了6月…

代码随想录二刷 day34 | 贪心之1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 题目链接 解题思路: 两次贪心 如何可以让数组和最大呢? 局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大 如何转变K次正负,让…

CASS打印地形图操作

1、打开地形图,如下: 2、在“工程应用”菜单栏中,选择“查询两点距离及方位”,如下: 3、量取地形图的大致范围大小,如下: 读取图上距离,用于设置纸张大小。 4、点击左上角打印图形&…

【算法题】神奇的斐波那契数列(Fibonacci sequence)、青蛙跳台阶问题、矩阵中的路径

神奇的斐波那契数列和青蛙跳台阶问题 一、神奇的斐波那契数列1.1、题目描述1.2、递归算法1.3、迭代法1.4、小结 二、青蛙跳台阶问题2.1、题目描述2.2、思路2.3、动态规划法2.4、小结 三、矩阵中的路径3.1、题目描述3.2、思路3.3、代码实现3.4、小结 总结 一、神奇的斐波那契数列…

卫星地图应用经典实例项目(7个)

本文会介绍引用一些非常好的卫星地图等相关的应用,一方面给大家增加见识,另一方面会提供一些设计开发的思路以及代码。 文章目录 热气球追踪系统googlemap实现卫星轨迹satvis卫星Cesium系统NASA的worldview系统项目Esri-Satellite-Map基于leaflet的卫星轨迹绘制项目地球当前…

关于Altium Designer 差分线规则设置的方法纠偏

本文适用于AD20以后版本。在AD的原理图及pcb的4年设计学习中,入门课是学校的AD09,简单的两层板绘制。后来因工作需要,就报了培训班,学习了基于AD19的相关使用方法。后来在很多的项目开发中,逐渐发现之前从书本、培训课…

Qt QGraphicsScene模块实现圆点绘制在所有窗体的最前方,实现圆点的“彩色拖尾”效果以及“选中方框”效果

文章目录 前言1、效果2、代码实现2.1 思路2.1.1 “拖尾”效果2.1.2 “选中方框区域”效果2.2 代码 总结 系列文章: (一)Qt 将某控件、图案绘制在最前面的方法,通过QGraphicsScene模块实现 (二)Qt QGraphics…

【SCI/SSCI/EI录用案例】仅26天录用,1天见刊

【Unionpub学术】录用/见刊/检索案例:2023年6月10日-2023年6月16日 2区材料类SCI 【期刊简介】IF:3.5-4.0,JCR2区,中科院3区 【检索情况】SCI 在检,正刊 【征稿领域】降解材料及其相关技术的研发,如聚合物基轻质材…

PyTorch 2简介:卷积神经网络

介绍 在本系列的上一部分中,我们使用了CIFAR-10数据集,并介绍了PyTorch的基础知识: 张量及其相关操作数据集和数据加载器构建基本的神经网络基本模型的训练和评估 我们为CIFAR-10数据集中的图像分类开发的模型只能在验证集上达到53%的准确率&…

Observability:为 Logstash 输出配置 SSL/TLS - Elastic Agent

在我之前的文章 “Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch”,我详细介绍了如何使用 Elastic Agents 采集数据并把数据通过 Logstash 发送至 Elasticsearch。细心的开发者可能注意到从 Elastic Agents…

Jmeter(三) - 从入门到精通 - 测试计划(Test Plan)的元件(详解教程)

1.简介 上一篇中我已经教你如何通过JMeter来创建一个测试计划(Test Plan),那么这一篇我们就将JMeter启动起来,创建一个测试计划(Test plan),然后现在给大家介绍一下测试计划(Test P…

Redis和数据库保持数据一致性方案

Redis和数据库一致性又称为“双写一致性”,在分布式系统中,由于多个节点之间的并发读写操作,可能导致数据不一致的情况发生。本文将着重介绍如何通过使用Redis与数据库相结合的方案来实现数据一致性。 数据不一致产生的原因: 首先…

Android应用开发(5)Activity生命周期

Android应用开发学习笔记——目录索引 参考android官网: https://developer.android.google.cn/reference/android/app/Activity.html activity 生命周期的阶段 | Android 开发者 | Android Developers activity生命周期(这篇足够了)_…