☰
从Evernote到Notesnook:开源加密笔记的迁移实践与自托管指南
2026/10/6 13:35:40 网站建设 项目流程

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_PORT=3000 - DB_URL=mongodb://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 是很强的候选;如果你离不开双向链接和 Markdown,Obsidian 可能更顺手;如果只要一个简单的多端同步笔记,Joplin 依然是性价比之王。每个人的权重不一样,这个表只是给你列清楚差异,别指望一个工具解决所有问题。

6.4 数据可移植性:开源并不是“永不被锁”

最后说点大实话。一个软件开源,降低了供应商锁定风险,但不等于零锁定。Notesnook 的数据格式、同步协议、加密结构都是它自己的实现,虽然你能拿到源码,也能随时把笔记导出成 Markdown 之类的中立格式,但如果你深度依赖了它的块结构、内部链接和加密体系,换到另一个平台的迁移成本依然存在。

所以我的建议很朴素:不管用哪款笔记软件,定期导出备份到本地,比任何一个“开源”标签都更能保护你的数据。开源给你的是“随时能跑路”的能力,但要不要跑、怎么跑,还是要靠你自己提前准备。

我在实际迁移过程中的一个体会是:千万别在情绪上头时一键全选导出、导入,然后期待万事大吉。给自己留一两天时间,先小批量验证流程,再处理历史包袱。另外,笔记软件没有完美的,把“开源”“加密”“自托管”这些标签放到一起,能做到 Notesnook 这个完成度的,目前市面上并不多。最后分享一个小技巧:无论你最后选了哪款,坚持每个季度做一次全量导出,把备份文件放到一个和常用云盘不同的地方。这个习惯在我从 Evernote 搬家时救回了大量历史资料,也是我现在推荐给所有人的最低成本保险。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询