ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从Evernote到Notesnook:开源加密笔记的迁移实践与自托管指南

从Evernote到Notesnook:开源加密笔记的迁移实践与自托管指南 Evernote 的老用户看到今天的价格表和功能墙估计都会想起那句流传很久的slogan“Remember Everything”。我从十来年前开始用 Evernote中间经历过印象笔记分家、免费额度缩小、设备限制一直到后来彻底放弃。大约在 2023 年年中一款叫 Notesnook 的笔记软件宣布正式开源直接把枪口对准了 Evernote。这件事在笔记圈里讨论度不低但很多人只看到“又一个开源笔记”就划走了其实没意识到这个项目背后是 Standard Notes 团队也没有意识到“开源”这两个字对一个以端到端加密为卖点的产品意味着什么。这篇文章不打算做复读机一样的新闻稿。我会从 Evernote 为什么让人想放弃讲起再拆一拆 Notesnook 到底开源了哪些东西、它的加密架构是怎么设计的、我从 Evernote 迁移到它经历了什么以及如果你想自托管同步服务有哪些真实存在、必须避开的坑。适合谁看如果你现在还在 Evernote 或印象笔记里纠结要不要搬家或者你在 Joplin、Obsidian、思源笔记之间犹豫这篇应该能帮你少走弯路。1. Evernote 的处境与一款敢于亮底牌的竞品1.1 Evernote 到底把用户惹毛在哪先别急着骂我客观说一下。Evernote 的问题不是一朝一夕出现的。过去几年我能明显感受到几个变化免费用户的设备数被砍、笔记条数和每月上传流量被限制后来订阅价格一路往上走高级版一年几百块已经成了常态。对于只是想随手记点东西的人这个成本太高对于重度用户又会发现自己被绑定在一个不开放的生态里导出虽然能做但笔记里的附件、嵌套标签、内部链接在搬家时总会出点幺蛾子。更让老用户心里打鼓的是产品迭代方向。它加了大量协作、工作台之类的功能但最核心的编辑器稳定性和搜索体验始终谈不上惊艳。我的感觉是Evernote 从一个“个人知识库”慢慢变成了“企业协作工具”而我只想安安静静地把笔记存成本地能救的东西。数据是长期资产这个道理很多人明白但真正到了要续费那一刻才会重新审视手里的笔记到底能不能自由带走。1.2 Notesnook 是什么来路Notesnook 是 Standard Notes 团队孵化的项目。老玩家对 Standard Notes 应该有印象它是最早把端到端加密和笔记结合的一批产品之一价格不便宜界面也被吐槽过于极客。Notesnook 可以理解成那个团队想做一个“更亲民、更像 Evernote”的加密笔记把 Evernote 的易用性、组织方式和端到端加密的安全感撮合到一起于是就有了这个项目。这次“正式开源”的价值我理解不在于多了一个能白嫖的笔记软件而在于它把“私有笔记”从一句营销口号变成了可以被审计、被自托管、被二次开发的事实。在这一点上和闭源的 Evernote 形成了非常鲜明的对照。我也第一时间试了基础体验桌面端装上之后第一感觉是很接近 Evernote 的旧版左侧笔记本列表、中间标题列表、右侧编辑器没有花里胡哨的 AI 推荐没有一堆弹窗引导。这个节奏对于从 Evernote 过来的人非常友好。2. “正式开源”这件事拆开看代码范围与授权边界2.1 这次公开的是哪几块代码很多人以为开源就是“把 GitHub 上一个仓库设为 Public”但实际上对这个体量的产品来说开源是一个渐进过程。Notesnook 团队的做法是拆分仓库逐步放开编辑器内核、桌面端、网页端、移动端的部分实现、同步服务端的客户端协议都能在公开仓库里找到。我特意去翻了它的仓库组织能明显看到工程划分不是玩具项目水准。编辑器部分采用块编辑器的设计类似 Notion 那样回车生成块但底层实现更接近传统富文本内核客户端用 TypeScript 贯穿Web 和桌面共用大量逻辑移动端则走 React Native 路线。对于想学习笔记类应用架构的人这本身就是一份很不错的开源教材。你可以顺着某个 UI 操作一路追踪到加密、同步、存储的调用链这种“完整产品级”的学习路径在大多数开源笔记项目里很难找到。2.2 许可证与商业边界这里必须泼一盆冷水开源不等于所有东西都能随便拿去商用。GitHub 上每个仓库的 LICENSE 并不完全一致有些模块是标准的开源许可证有些则可能带额外限制条款或者保留品牌资源、图标、服务端某些闭源模块。动手之前第一件事是看仓库根目录的 LICENSE 文件而不是直接拿代码去改个名做商业化。团队保留付费订阅和服务器托管服务这是一条很清晰的路线代码开源、服务收费。你觉得自托管麻烦就继续用官方服务器你有能力自己跑也可以完全脱离他们。这种模式对“信任”这个问题的回应是真正到位的——至少“我们不会拿你的数据做坏事”这句话从口号变成了可验证的承诺。2.3 技术栈一眼看懂从公开仓库观察Notesnook 的核心大体上是 TypeScript 的天下。数据层在浏览器环境依赖 IndexedDB 之类的本地存储桌面端则走文件系统或嵌入式数据库同步和加密相关的代码独立成模块和 UI 解耦得比较干净。这样的结构让自托管和二次开发相对舒服不会出现把界面和业务逻辑焊死的情况。不过技术栈先进不代表上手容易。它的代码量不是“三天看完”的颗粒度模块间基于事件和消息机制协作直接读源码的曲线比 Joplin 那种轻量项目陡峭一些。如果你想改功能我的建议是先跑起来再通过断点定位某个 UI 操作对应的事件流而不是从头顺序读代码。很多人上来就想把编辑器改成自己想要的形态结果连事件入口都找不到其实就是没有先用起来。3. 端到端加密不是营销话术架构与密钥流转3.1 数据加密链路如果 Notesnook 只是界面像 Evernote那它不值得单独写一篇。真正拉开差距的是加密设计。官方宣传的口径是端到端加密也就是说数据在离开你的设备之前就已经加密服务器上存储的只有密文。这能做到的前提是密钥永远只在客户端生成和持有。具体实现上主流做法是这样的链路用你的密码派生出一把主密钥再把这把主密钥和其他密钥进行信封加密形成一层类似“保险箱里再装小保险箱”的结构。实际算法组合通常包括 Argon2id 这样的慢哈希派生密钥以及 XChaCha20-Poly1305 这类现代流式加密算法具体以官方最新文档为准。这样说可能有点抽象我用一个比喻服务器是一个快递中转站你寄出去的是一箱已经焊死的铁皮箱快递员能转送这个箱子但打不开只有你自己手里的钥匙能开。这套设计的直接结果是服务端被拖库也好被运维人员偷看也罢能拿到的都只是一堆无意义密文。对律师、记者、研究者这类笔记内容极其敏感的人群这个差异是本质性的。普通笔记软件出一次数据泄露事故最多是道歉加改密码加密笔记即使服务器裸奔泄露出去的也是密文。3.2 安全带来的代价我实际踩到了加密不是说加就加它会让很多“本来很普通”的功能变得难做。第一个代价是全文搜索端到端加密后服务器没法帮你索引明文客户端只能在自己的本地数据里搜索。如果笔记几千条本地搜索速度还算能忍但如果像我从 Evernote 迁过来带了大量扫描件和老笔记检索体验和服务器端索引的 Evernote 完全两个量级。第二个代价是忘记密码。Evernote 忘了密码可以走邮件找回Notesnook 这类产品一旦忘了主密码数据基本等于永久冻结。因为它自己也没有明文密码和恢复密钥。这是很多人用加密笔记翻车的第一大原因。我现在的习惯是注册后立刻导出恢复码存到一个离线的地方而不是放在同一个云盘里否则真出事的时候一起完蛋。这个细节我在下面迁移章节里还会再强调一次。4. 从 Evernote 迁移到 Notesnook 的完整流程4.1 先把旧数据从 Evernote 里“挖出来”迁移的前提是把 Evernote 数据导出成标准格式。桌面版 Evernote 提供了将单个笔记本导出为 .enex 文件的功能这个格式本质上是 XML笔记正文、标签和部分附件都打包在里面。如果你用的是国际版操作一样如果数据在中国版印象笔记里则需要先在客户端里把笔记本导出成 .enex再走后面的流程。导出时我建议按笔记本分批来不要一上来就全选。我见过一次导出几千条笔记导致文件几十 MB 甚至上百 MB 的情况导入端处理起来非常吃力而且中途失败很难定位到具体是哪一条笔记坏了。分批导出还有个好处你可以先拿一个测试笔记本走通全流程心里有底再动主要数据。这一步看起来简单但很多人就是因为嫌麻烦直接全量导出最后导入失败又得重来一遍。4.2 导入 Notesnook 的结构映射Notesnook 的导入入口在设置里支持从 Evernote 和 Markdown 等格式导入。选择 Evernote 格式后上传 .enex 文件即可。导入逻辑会把 Evernote 的笔记本映射为 Notesnook 的笔记本标签也会被带进来。实际效果有几点要说清楚。第一Evernote 笔记里常见的附件、图片大多能导入成功但个别历史笔记里嵌的样式或特殊对象会变成纯文本这是格式转换的天然损耗。第二笔记内部链接和笔记间的引用关系不会完整保留指望迁移后知识网络原封不动是不现实的。第三导入速度取决于笔记数量和附件大小大批量迁移时建议开着应用等不要中途切走干别的事否则容易触发超时。迁移完成后我强烈建议先搜索一遍“空笔记”“无标题”这类关键词把导入产生的残次品清理掉。这些一般不是程序的错而是旧笔记本身就存了奇怪的空内容可能是当年网页剪藏留下的空白页也可能是同步中断产生的残片。4.3 日常使用体验哪些像 Evernote哪些完全不一样Notesnook 的编辑体验走的是块编辑器路线段落、标题、待办、引用都是独立块。我自己从传统文档流切换过来大概适应了两三天适应之后反而觉得块模式更干净尤其是做清单和结构化的项目笔记时比 Evernote 那种连续文本流舒服。组织方式上它有笔记本、标签、快捷方式这些概念老 Evernote 用户不会有水土不服的感觉。但要注意几个“看起来像但其实不一样”的地方它的收藏夹更像快捷方式集合不是传统意义的文件夹标签体系虽然是多层级但层级关系并不如 Evernote 那么直观。笔记搜索、附件预览这些基础功能都在只是速度和成熟度和 Evernote 有差距这一点我不会帮它粉饰。手机端 App 的离线体验做得还是比较扎实的同步也是增量进行。对大多数人来说日常记录、快速摘录、拍照存证这几件事Notesnook 完全够用。我的感受是它像 Evernote 的“干净重制版”少了很多商业化功能堆叠但也少了很多老用户习惯的边角料比如网页剪藏工具链、邮件转发、手机端快捷小组件这些配套生态现阶段确实不如 Evernote 完整。5. 自托管同步服务的实操笔记5.1 为什么要自托管开源带来的最大红利不是能看代码而是能把同步服务器也抱回家自己跑。官方提供的云服务当然省心但如果你对“数据掌握在自己手里”有执念或者你所在团队有合规要求自托管是唯一让端到端加密闭环起来的方式客户端是你自己的服务器是你自己的中间传输和存储全是密文安全感是拉满的。自托管的代价也不小你要有服务器、要配域名和 HTTPS 证书、要处理备份和监控。这不是给小白准备的路线。如果你连 Docker 都没装过我建议先别急着上自托管用官方服务体验一个月再说。等确定这软件适合你、真要长期用了再花一晚上把自托管搭起来这样投入产出比最高。5.2 基于 Docker 的部署思路官方文档提供了一套自托管指南核心是部署同步服务再配合数据库做存储。具体镜像名、版本号更新很快我不会在这里贴一份可能过时的命令但部署环节大体上有三步。第一步准备一台干净的 Linux 服务器装好 Docker 和 Compose 插件把域名解析到服务器 IP。第二步拉取官方自托管仓库或镜像复制环境变量模板按文档填写域名、数据库连接串、密钥等配置然后启动服务。第三步在客户端设置里把同步服务器地址从官方云改成你自己的域名重新登录或注册账号。下面是我在一次测试环境里整理出来的 Compose 片段仅用于展示结构不保证和官方当前版本完全一致。你实际操作时以官方仓库和镜像 Tag 为准。# 注意以下为结构示意具体镜像名与配置项请以官方文档为准 services: notesnook-api: image: official-registry/notesnook-sync-server:latest restart: unless-stopped environment: - APP_PORT3000 - DB_URLmongodb://db:27017/notesnook depends_on: - db db: image: mongo:7 volumes: - db_data:/data/db volumes: db_data:注意几个真实存在的坑。第一是 HTTPS浏览器和部分客户端只会信任 HTTPS 服务器自建服务器不挂证书基本没法正常同步。用 Caddy 或 Nginx 反代时把证书续期配置好否则证书过期那天你会收到一堆客户端同步失败提示。第二是数据库备份很多人部署完就忘了备份数据库服务器宕机后数据直接归零。我是用 cron 每天凌晨把数据库导出压缩再传到对象存储和本地各一份。第三是版本对齐客户端、同步服务、数据库驱动之间如果版本跨度太大可能出现握手失败或同步循环升级前先看发布日志。5.3 验证同步是否真的工作部署完之后不能只看服务起来了要做一个完整的验证流程新建一条测试笔记写入几个附件然后强制关闭客户端再换一个设备登录看笔记是否能在合理时间内出现。同时检查服务器上的数据是否确实为密文——这一步很关键你可以在数据库里查一下如果能看到明文正文说明加密链路配置有问题赶紧回头检查客户端是否连接到了正确的服务器以及是否真的走了端到端加密通道。我实测下来同步速度取决于服务器带宽和笔记体积。图片较多的笔记首次同步需要较多时间后续增量同步就好很多。如果发现某个设备一直同步失败先查客户端那边的同步状态日志绝大多数是证书链或网络问题和代码本身关系不大。另外提醒一句自托管之后官方客户端的自动更新机制可能不再适用于你的同步服务器客户端还是要定期手动升级别因为服务器是自己的就忽略了客户端安全补丁。6. 开源之后的清醒认知哪些坑必须提前知道6.1 “开源”不等于“全部免费”这是最容易误读的一点。Notesnook 开源不代表所有官方服务都免费。手机和桌面端 App 可以免费用基础功能但一些高级功能、更大的上传额度、官方同步服务器的更完整能力仍然和订阅挂钩。你可以把它们理解成“为托管服务付费”而不是“为软件本身付费”但在掏出信用卡之前要看清功能矩阵否则容易产生“都开源了为什么还要收费”的困惑。再说严格一点照抄代码做一个自己的笔记 App 在法律和伦理上都不干净许可证条款可能让你连品牌名都不能使用。想基于它做二次开发最稳妥的路径是参与上游开源社区、提交插件和修复而不是另起炉灶。很多人说我“抄一个开源的怎么还不让了”这种想法恰恰是把“开放”误解成了“放弃权利”。6.2 移动端、插件生态与社区现状移动端的开源程度和桌面端并不完全同步。应用商店里的版本与开源仓库代码是否存在完整对应关系需要逐个版本核对。这不是 Notesnook 一家的问题几乎所有开源 App 在上架商店时都会面临渠道构建和品牌资源的问题。你如果特别在意“我用的是不是纯开源代码编译出来的包”只能选择自己从源码构建并承担签名更新、自动升级失效的麻烦。插件生态方面Notesnook 目前离 Obsidian 和 Joplin 那种社区体量还差很远。你想找一堆现成插件扩展功能现阶段可能只能自己写。好在它的核心数据模型比较规整未来插件化如果推进顺利潜力是有的但“如果”的东西我不算数。中文社区资源也不多教程和踩坑分享基本散落在 GitHub Issues 和少数博客里遇到问题直接搜官方文档往往比搜索引擎更快。6.3 和其他开源笔记的横向对比很多人在选笔记软件时会在 Notesnook 和 Joplin、Obsidian、思源笔记之间纠结。我给一个尽量客观的横向参考维度NotesnookJoplinObsidian思源笔记端到端加密原生支持插件或选项支持需第三方插件支持但配置复杂度高编辑体验块编辑接近传统笔记Markdown 为主Markdown 双向链接块编辑 双向链接自托管有官方同步服务方案简单直接需自己拼同步方案支持但移动端体验一般中文本地化基础可用很好很好原生中文社区生态中等很成熟极成熟中文社区活跃我说的核心观点是如果你最看重“数据绝对安全 迁移友好 像传统笔记一样简单”Notesnook 是很强的候选如果你离不开双向链接和 MarkdownObsidian 可能更顺手如果只要一个简单的多端同步笔记Joplin 依然是性价比之王。每个人的权重不一样这个表只是给你列清楚差异别指望一个工具解决所有问题。6.4 数据可移植性开源并不是“永不被锁”最后说点大实话。一个软件开源降低了供应商锁定风险但不等于零锁定。Notesnook 的数据格式、同步协议、加密结构都是它自己的实现虽然你能拿到源码也能随时把笔记导出成 Markdown 之类的中立格式但如果你深度依赖了它的块结构、内部链接和加密体系换到另一个平台的迁移成本依然存在。所以我的建议很朴素不管用哪款笔记软件定期导出备份到本地比任何一个“开源”标签都更能保护你的数据。开源给你的是“随时能跑路”的能力但要不要跑、怎么跑还是要靠你自己提前准备。我在实际迁移过程中的一个体会是千万别在情绪上头时一键全选导出、导入然后期待万事大吉。给自己留一两天时间先小批量验证流程再处理历史包袱。另外笔记软件没有完美的把“开源”“加密”“自托管”这些标签放到一起能做到 Notesnook 这个完成度的目前市面上并不多。最后分享一个小技巧无论你最后选了哪款坚持每个季度做一次全量导出把备份文件放到一个和常用云盘不同的地方。这个习惯在我从 Evernote 搬家时救回了大量历史资料也是我现在推荐给所有人的最低成本保险。
返回列表