目录
个人知识管理系统 ver 0.1
从很早以前就困扰我的一个问题就是没有一个很好的办法, 来管理个人知识. 从小学到高中使用纸质笔记本, 大学使用了 Evernote, OneNote, 之后又陆陆续续用了 NoteShelf, Bear, SimpleNote, 但是感觉还是没法满足全部的需求. 最近又动了折腾的心思, 今天搞了一个 0.1 版本, 在这篇博客分享一下.
需求分析
目前我个人大概有这几种类型的记录需求, 不代表大多数人的场景.
名称 | 记录形式 | 条理化程度 | 拓扑结构 | 例子 |
---|---|---|---|---|
阅读笔记 | 手写 | 低 | 线性 | 读书笔记 |
整理后的笔记 | 电子 | 中 | 线性 | 源码阅读笔记 |
知识点 | 电子 | 高 | 网状 | 各种概念 / 设计 / 算法 |
博客 | 电子 | 高 | 点状 | 博客 |
考虑到这些需求的差异性, 我打算同时使用多种方式来满足这些需求.
- 纸质笔记本 + NoteShelf 满足阅读笔记的需求.
- 使用以”书”为单位的 BookStack 满足整理后的笔记的记录需求.
- 使用维基系统 WikiJS 满足知识点的记录需求.
- 使用个人博客 满足博客的记录需求.
VPS 选择
各大 VPS 相同价格的机器差不多, 比如 Vultr 最低配置为 1G 内存, 1CPU, 5 美金一个月. 我尝试了一下在这个配置的机器上使用 Docker 部署, 非常吃力, 一直报 Out of Memory. 然后我找了一下有没有便宜一点的 VPS, 然后发现了这个叫 SSDNodes 的提供商, 感受一下这个价格. 不过看上去好像是正在促销, 难道是我运气这么好, 第一次听说就正好在促销, 力度还这么大…
部署
由于博客之前就搞好了, 所以今天只搞了一下 BookStack 和 WikiJS.
BookStack 和 WikiJS
BookStack 支持使用 Docker 部署, 需要使用数据库 (我使用了 MySQL) 同时需要指定访问 BookStack 的 URL. 我刚开始配置的时候因为想先部署在配置域名, 所以就先放着没配, 之后一直遇到没法加载 CSS 之类的问题. 所以加上 TODO 对我这种健忘的人来说还是有必要的…
WikiJS 也支持用 Docker 部署, 也需要使用数据库 (我也使用了 MySQL).
这里附上一个 Docker Compose 的样例配置文件. Bookstack 的官方文档有几个参数名错了, 样例文件里是对的. 可以通过执行以下命令部署:
1 | export DATA=/some/path # 数据库文件的宿主机路径 |
反向代理
作为一个贫穷的人, 我只买了一个机器, 部署这两个服务. 所以我又跑了一个 Nginx 做反向代理, 分别将 wiki.nearsyh.me 和 books.nearsyh.me 转发个对应的服务. 之前也没用过 Nginx, 今天花了几分钟糙快猛写了个配置文件, 结果也没遇到啥问题. 配置如下:
1 | http { |
SSL 配置
SSL 我使用了 Certbot 来签发证书. 它会自动更新 Nginx 配置, 还是挺方便的. Ubuntu 系统中指令如下
1 | add-apt-repository ppa:certbot/certbot |
未完成的使命
因为刚开始搞的时候光顾着部署 Wiki 和 Bookstack 了, 写这篇博客的时候才意识到 Nginx 也可以用 Docker 部署, 之后可以考虑改进一下. 另一个问题是现在这些数据都保存在了本地数据库里, 得想一想如何备份和迁移数据.
2020-02-06 更新
WikiJS 支持同步到一个 Git 仓库, 解决了 Wiki 的备份问题.