前言

我最初了解到 Outline 这个开源项目是因为另一个开源项目,也叫 Outline,不同的是它是用于搭建私有 VPN 服务的。偶然的契机下,我在 Github 上发现了 Outline 这个项目,没想到在时隔两年后,我在工作中用到了它。

上一篇文章中说到,我在搭建完 Wiki.js 系统,并在团队内部小范围推行起来,经过几天的使用后,决定放弃。原因如下:

  1. 权限管理极其复杂
  2. 对于非技术人员非常不友好
  3. 渲染速度很慢
  4. 权限管理方面还存在一定的 Bug

当然对于我们来说,最主要的还是上手成本过高,对于我们技术人员来说都是如此,更何况是公司的其他非技术成员呢。在放弃 Wiki.js 后我想起了之前在 Github 上看到的 Outline,于是决定花一上午时间来研究一下,并部署一套可用的环境。

介绍

Outline 提供了 Cloud 版本,也支持 Self-Host 模式,对于想尝试的小伙伴,可以先试用 Cloud 版本,不用自己部署。再了解了功能和特性以后再结合自身的需求决定是否需要内部部署。

在我看来 Outline 对比 Wiki.js 的优势如下:

  1. UI 简洁美观且高效
  2. OAuth 支持非常好
  3. 支持丰富的第三方内容嵌入文档(这点很多平台都无法做到,只能说多文本编辑器非常强大)
  4. 简单直观的权限管理和文档共享
  5. 基于 Websocket 长连接实时保存

Outline 虽然有以上优势,但是也有局限:

  1. 文档的组织结构单一,不支持多级目录
  2. 不支持多团队管理(原作者表示在 Cloud 和 Enterprise 版本中提供支持)
  3. 不支持评论等操作(这个功能已被列入开发里程碑)

虽然在团队管理方面还不是很强,但是足以满足我们目前的需求了,所以我们决定使用这个开源项目来搭建内部的知识系统。

安装

我是参考官方文档进行部署的,在这过程中也遇到一些问题:

创建数据库失败

因为在 docker-compose.yml 中指定了 PostgreSQL 的数据库,容器启动后会自动创建,所以在执行官方文档中的命令会失败:

docker-compose run --rm outline yarn db:create --env=production-ssl-disabled

这里直接跳过这个命令就可以了!

多域名登录问题

剩下按照官方文档进行配置就可以了,另外需要注意的一点就是 Outline 对成员的邮箱后缀的域名有一定限制,如果团队成员的邮箱不是同一域名下的,那么需要管理员在后台添加上对应的邮箱域名后缀。

设置方法:访问 Outline 域名下的 /settings/security URL,在最下面有 Allowed Domains 选项,在里面添加上对应的 TLD 即可。

使用

Outline 的文档组织方式和我之前用过的其他文档系统有些不同的是,它是开放式的组织形式,主要是将多个文档整理成一个集合,至于文档之间的先后循序是可以通过拖拽来排放的。

而文档的层级则是通过子文档来实现,可能这也就是它比较简单的原因吧。

对外分享

Outline 可以将文档对外分享,点击分享后会生成固定的链接,但是仅支持单个文档的分享而不支持文档集合的分享。

不过细想一下,这样可以倒逼我们组织文档结构的时候去思考如何才能够合理的组织文档结构。在正常情况下我们很少需要将整个文档及对外开放,往往是需要将我们希望让对方知道的一小部分内容,进行共享。

那么我们只需要将需要共享的内容整理到一个文档中,然后对外共享就可以了。

总结

使用 Outline 后,我发现写出来的文档好看了很多,而且不用花太多时间在一些而外的心智负担上,唯一需要注意的就是知识结构的梳理。Outline 给了我们还给我们留了后悔药——后期可以任意拖动文档重新组织知识结构。

I hope this is helpful, Happy hacking…