快速私有化部署文档系统 Outline

0

Outline 是一个开源的文档系统,可用于团队,也可用于个人,可以完全的做私有化部署。

为了能方便的部署 Outline,这里主要基于 Docker,项目基于苏洋的 从零开始使用开源文档/Wiki软件 Outline(一) 而来。

苏洋的 docker-outline 项目已两年没更新了,存在版本落后的问题,同时替换了 SSO 服务为 Authelia,以及剔除了一些多余的依赖项,主要包含 5 个服务。

  • Minio 兼容 S3 的对象存储服务,用于存储文档中的附件、图片等静态资源等,如没那么高的要求也可用本地的文件系统。
  • Authelia 兼容 OIDC 协议的身份认证 SSO 服务。
  • Postgres 数据库,存储服务。
  • Redis KV 缓存服务。
  • Outline 文档服务本身,前端基于 React,服务端基于 Node.js 的 Koa 构建。

苏洋的 docker-outline 可以基于 Traefik 作为代理服务,我把 Traefik 更换成了 Nginx,一方面更通用,另一方面可以让服务器的内存占用更小,如喜欢 Traefik 的可以参照前者。

对部署环境的要求:

  • 服务器硬件:内存至少 2GB。
  • 服务器系统软件:Docker、Docker Compose、Nginx、Git 等。
  • 子域名至少 3 个。

好了,有了上面的环境,可以开始部署了。

获取项目

通过 git 来下载项目。

git clone https://github.com/chenmnkken/docker-outline.git

创建 docker 网络

该项目的所有服务默认都运行在 outline 这个专用网络中,所以需要先创建出该网络。

docker network create outline

创建主要配置

.env 进行编辑配置。

vim .env

这里主要配置更换自己想要的的密钥和域名,其他基本不用动,后期如要升级相关服务的依赖,更换新版即可。

Outline 官方有提供配置模板,如要扩展可以进行参考。

SSO 的基础配置

在 authelia 目录中,有两个重要的配置文件。

  • configuration.yml 为主要配置,这里的域名需要和 .env 中的域名对应匹配。identity_providers.clients 则增加了用于 Outline 身份认证的配置,如其他服务需要 SSO,也可以在这里进行扩展。
  • users_database.yml 为身份认证的用户,这里的 username 则是登录时候的用户名,可以自定义修改,密码按照指定的方式配置加密后的结果,新增用户也可以在此进行扩展。

Nginx 配置

在 nginx 目录中有各域名对应的配置,需要注意的想要在指定域名中开启 SSO 认证,则需要使用 include 指令来引入对应的配置。

  • server 级的配置:authelia.conf。
  • location 级的配置:auth.conf。

开始使用

都配置完成后则可以启动 Outline 了,运行 start.sh 则能启动好所有的服务,nginx 的配置文件替换好后再启动 nginx,然后就能通过 docs.example.com 进行服务的访问了。

第一次访问会重定向到 sso.example.com,在这里输入对应的用户名和密码认证成功后再重定向回 docs.example.com,后面再登录时不用再次输入用户名和密码。

顺利进入 docs.example.com 后,还需要手动配置一下 minio,这里可以通过 http://$IP:9001 的方式来访问 minio 的控制台,进入控制台后手动创建一个名为 outline 的 Bucket,并设置访问规则为 public,这样就能正常上传附件和图片了。

至此,就可以开心的使用 Outline 了,如需升级迁移,请注意备份好项目根目录的 data 目录。

outline

参考

  • Outline 自部署:https://docs.getoutline.com/s/hosting/doc/hosting-outline-nipGaCRBDu
  • Autheila 自部署:https://matwick.ca/authelia-nginx-sso/
  • 随机密码生成工具:https://onlinetools.com/random/generate-random-string