Please enable Javascript to view the contents

Self-hosting 个人在线记事本 - Joplin

 ·  ☕ 4 分钟

现代生活,大部分人都有信息过载的烦恼。光是家庭事务、生活、工作的信息量就已经爆炸了。程序员群体更是要持续学习充电,信息量更大。好记性不如烂笔头,那么如何记才可以最大化记事的价值?电子化的记事是一个选项,只要手机在身,就可以方便记录与查阅。还可以多设备同步备份和离线查阅。

我对笔记软件有以下要求:

  • 夸设备,多平台共享同步
    • Apple / Android / Linux / Windows
  • 录入方便
  • 搜索方便
  • 安装可以复杂,但使用不能太难,因为需要家人共享笔记
  • 最大化数据的控制权
    • 最好是 Self-hosting 的

国内比较流行的笔记平台有这些:

  • 印象笔记
  • 有道笔记
  • OneNote
  • 各种 Apple 系的基于 iCloud 存储的笔记软件平台

他们都可以归类为公有云存储笔记。

我不知道大家对在公有云存储私人笔记,甚至可能是比较隐私的私人笔记这件事怎么看。反正,我的圈子里,好像人们都习惯相信自己不可控的东西。大厂,权威,似乎总比自己家中那个 TF 卡或 ssd 硬盘可信。

大部分人的这个信,是基于一个假设,不是说他们相信信息不会被未授权查看,是他们认为,未授权查看的人或 AI 不会对自己的信息发生兴趣或利用信息作出损害自己的行为。

但,隐私的价值,有时候不单单以信息泄漏本身会对信息持有者产生多大的损害来评价。而是人的基本原则或者说基本权利。

有句话说:就算是国王,也不能未经同意踏入平民家中一步。

如果你对自己的折腾能力还是比较有信心,也有这个时间,那么 Self-Hosting 笔记是个不错的选择。这也是我去年写 《持续学习和关心个人资讯的IT人,为何考虑学点 self-hosting》 的原因。

在某搜索引擎上找: Open source note-taking app,可以找到:

image-20230813150954514

经过一些比较,综合我上面写的要求,我最后选择了折中的: Joplin 。

Joplin

image-20230813151241840

图:Joplin 的界面

为免让读者把这个文章误解为广告软文,我就不直接去介绍这个软件了,有兴趣的,直接到 https://joplinapp.org/cn/ 看文中官方介绍。我只说说我关注的功能或非功能:

  • 真开源,支持完全的 Self-hosting

我不会完全相信官方网站这样的话:

Joplin Cloud 位于法国。 这意味着您的数据受到严格的欧盟隐私法的保护。 此外,Joplin Cloud 实施了强大的端到端加密,因此即使是我们也无法访问您的数据。

  • 支持 Markdown 和 WYSIWYG(What You See Is What You Get) 两种笔记录入方法
  • 无网络时可查看离线笔记。在线后同步笔记修改

Self-Hosting

我不打算把本文写成一篇 Joplin 的简介或安装入门。这些信息网上一搜一大把,我就不班门弄斧了。这节主要简介一下 Self-Hosting 的支持情况。

Joplin 是经典的 client - server 架构。提供了开源的 client app 和开源的 Joplin Server 。

虽然 Joplin 默认情况下将所有数据本地存储在您的设备上,但 Joplin 的同步功能允许您在任何可访问服务器的设备上访问您的 Joplin 库。 Joplin 同步分为两部分:内部数据笔记内容

  • “内部数据”,是指 Joplin 本身内部的状态数据,不包括用户直接录入的笔记内容。
  • “笔记内容”,是指你的笔记的本身,包括文字、图片、其它附件等等。

为何要分开,可参考:

By default, the item contents (notes, tags, etc.) are stored in the database and no additional steps are required to get that working.

However, since that content can be quite large, you have the option to store it outside the database by setting the STORAGE_DRIVER environment variable.

https://github.com/laurent22/joplin/blob/dev/packages/server/README.md

默认,Joplin Server 会使用 PostgreSQL 来存储 内部数据笔记内容。 但也提供了 STORAGE_DRIVER 环境变量,可能修改配置,让笔记内容放其它地方,如本地的文件系统。如果你的附件很多,使用空间大,建议考虑不要放到默认的 PostgreSQL 。我没科学考虑过为什么,只是据过往经验,关系数据库一般不适合放大的数据文件。备份一个大数据库是个痛苦的事情。数据库本身,数据库接口本身,也不是为大文件设计的。好了,说了太多题外话了,我的程序员职业病又来了。

我的 Self-Hosting 架构是:

我主要是参考了以下资料:

https://github.com/laurent22/joplin/blob/dev/packages/server/README.md

https://hub.docker.com/r/joplin/server

https://discourse.joplinapp.org/t/guide-for-joplin-server-on-raspberry-pi/14702

https://hub.docker.com/r/florider89/joplin-server

https://discourse.joplinapp.org/t/joplin-server-documentation/24026/13

结语

一如以往,这里没提供一个具体的教程。只说了可以有什么可能的功能或特性,和讨论一下这些东西的价值。想折腾的同学自然有方法找资料。不想折腾的同学,也可以作个笑点来看看。

个人经验是,尝试用一个笔记平台去记录你的所有笔记,往往不是最好的选择。如:

  • 技术长文

​ 可能 《持续学习和关心个人资讯的IT人,为何考虑学点 self-hosting》 中说的 vscode server + git 才是合适的选择。Joplin 的定位更像一个日常事务的笔记 Self-hosting 方案。

为何不上体验更好的 Obsidian ? 因为有时 Open Source 比体验更重要。当然,没买 iCloud 的我抠门也是原因之一。Obsidian 的文件结构存储的确比较让人放心,但你不知道程序是怎么跑的,也不知道那个公有云如何对待你的数据。

我用 Joplin 的时间也是一个月多点,所以,后面发现什么问题,如坊间流传的丢笔记时,再在这里补充吧。

分享

Mark Zhu
作者
Mark Zhu
An old developer