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 自部署:https://docs.getoutline.com/s/hosting/doc/hosting-outline-nipGaCRBDu
- Autheila 自部署:https://matwick.ca/authelia-nginx-sso/
- 随机密码生成工具:https://onlinetools.com/random/generate-random-string