从零开始使用开源文档/Wiki软件 Outline(一)

本篇文章将介绍一款适用于个人或团队场景使用的开源 文档/ Wiki 软件,Outline。

在介绍如何部署使用之前,先聊聊为什么我会选择它。

写在前面

作为一个 Confluence 重度用户、前 EverNote 重度用户,我觉得有必要聊一下我对文档、笔记、Wiki 软件的一些看法。如果你仅对部署环境感兴趣,可以直接跳转文章下面的章节。

为什么要切换笔记/Wiki 软件

熟悉我的朋友了解我是 Confluence 重度用户,不少个人数据都存放在私有化部署的实例上,之前还额外购置了一台 NUC,用于低成本的跑这个服务,以及折腾过不少公开或还未公开的优化方案,关于部分 Confluence 部署和运维实战相关的文章,如果你感兴趣,可以翻阅这里。

然而,在之前官方公布,不再出售授权,仅提供海外的在线 SaaS 服务,虽然我的授权会在 2022 年到期,但是考虑到长久使用,免不了要未雨绸缪,看看有没有更好的替代方案。

为什么选择了 Outline

我目前已经使用这款软件两个月有余,在确认选择之前还是比较“折腾”和“犹豫”的。

影响我选择新工具的主要因素有三个:首先是书写体验要能够接近或优于 Confluence,接着是我能够拥有对输入内容的绝对管理权,能够放心的使用工具进行创作和内容管理,最后是使用工具的综合成本要相对低一些。这么组合下来,可供选择的“成品”就少了许多:

  • 国内外不乏一些工具提供 SaaS 方案,有免费的,也有费用比 Confluence 高一些的,或是从资源配额上进行限制,或是从协作人数上进行限制,在预算之内能够解决问题自然是最好的,但是工具厂商为了“续费”、为了能持续盈利活下去,或者扩大账面上的数字拿更多的投资,很少做到完全将用户数据处置权完全交给用户,而且几乎没有能够将数据完全自托管管理的,这和 SaaS 生态模式和当前严峻的付费环境有关,软件和用户相互提防,挺没意思的。
  • 国内外也有一些开源或闭源的具备自托管能力的工具方案,但是这些方案起步时间比较早,产品策略上多数是对标早些时候类似 EverNote 这类纯粹的笔记软件,产品在内容创作场景和内容管理逻辑上和 Wiki 类产品差别还是有不少的,我比较反感“无效囤积”素材,尤其是软件默认逻辑可能就是如此。“知识库”类的工具光是解决了“书写”和“采集”的需求是不够的,还要解决“用”的问题呀。
  • 此外,Confluence 之前每年授权费用只有 10 刀,大概60块钱左右,相比较当前各种产品的费用,还是比较低的,如果考虑长期使用,采购一台小主机,容器启动起来就完事了。(相比较云主机同等配置资源要更便宜实惠一些)
  • 至于维护成本,Confluence 维护成本其实不算低,只不过在长时间维护过多个实例后,几乎踩遍了各种坑、手熟之后,倒也还好。如果再次选择方案,我会优先选择技术栈简单、代码开放的工具,如果不开放代码,那么在数据存储上需要有明确规范的工具。

在遍寻和尝试了各种软件之后,我将目光聚焦到了 Outline 上,一款目标是成为成长性团队使用的 Wiki 和知识库的软件,它直观的优点有这些:

  • Outline 是开源软件,软件由 Node 编写、数据库为 Postgres 9.x +、可以使用 Redis 作为缓存、部分存储使用 S3 兼容的对象存储协议。允许用户随意改动和进行私有化部署,所有数据由用户自己掌控,只要用户改造后不推出和官方一样的云服务进行商业化竞争即可。
  • 软件界面中提供类似 Obsidian Publish 的悬浮卡片,能够在不切换上下文的情况下,快速了解工具内其他内容的概要,比较节约上下文切换时间。
  • 支持团队协作、以及分享功能,但是并不是强制要求使用的,对于个人使用场景、或小团队私密使用的场景,就显得非常友好了。
  • 另外,所有的文章数据均允许直接导出(默认格式为 markdown)、同样的,你也可以使用 API 或者编写自己的小工具快速进行整站内容的转换和导入。

当然,软件处于快速迭代期,缺点也有不少。我个人认为之所以有这些原因,主要的原因是 Slack 生态下对于这些问题都有解决和补充,从 Slack 生态剥离,产品逻辑自然需要进行调整,功能也自然就需要进行补充了:

  • 软件之前是重度绑定在 Slack 生态下的,很多功能和 Slack 深度绑定,私有化部署一度只支持使用 Slack 、GitHub 三方 OAuth 进行登陆授权。目前维护者正在着手解决身份验证相关的问题 ISSUE#1945,应该在接下来几个版本中,我们就能够看到实质的变化(在团队使用场景中)。
  • 目前还不支持评论功能,官方正在着手解决。ISSUE#457
  • 目前对于附件管理功能也是缺失的,官方计划在未来两个版本中着手解决。ISSUE#859不过目前其实有挺多解决方案的,后面的文章中我会进行展开,聊聊最简单的方式。
  • 等等

虽然问题不少,但是这些问题对于个人和小团队使用来说,或许并不是最主要的问题,而且有非常多低成本解决方案。

接下来,我们来聊聊如何简单快速的私有化部署这套软件吧。

使用容器进行私有化部署

早些时候,我在 GitHub 上提交了示例代码:https://github.com/soulteary/docker-outline,为了降低配置复杂度,在这个例子中同样使用 Traefik 作为服务 关,如果你对 Traefik 还不熟悉,可以翻阅之前的内容进行了解《更简单的 Traefik 2 使用方式》,以及一些 Traefik 实战例子来加深理解。

在 Traefik 服务就绪的环境下,我们只需要几个步骤就能够将 Outline 跑起来。

步骤一:下载示例代码

首先,将示例代码下载到本地。

如果你在下载过程中遇到了 络问题,可以使用镜像地址:

步骤二:创建你的配置文件

先复制一份配置文件,将新配置文件命名为 ,修改其中你“介意”的地方:

我个人推荐修改以下配置:

所有的域名相关的配置,使用你自己的域名进行替换。

密钥相关的配置,你可以参考注释中的链接或生成方法,手动生成一份,如果你是在私有 络运行,不修改问题也不大。

如果你希望使用你自己的用户名进行登陆,而非使用 SSO 服务默认使用的 用户进行登陆的话,则需要修改下面的配置,避免登陆被 Outline 拦截。

默认的 SSO 使用的用户账 和邮箱,我在 soulteary/docker-sso-server 这个项目中有提到过,目前项目默认使用的用户配置信息如下:

  • 用户: ,
  • 密码:
  • 邮箱:

如果你想定制生成属于你的信息,可以使用 授权协议在线生成工具 ,生成属于你的授权文件。

步骤三:启动应用

根据你的实际情况,创建一个属于 Outline 的虚拟 卡,让各种应用之间能够相对独立的进行数据通信,如果你已经创建过了,那么可以跳过这里,继续浏览如何启动应用。

接着使用 选择各种应用配置,一键启动应用所需的各种服务:

命令执行后,不出意外,你将会看到类似下面的日志输出:

但是此刻我们还不能使用 Outline,服务首次启动后需要做一些初始化的操作,但是放心,这些操作都是自动化的。只需要稍等片刻,等待服务启动就绪就可以了。

我们,可以通过下面的命令来检查服务运行状态是否健康。

当你看到类似下面的日志内容的时候(服务状态都展示 ),我们就能在浏览器中访问之前我们在配置中设置的域名,来使用 Outline 了。(本例中我设置的域名是 )

不出意外,你将看到类似下面的界面。

在“步骤二:创建你的配置文件”提到过如何自定义用户名和密码,以及默认用户名和密码。我们使用设置好的账 密码登陆,将会被引导到 OTP 工具设置界面。

因为首次使用时间太久,用于认证的参数过期,我们可能会被重新重定向到 Outline 的首页,这时放心的再次点击“使用 MySSO 继续”,稍等片刻就能看到 Outline 的“真身”了。

此外,如果你对于默认的应用名称“Wiki”也有个性化的需求,可以修改设置界面里的“团队”名称,来完成内容更新。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月4日
下一篇 2021年8月4日

相关推荐