芝士就是力量!开源私有化部署与 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 自律声明

相关推荐
SEO_juper几秒前
2026年用Python分析网站访问日志:看清Googlebot和AI爬虫怎么爬你的站(附完整代码)
开发语言·前端·seo·独立站·谷歌优化
摸鱼仙人~1 分钟前
React 原理进阶:彻底理解 re-render、React.memo、useMemo 与 useCallback
前端·vue.js
IMPYLH5 分钟前
HTML 的 <small> 元素
前端·网络·html
IT_陈寒6 分钟前
Vue的响应式让我加班到凌晨,问题竟出在这个不起眼的地方
前端·人工智能·后端
乱码三千18 分钟前
使用 Docker-compose 搭建SRS直播中转服务端
后端·架构·github
y1su18 分钟前
【Leetcode】1477. 找两个和为目标值且不重叠的子数组
数据结构·后端·算法·leetcode·职场和发展
愛芳芳34 分钟前
Swagger2 多环境动态配置实战指南
java·后端·maven·springboot·swagger
黑科技iOS上架1 小时前
单Mac维护多套苹果开发者账号,App Store上架防关联实战方案
ios·审核·账号隔离·设备隔离
JaguarJack1 小时前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php·服务端
BingoGo1 小时前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php