Obsidian 云存储 后端服务

  1. CouchDB 并不集成,需要自行部署或购买或白嫖。如 Obsidian免费的实时同步服务
  2. 数据源同一时间只能选一个。
  3. webdav 的开启,是在前端设置里开启。前端开启后,如果不好使,可以重启 docker。
  4. 这个问题,我猜测是 PWA 问题,和问题5相关。建议暂时使用 https://note.ftls.xyz/web/ 这个前端,或者自签名证书使用 https 解决,就是在手机自带浏览器,或者 google 浏览器打开后,显示可以安装意味着成功。
  5. 在本地机子。准确来说开启 https ,随便使用个证书都可以,只是浏览器会爆红报警不安全,当然可以忽略。如果你的实例映射到了域名并发到了公网,可以使用 Let’s Encrypt 给域名申请证书。

然后我文档里使用的 cfssl,一般使用 openssl 的多一些,不过都是为了生成自签名证书,如果你的实例部署到内网仅能使用 ip 访问,可以使用 cfssl 或者 openssl 生成自签名证书。我计划之后生成一个通用的默认的证书来避免这个问题。

我刚查了一下,网页在线生成的证书一搜一大把,如果是内网部署随便找一个生成使用大概也没什么问题,并不一定使用 cfssl。搜下 SSL 证书生成就行了。

很是感谢,基本明白了。
另外想问下第4点,怎么用你的前端呢?登录设置填我的服务器地址?我在你的前端照着我的前端填为啥会报错呢?还是说config里面也有匹配?

直接打开,复制原来的服务器URL,账户和密码就行。注意不要有空格之类的,也不要多打斜杠。另外在一些较新的浏览器中,后端必须有 https ,这是因为新的浏览器不允许混用 http 和 https 。
配置里确实有设置,但是不影响。不过设置完成 https 使用自己的前端大概也没问题。https 几乎是必须的。

不过这确实是个麻烦事,我回头改下前端。

不好意思,再请教下。
ssl证书路径是在容器里面吗?要暴露到本地路径上吗?

是的,容器路径。暴露本地几乎是必须的,因为要修改配置文件。配置文件路径我记得是容器内 /app/data,因此可以创建容器内路 /app/data/cert 文件夹,把证书放在里面。这样,配置文件证书路径就是 /app/data/cert/server.pem

此外,可以看看 obcsapi-go-web: For obcsapi-go 版本 v20230705-1830 for server_v4.2.6 。gitee page 就是 ObCsapi ,这是我部署到一个不强制 http 的单独前端,你可以 fork 部署自己的,或者直接使用 http://kkbt.gitee.io/web/ ,这样大概不一定需要 https ,就不用搞证书了,但是不能使用 PWA 了,可能需要手动创建桌面快捷图标。

感谢,已经解决,直接用了阿里买的域名送的证书。配置里面只知道再cert文件夹,但是不知道就是在暴露的文件夹下面。要是docker产生时下面有个现成的空文件夹就好理解了,以为是docker的根目录下。
不开https的前端其实之前已经可以用,只是看你的回答说跳转是https的问题才来折腾https,但是测试了下,不是,使用https也存在。要用浏览器清除本地存储。所以每次点齿轮进去后,先点下清除缓存,再注销重新登录,好像没在出现了。感觉问题是缓存的问题。包括搭建好第一次用,能开网页,但是没看见登录,数据又不能用,折腾了好久才看到注销。感觉这里说明文档没解释的话许多人第一次会踩坑。
另外为什么要有config.yaml和前端的server setting两套设置啊?
说明文档中WeChat MP部分是另外一个项目吗?测试号发送的信息不是按日记保存的么

那可能确实我弄错了原因,因为我这无法触发那个错误,我也没使用 docker 部署后自带的前端。可能因为不常常触发我也忽略这个问题,我会修改文档进行提醒。

后端 config.yaml 配置项,搞来搞去条目太多,而且大部分需要重启生效,不好搞运行时修改配置。前端服务器设置,大部分无需重启就能生效,很适合调试。

wechat mp ,是之前说明,已经过时了,忽略这个。我之后会删掉。

如果是放在服务器上的docker做反向代理,推荐使用ngnix prosy manager这个服务,可以自动申请证书并且有简单好用的图形界面

今天在使用邮件提醒的时候发现开头有这么一句话:

Obcsapi 每日邮件提醒 (1):
默认笔记前端链接
https://note.ftls.xyz/web/

找了下配置文件里似乎不能修改这段,翻了下代码对应的是obcsapi-go/server/notification.go

// 每日邮件
func DailyEmailReminder() error {
	login_address := "https://note.ftls.xyz/web/"
	var ansList []string
	ansList = append(ansList, "默认笔记前端链接")

有考虑把这个加到配置文件里或者web后台设置吗?

另外star奉上,这个项目真的太爱了,完美解决了我的ob日常使用,作者我爱你!!

现在改成从配置文件中获取了。不过或许删除这部分也是不错的选择,毕竟可以在 每日提醒.md 自定义内容。

另外,谢谢你对这个项目的喜爱,希望这个项目对你有所帮助。

此外,新版本支持企业微信自建应用的消息API的文字,图片和链接,支持企业微信提醒。但是缺点或者麻烦所在一是需要与企业主体关联的域名,二是参数有点多,配置起来还挺繁琐的。

嗯,我看到最近项目的动态也猜到你是在加企业微信了,感谢采纳建议。

繁琐这点的话,毕竟是对普通的笔记使用者(非计算机相关专业)来说,配置docker、各种开发平台的参数稍显麻烦了,不过麻烦一次之后效果是很好的。我想总结一下个人工作流然后出个B站视频教程,不知道你是否介意?

另外是多用户功能的脑洞

remotely save是支持端对端加密的,算法见链接:算法链接 ,如果obcsapi能支持本地解密的话,有能力部署的人也可以把自己的服务器分享出去,这样也减小了新手入坑的难度,p2p加密也不会有隐私风险。同时诸如微信/http request也可以做成多用户的,这样新手就能一键入坑了。

并不介意,并且对此感到开心。

Docker 一行命令部署后,不配置的情况下,也可以使用基础功能,如找个 webdav 客户端挂载在本地也能用编辑查看,如 typora ,然后调用 API 保存一些文字之类的。

关于多用户功能

关于多用户,暂时没有这个考虑,首先是很麻烦,包括执行脚本的能力,权限,等等都需要规划,还有 token ,为了安全,仅能在服务器上查看文本获取,类似很多特性都是为单用户存在的;其次破壳人已经在集成开源 memos 到 obsidian 了,不过似乎并不是操作纯文本。

而 remotely save 端到端加密,是一种对称加密,也就是说如果 obcsapi 想对笔记进行任意操作,需要保存和获取密钥,对于服务器管理者,这顶多增加了获取任意笔记内容的难度,需要多一道解锁,或者说是仅次于门户大开。如果使用非对称加密,可能还可以试一下,如 GPG 使用的一些算法,这确实很安全。

所以,obcsapiv4 不会向多用户发展,短期内也不会开发多用户的基于云存储纯文本开发API 。对于小白来说,或许使用云函数一键部署,或者托管容器一键部署是不错的选择。