说说过去
对于程序员来说,有时候会有很多灵感爆发出来,然后这个时候就需要一个很灵活的笔记本能够记录自己的所思所想,快速的把想法沉淀到纸面上,而我也一直在寻找这样的一个好用的notebook。
我曾经用过好多款的notebook,但是或多或少的不是特别符合我的需求:
- notion 笔记应用中的神器了,因为是商业化的有一些限制的,或者有一些个人隐私的内容不方便记录,试用了一段时间后放弃
- trilium 也算是一个非常好用的笔记本了,优点就是无线层级,并且能快速记录每日的一个笔记,缺点可能就是颜值过低,然后数据存储是Sqlite,使用了很长一段时间后放弃
- 语雀 国产的笔记软件,它的定位是类似于wiki这样的模式,创建一个文档还是比较繁琐,至少需要连续点3击三次以上,我要的是点击一次就能创建一个文档,给提了需求无果以后放弃。
- 蚂蚁笔记 蚂蚁笔记实际上是国内各种社区上推文比较多的一款了,文档也很详实,但是因为开源不再更新,所以不考虑使用
- standardnotes 这个是用截止到目前用的时间最长的笔记软件,够简洁,但是毕竟作为一个开源的商业化软件,自建的文档写的不是特别详细,很多功能都能设置,但是不生效,备份措施很多,但是只局限于付费会员(也不提供开源的方法配置),所以我一直在寻找替代品
- dailynotes dailynotes是一款小众的开源笔记本,它的作用主要是以日期为标题记录一些工作内容,当天的todo啥的,非常好用,一开始只支持了Sqlite,但是我看完源码之后,发现非常简单,进行了一些自定义的改造和自动化部署,一直把它当做每日todo在使用,现在还用着,非常好用
- wikijs wikijs是一款我用来替代standard notes的笔记本,部署简单,操作简单,但是它的作用还是wiki类,创建一个文档,至少要点三次,所以找到替代品以后无奈放弃
- outline 这个我发现的最晚,但是发现是最好用的笔记本,部署比较简单,但是需要的组件比较繁琐,需要PostgreSQL、自建的oidc登录、aws s3或者兼容的tencent cos等,主要是有层级结构,颜值还行,操作简单,我创建文档点一下就可以,备份也很简单,会帮我直接存储到tencent cos上,不用担心数据丢失。
我对Notebook的要求也比较简单:
- 支持web页面访问,我有几个电脑,用软件的话一个一个下载怕是要疯
- 创建文档或者笔记简单,最好是点一下就可以,并且支持markdown编辑器
- 备份简单,最好能直接备份我的原始markdown文档,不给markdown重命名或者添加一个特别的标签
- 数据安全 数据安全最合适的方法就是开源笔记,数据都在自己手上,不用担心泄密
说说当前
自从发现了outline以后,我还尝试着去注册,试用一下,然而在官网给了我致命打击,只支持组织类的账户注册,还都是google/slack等软件,然后发现开源,我就试着看对应的搭建文档,总体还是比较简单,它面向的客户主要是企业类客户,所以很多方面设计是偏向于企业化设计的,包括组件,刚好我有一些替代品:
- PostgreSQL 刚好我有自建的,没有成本直接使用
- Redis 刚好我有自建的,没有成本直接使用
- Mail 刚好我有自己的邮箱服务器,也是可以直接使用
- OIDC 刚好我自己一直在使用的web层sso软件: authelia 支持OIDC,简单配置一番即可使用
- AWS S3 我是长期使用tencent cos 它是兼容s3协议的,虽然稍微有些不完美,但是还是可以使用,这个备份的文件直接存储到cos上
一切就是那么的巧合,我迫不及待的创建好数据库和对应的账户,创建好cos的存储桶和单独的ak,配置基于authelia的OIDC,那么一切就开始了,就很简单,创建好.env
然后放入在github仓库中复制的模板,创建好docker-compose文件,一键启动。
数据迁移
数据迁移一直是一件比较难受的事情,我之前从standardnotes迁移到wikijs 在周末的深夜花了两三个小时,迁移我的接近100多篇的各种文档,然后第二天睡醒就感觉wikijs可能用不长久了,因为创建一个文档要点三次以上。
然而outline的迁移远比我想象的要简单,直接把wikijs的github上的备份仓库下载下来,然后直接把markdown里面的标题等信息全部手动移除,直接导入到outline就可以了,它支持直接导入文档,我只花了十几分钟来去掉markdown里面的多余信息,就完成了备份迁移过程。
我目前使用的开源软件
使用开源软件最多的目的是为了减少数据泄密,还有方便自己的生活,列举一下我目前在使用的开源软件
- bitwarden 开源的密码管理软件,我用的是社区爱好者自己根据官方的接口进行重新实现的版本,它搭配chrome的bitwarden插件我压根没手动输入过密码,而且我的绝大多数密码都是复杂密码,不用担心账号被盗取
- authelia 开源的SSO,它可以直接在Nginx层配置没有账号密码管理的软件,给他们套上一层登录,减少了大量的账号系统的开发工作,它目前在防护我的web版ssh页面、大学毕业班级相册、包括OIDC的outline等服务
- squoosh 是google开源的图片压缩软件,我主要担心图片被泄露,所以打包开源代码自建了一个,放在cdn上也能加快访问速度,它是完全本地化的图片裁剪,不会把图片存储到服务器上
- sshwifty 颜值比较高的还比较简单的web版ssh管理工具,用过很多,要么特别重,要么颜值很低,这款比较轻量,我在前面套上authelia提供的SSO,也不用担心被随意访问我的私人服务器
- dailynotes 目前使用的每日记录工具,它和notebook的区别是以当天日期记录的一个笔记,适合用来做日常工作todo,时间久了往前倒倒看最近每天或者过去一个阶段做了点啥,还是比较合适,比较轻量,导出备份也是特别简单
- grafana 这个主要是用来看云服务器监控指标,属于运维类的,平常使用率不是特别高
- serverStatus 主要是用来看云服务器的基础指标,部署和使用都比较简单
- outline 日常使用的笔记本,目前使用起来非常顺畅,导出数据也是很简单
- portainer docker容器的管理软件,基本上用它来在线看各个机器上的docker指标等信息
- cloudbeaver 在线的mysql等的链接工具,直接在网页上使用,平常如果换到陌生机器的话不用安装软件就可以直接快速查找数据库
- …其实还有一些,但是因为使用频次不是特别高,所以没有特别的列举出来
总结
这篇文章主要就是讲述一下我的网络版notebook的软件使用历史,一个好用的工具能让你节省很多的时间和精力,并且能让你的思绪能够快速的被记录下来。工欲善其事必先利其器,我算是一个喜欢折腾的人,平常会收集很多自己常用的软件,大部分是开源软件,对于我来说数据安全得到了保障,并且能增加我的阅历和生活,给无聊的生活带来一些乐趣,像OIDC这种东西,如果不是运维啊什么的,基本上很难去接触到,这也算是对自己技术能力的一个提升。
我对现代化软件最大的期望就是都能够在浏览器里直接运行,并且最好能在国内访问,这样速度和安全性都能得到保障,安装软件还算是一件比较痛苦的事情。
作为喜欢使用开源软件的程序员,也是深深的感谢开源文化,我日常也在积极参与开源,不局限于给常用的软件提PR,提升用户体验和自己的一些体验,自己也有一些开源的项目,比较简单,就主要是为了增加自己各种项目的自动化进程,减少人工干预。