600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于Outline构建团队的知识库 (上篇)

基于Outline构建团队的知识库 (上篇)

时间:2019-12-26 19:11:26

相关推荐

基于Outline构建团队的知识库 (上篇)

本文是网友要求写的,文章有点长,为了便于阅读分成了上、下两篇,上篇主要是一些前期的准备工作,下篇才是正式的安装

什么是 Outline ?

Outline是使用ReactNode.js构建的开放、可扩展的wiki,美观,功能丰富,并兼容Markdown,是适用于成长型团队的最快wiki和知识库。

如果你不想自己部署,可以去官网:/ 看看

前言

最早折腾Outline是去年11月,当时遇到了认证的问题给搁置了,直到最近有网友问起,才又捡起来研究。

OutlineDocker部署并不难,只是环境变量有点多,仔细一点应该是没问题的,麻烦的是Outline不支持本地认证,也就说Outline不支持电子邮件 + 密码的身份验证方式,而需要借助第三方认证,比如GoogleMicrosoft / AzureOIDCSlack等等,至于LDAPSAML则只会包含在企业版中,不会包含在开源代码库中。考虑到Google在国内访问的麻烦,老苏第一次选了Microsoft,结果反而还遇到了问题(具体的问题后面有描述)。

这回老苏改换用Slack做第三方认证,总算顺利的搞定了。

部署的方式用的是docker-compose命令行,没有用portainer的原因是因为用到了环境变量文件,而portainer并不支持搜索主机的绝对路径,变通的办法是给portainer映射卷,然后把环境变量文件放到映射的卷里

能不能用群晖的docker管理器?老苏觉得应该可以,只是容器多,环境变量多,调试的时候很不方便,现在也懒得再去重新改了,最近工作比较忙,这么多图弄起来也是不小的工作量。

安装

下载镜像

开始是打算过用portainer安装的,考虑到deploy the stack的时候看不到镜像的下载进度,所以老苏把要用到镜像都先下载了

Outline依赖下面这3个软件,所以一共要下载四个镜像:

PostgreSQL (v12+)Redis (v4+)Minio, S3, or S3 兼容对象存储服务

在注册表中搜索postgres,选择第一个postgres,版本选择latest

在注册表中搜索redis,选择第一个redis,版本选择latest

在注册表中搜索minio,选择第一个minio/minio,版本选择latest

关于minio可以看老苏之前写的:『 拥有自己的MinIO对象存储服务器 』,原本开始准备用Fake S3的,因为不熟悉所以改了。

在注册表中搜索outline,选择第一个outlinewiki/outline,版本选择latest

准备域名

用第三方认证涉及到回调地址,所以需要有可以访问的域名,老苏准备了两个

分别用Nginx Proxy Manager做了反代处理

其中:

192.168.0.197为群晖的IP6070是准备分配给Outline的端口

SSL设置里全部勾选了

另一个地址https://s3.laosu.ml

9100是准备分配给Outline API的端口9101是准备分配给Outline Console的端口,出于安全性考虑,并没有将9101映射到公网,所以不能通过Web从公网来访问Console,只能在局域网中通过http://192.168.0.197:9101访问

SSL设置里全部勾选了

还需要在Advanced-->Custom Nginx Configuration中填入👇下面的内容

参考:https://docs.min.io/docs/setup-nginx-proxy-with-minio.html

# Proxy requests to the bucket "outline" to MinIO server running on port 9100location / {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Host $http_host; proxy_connect_timeout 300;# Default is HTTP/1, keepalive is only enabled in HTTP/1.1proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;proxy_pass http://192.168.0.197:9100;}

其中proxy_pass http://192.168.0.197:9100;要改为你自己的局域网IP+ 端口

获取认证信息

关于第三方认证,参考的是官方的文档:/share/770a97da-13e5-401e-9f8a-37949c19f97e/doc/authentication-7ViKRmRY5o

微软认证虽然失败了,但还是记录了过程,方便后续发现问题,如果你们看出来,请一定告诉我,当局者总是迷的

微软(失败)

打开网址:找到Azure Active Directory

左侧菜单中找到应用注册,选择+ 新注册

注册应用程序中填入 应用的名称账户类型选择仅此组织目录中的账号重定向URI中选择Web,后面的地址填入

https://域名/auth/azure.callback,也就是https://ot.laosu.ml/auth/azure.callback

实际上老苏因为没有备案的缘故,域名后是带端口的,但在不影响理解的情况下老苏的描述一般会忽略端口的存在;

注册后,客户获取到Client ID

这个值对应着AZURE_CLIENT_ID

左侧菜单API 权限,选择+ 添加权限

选择Microsoft Graph

委托的权限-->OpenId 权限中勾选emailprofile,然后点下面的添加权限按钮

添加完成后可以在列表中找到

左侧菜单证书和密码,选择+ 新客户端密码

用了默认的截止期限,可以自定义

添加完成,可以获取到AZURE_CLIENT_SECRET

注意不是机密 ID,而是前面的

左侧菜单清单,查找resourceAppId

这个值对应着AZURE_RESOURCE_APP_ID

Slack(成功)

打开网址:/apps,登录后点Create an App创建一个新应用

如果还没有账号,需要先注册一个

填入相关信息,比如App nameicondescription等,然后保存

老苏懒得改,都用的默认值,反正就是测试而已

左侧菜单中找到OAuth & Permissions,在Redirect URLs的地址填入

https://域名/auth/slack.callback,也就是https://ot.laosu.ml/auth/slack.callback,点后面的Add按钮之后,别忘记还要点Save URLs按钮

和前面一样,老苏忽略了端口,真实的域名实际上是带端口的

往下找到Scopes-->User Token Scopes,通过Add an OAuth Scope添加identify.avataridentify.basicidentify.emailidentify.team左侧菜单中找到Basic Information,下拉找到App Credentials,找到Client IDClient Secret

其中Client ID对应docker.env.txt中的SLACK_KEYClient Secret则对应着SLACK_SECRET

到这里,前期的准备工作就差不多了,下篇开始正式进入安装环节

参考文档

outline/outline: The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.

地址:/outline/outline

Outline – Team knowledge base & wiki

地址:/

Use Fake S3 to simulate and test APIs of Amazon S3 in a sandbox environment | Devforgalaxy

地址:https://zeckli.github.io/en//02/14/use-fake-s3-to-test-aws-s3-api-en.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。