故事的起源是一个由于线性代数期末考几道计算题卡住算不出来折腾半天而考后看某课代表提前交卷又感觉人均 AK 了以致十分 emo 想要暂时逃避学习的下午。

TL;DR

思源笔记最好。快去用。

传统方案

一直以来我记笔记的方案都是本地 Typora + Git 用 Markdown 写各种笔记,然后服务器上部署 Docsify 用 Crontab 设置每天定时 git pull 一次,展示在 wiki.skywt.cn。不过长此以往,渐渐觉得这种方案难以满足我的需求:

从 Notion 而来的需求

Notion 界面

Notion 可以是非常优秀的知识库软件,界面美观、功能强大、理念先进,但是存在一些问题:

于是我的需求大概是:

概览

是的,在这个无聊的下午,我找到了六款 Notion 的 Alternative,逐一安装尝试了一番。

以下简单列出了我的一些体验感受。加粗的是直接劝退条件。

注意:本文仅针对建立「学习笔记&知识库系统」这一方面对这些应用测评,很多应用(如 Notion)除此之外还有团队协作、项目规划以至于建立 GTD 系统等等用途,而其他应用(如思源笔记)则没有,不代表各个方面某应用绝对的优胜性。

Outline:这是想给人部署的吗??

Outline 的定位是「团队知识库」,我正是被这优雅的界面设计打动的。

Outline 官方 demo 截图

和大多数开源软件的商业模式一样,Outline 提供了收费的在线版(30 天免费体验,而且不支持个人用户)和可以自己部署的开源版本。自己部署就是「折腾而白嫖」的一种方式,说得好听点就叫做「技术变现」吧……

然而这个软件好像设计之初就根本没有考虑个人私有化部署,吐血。

算下来,除了 outline 的容器,还得整上 minio,linx-server,postgres,redis,和一个 SSO 服务器。主要是我根本没接触过 AWS S3,也没接触过 SSO,这俩玩意足够折腾死我了。

逛了一圈,有大佬提供了 docker-compose 的版本,但是没搞清楚这些问题之前感觉整个程序就是一个黑箱,出了问题都不知道咋办,不太舒服。

于是放弃了 outline 的方案。

// 220203 Upd:成功部署了 Outline,体验很棒。

Trilium:直男 Geek 的最爱

总评:★★★★☆

说实话,一开始 Trilium 给了我惊喜。

没有什么依赖的服务,直接 docker run 一下就可以跑起来:

docker run -d \
  --name trilium \
  -p 8081:8080 \
  -v /data/trilium:/home/node/trilium-data \
  zadam/trilium:0.48-latest

逻辑和 Notion 类似,功能非常强大,对于每个文档可以自定义若干属性(一些归属于文档的键值对),也有不同的文档类型(文本、关系图、Mermaid 图、代码等),可以定义特殊的文档存放一些 js 脚本,通过属性可以调用这些脚本实现特定的功能。

例如,按下左边的 Today 按钮可以立即在 root > Journal > 年份 > 月份 文件夹下用每日模板创建一个页面并自动填好日期,而这一切都是在一个叫做 Today 的文档中的脚本实现的,由于这个文档设置了书签而会显示在左边侧栏。

所谓的「插件」统统可以通过文档内 js 实现。例如这个字数统计插件:

Trilium 的字数统计插件

有了这个文档,只要在文章属性中加上 #wordCount 标签,就会执行这里面的脚本显示文章的字数统计。

官方样例还给出了各种脚本建立 Todo List、可视化体重追踪程序等等一系列强大的用途。

只是,这个 UI……

Trilium 的默认主题界面

太丑了……(吐血)

这诡异的字体,这生硬的交互,这令人窒息的圆角矩形……这就叫做「直男审美」吧……
真的,开发者难道没有用过 Notion 吗?就不能学学吗???

好在 Trilium 支持自定义主题,只要建立一个文档,设置属性 #appTheme=themeName 就可以在 config 里看到名为 themeName 的主题了。

搞来 Notion 的配色,尝试调整了一下默认的主题:

Trilium 自定义主题后的界面

:root {
    --main-font-family: serif !important;
    --tree-font-family: serif !important;
    --detail-font-family: serif !important;
    --detail-font-size: 1.1rem !important;
    --detail-text-font-family: serif !important;
    --monospace-font-family: monospace !important;
}

.note-tab-wrapper {
    border-radius: 0 !important;
    background-color: inherit !important;
    border-bottom: 1px rgba(55, 53, 47, 0.4) solid;
}

span.fancytree-node:hover{
    background-color: rgba(55, 53, 47, 0.16) !important;
    border: none !important;
    border-radius: 0 !important;
}

span.fancytree-active, span.fancytree-active.fancytree-selected{
    background-color: rgba(55, 53, 47, 0.08) !important;
    border: none !important;
    border-radius: 0 !important;
}

.fancytree-node:hover .bx.tree-item-button {
    position: absolute;
    right: 15px;
}

#left-pane , #launcher-pane{
    background-color: rgb(247, 246, 243) !important;
}

.gutter {
    background: inherit !important;
    width: 4px !important;
    transition: 0.3s;
}
.gutter:hover {
    background: rgba(25, 23, 17, 0.6) !important;
}

.note-title-widget input.note-title {
    outline: none;
}

.include-note, .note-book-card {
    border-radius: 0 !important;
}

.note-split {
    max-width: 1000px;
}

然而最后我还是放弃了 Trilium。

总之,虽然不是特别适合我自己,Trilium 还是值得尝试的。

AppFlowy:为取代 Notion 而生的新秀

AppFlowy 似乎就是为了取代 Notion 而生的。

AppFlowy 官方 demo 截图

试用了一下,还是放弃了。

目前看来完全无法达到取代 Notion 的标准。可能未来会比较有潜力,不过目前还是不考虑了。

为知笔记:简陋到不够用

虽然为知笔记本身不是开源的,但是其提供了可以自托管的 Docker 镜像

 docker run -itd \
   --name wiz \
   --restart=always \
   -v /data/wiz:/wiz/storage \
   -v /etc/localtime:/etc/localtime \
   -p 8085:80 \
   -p 9269:9269/udp \
   wiznote/wizserver

AnyType:值得期待的颠覆

虽然这玩意还没发布,但是去看了下官网,感觉这个官网的设计就挺有意思的。

AnyType 提出了「对象」的概念,文档中每个页面或者段落、块都可以看成「对象」,在对象之间可以建立连接,贴近人的思维模式。这个理念比较有开创性。

不过第一个正式的版本还没发布。可以留个邮箱成为内测用户。我还是懒得折腾了。

思源笔记:最终的归宿

最后找到了「思源笔记」,在我看来是比较完美的解决方案了。

 docker run -itd \
   --name siyuan \
   -v /data/siyuan:/siyuan/workspace \
   -p 6806:6806 \
   -u 1000:1000 \
   b3log/siyuan \
   --workspace=/siyuan/workspace \
   --servePath=docs.skywt.cn \
   --ssl=true

注意如果用 Nginx/Caddy 反代走 https 则需要加上后面的 --servePath=docs.skywt.cn --ssl=true,否则不需要。

思源笔记界面

总体来说这个体验还是比较完美的。

缺点也不是没有:

总结

「工欲善其事,必先利其器」,虽然笔记软件只是工具,但是从纯文本到 Markdown,到块级双链的知识库系统,善用笔记软件有机会颠覆我们的思考方式和学习效率。