芝士就是力量!开源私有化部署与 GitHub 双向同步的个人知识笔记 App

很多年前,我写过一篇文章:丝滑体验 + 多端同步,技术人 Markdown 笔记的最佳实践,主要讲长期管理个人知识笔记时遇到的一些痛点:多端同步、流畅体验、Markdown 格式、安全与免费。

国内简单、纯粹又好用的产品极少。我当时的方案是迁移到 Typora,固定使用 Markdown 格式,直接存储到 GitHub,再写个脚本定时同步。

因为我一直坚持用 GitHub 作为永久存储仓库,所以始终没有找到体验好、又支持跨端同步的手机端产品。

后来我把两类笔记彻底分开,最近一年在手机上一直用语雀,单独记录生活类笔记。

我特别想吐槽一下语雀玉伯做的产品,由顶级技术大佬为工程师打造,听起来很有极客范,但实际体验一点也不极客。用了一年实在受不了,我只挑两点:

  1. 每次打开目录或文件,加载加渲染都要超过 1 秒,而且每次都从远端加载。不知道非要加载个鸡毛,就算不用本地存储,特么起码也该做个缓存吧,几乎看不到优化。
  2. 从体验上看,应该是 Web 套壳的 Hybrid 方案。就算是前端出身,也没必要这么热衷于 Web 吧?这么多年都不用原生实现,交互体验太差了。

手机端的 Obsidian 非常丝滑。为了不花每年 350 元的订阅费,我决定自己手搓一个。

芝士就是力量!

它必须满足两个核心要求:

  1. 数据永久存储在 GitHub 上。
  2. 要快。

基于这两点,我做了芝士(知识)笔记:一套完全无广告、支持私有化部署、以 Markdown 为唯一内容格式,并与 GitHub 仓库双向同步的个人笔记系统。

  • 技术方案必须遵循本地优先原则,打开速度越慢,使用次数就越少。
  • 针对多端同步冲突,设计明确的冲突处理方式。
  • 使用基于 Authenticator 的权限验证,直接输入验证码登录,省去传统登录流程,每台设备验证一次即可。
  • 自部署服务使用 SQLite 保存索引、状态、凭据等临时信息,原始文档永久存储在 GitHub。

预览图如下:

私有化部署

配置项

编辑 server/config/runtime.local.json,完成以下配置:

  • authenticatorSecret:Authenticator 使用的 Base32 TOTP Secret,用于生成和校验设备登录验证码。请自行生成独立密钥并写入配置,然后下载手机 Authenticator 应用,将密钥添加到应用中。每次重新登录时,需要从 Authenticator 应用获取临时验证码。
  • githubOAuth.clientId:打开 GitHub Developer Settings,新建 GitHub OAuth App,获取 Client ID 并写入配置。
  • githubOAuth.clientSecret:同样在 GitHub OAuth App 中配置 Client Secret,用于服务端完成 GitHub 授权,不能提交到 Git 仓库或泄露给客户端。

构建部署

bash 复制代码
# iOS 构建
cd ios-capacitor
pnpm ios:sync:production

# 服务端构建
cd ../server
pnpm install
pnpm build
pnpm start

将服务端部署到服务器后,即可进行 iOS 真机测试或发布到应用市场。

原创声明

原创文章,转载请注明作者和原文链接。插图由 AI 生成,关注公众号查看更多文章!

内容创作 AI 自律声明

相关推荐
东风破_8 小时前
从输入 juejin.cn 到看到页面:DNS、Nginx、服务器集群与 CDN 到底在做什么?
后端·mysql
钛态8 小时前
Vite 中的 CSS 工程化:从 CSS Modules 到 UnoCSS 的渐进式迁移
前端·vue·react·web
东风破_8 小时前
从 0 设计一个博客数据库:用户、头像与文章表应该怎么建?
后端·mysql
大鸡腿同学9 小时前
黄仁勋点透的 AI 真相:能实现你知道但做不到的,却实现不了你不知道的
后端
FfHUCisI9 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI9 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
Csvn10 小时前
原型链、this 与闭包内存:三座深水区一次打通(含内存泄漏排查实战)
前端·javascript
葡萄城技术团队10 小时前
如何通过 JSON 数据源 / Web API 快速构建轻量级报表(Report)?
前端·json·原型模式
浪兎兎10 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet
++==11 小时前
RESTful详解:核心思想、框架、与HTTP的区别,API的设计风格
后端·http·restful