基于Outline构建团队的知识库(下篇)
本文所需用到的
2
个文件都放在这里👉:https://github.com/wbsu2003/synology/tree/main/outline/docker
文件下载后,还需要做些微调,比如要填入从 Slack
中获取的 Client ID
和 Client Secret
,域名要替换为你上篇中准备好的 2
个。
老苏已经尽可能的把需要改动的地方减到了最少🙂
创建目录
在 docker
文件夹中,创建一个新文件夹,并将其命名为 outline
,在其中再建两个子目录,分别是 data
、 fakes3
接下来用 SSH
客户端登录到群晖,下载需要的文件
1 | # 进入目录 |
下载的方式很多,不一定非要用命令行,也可以复制、粘贴,最终的目录结构是下面👇这样的
修改文件
docker.env.txt
环境变量有点多,老苏是基于官方的 .env.sample
文件修改的,原文件的地址:https://github.com/outline/outline/blob/main/.env.sample
老苏之所以不是用的默认的
.env
而是用了docker.env.txt
命名环境变量文件,只是为了在群晖上方便编辑;
- 通用参数部分
1 | # –––––––––––––––– 通用参数 –––––––––––––––– |
理论上你只要根据你的情况修改这部分,然后跳转到 一键启动
章节,执行完 docker-compose --env-file docker.env.txt up -d
命令就可以正常使用了,惊不惊喜?意不意外?🤭,如果你要个性化或者了解更多,那就耐心往下看吧
SYNOLOGY_IP
是你的群晖的局域网IP
OUTLINE_URL
是你为outline
准备的域名,如果有端口也要带上MINIO_URL
是你为minio
准备的域名,如果有端口也要带上YOUR_SLACK_KEY
是你在Slack
获取的Client ID
YOUR_SLACK_SECRET
是你在Slack
获取的Client Secret
PostgreSQL
容器部分
1 | # –––––––––––––––– POSTGRES相关参数 –––––––––––––––– |
只要修改 POSTGRES_USER
和 POSTGRES_PASSWORD
即可,密码老苏习惯用 Bitwarden
的密码生成器
Redis
容器部分
1 | # –––––––––––––––– REDIS相关参数 –––––––––––––––– |
默认就好了
Minio
容器部分
1 | # –––––––––––––––– MINIO相关参数 –––––––––––––––– |
只要修改 MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
即可
Outline
容器部分
1 | OUTLINE_HOST=ol-outline |
基础部分的
SECRET_KEY
和UTILS_SECRET
可以运行openssl rand -hex 32
来生成URL
用的是前面填写的OUTLINE_URL
中的域名PORT
是Outline
的内部端口,默认即可,不要去改
1 | DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB} |
数据库部分保持默认即可
1 | AWS_REGION=us-east-2 |
存储部分只要改 AWS_S3_UPLOAD_MAX_SIZE
,这个是上传文件的大小限制
AWS_S3
的详细设置可以参考 https://wiki.generaloutline.com/share/125de1cc-9ff6-424b-8415-0d58c809a40f
1 | SLACK_KEY=${YOUR_SLACK_KEY} |
第三方认证只调通了 Slack
,这里不用管,因为在基础部分已经填写了
1 | FORCE_HTTPS=true |
这是一些杂项,一看就明白,建议默认就好了
docker-compose.yml
可能需要修改的有 2
处,其他默认即可
- 老苏的
docker
安装在volume2
,一般大家默认是在volume1
- 外部端口为了避免冲突可能需要修改
PostgreSQL
容器部分
1 | postgres: |
这部分可能需要修改的是外部端口,老苏已经尽量避开了
Redis
容器部分
1 | redis: |
这部分可能需要修改的也是外部端口
Minio
容器部分
1 | storage: |
这部分可能需要修改的也是外部端口
Outline
容器部分
1 | outline: |
这部分可能需要修改的也是外部端口
假设你想增加其他的认证方式,比如微软的,首先需要在 docker.env.txt
填入相应的值
然后在上面👆添加即可
1 | - AZURE_CLIENT_ID=${AZURE_CLIENT_ID} |
一键启动
在 SSH
客户端执行下面的命令
1 | # 一键运行 |
非常简单,只要一条命令就能启动
第一次启动 outline
会停止
从日志看被 PostgreSQL
拒绝了
直接再次启动 ot-outline
即可,这次可以正常的写入数据了
时间很短
开始 ot-outline
的 CPU
会比较高,但很快就会降下来
删除也只要一条命令就可以
运行
在浏览器中输入 http://群晖IP:6070
就能看到主界面
没有设置任何第三方登录的界面
设置了微软认证的界面
跳转验证
认证成功后一直卡在👆上一个页面
设置了
slack
认证的界面
申请权限,点 允许
会收到邮件
终于看到主界面了
如果注销了,使用电子邮件继续
就是填 Slack
的注册邮件地址
新建个文档试试,从写作上看和 notion
比较像,支持块操作
如果现在上传图片,左下角会显示下面的错误,因为 minio
并未自动初始化
有两种方式可以进行初始化,一种是增加
minio/mc
容器,一种是进入minio Console
手动添加bucket
,老苏选择了后一种,感觉只是为了初始化增加个容器没必要,而且后续还需要通过Console
来管理上传的图片
需要我们通过 http://192.168.0.197:9101
来访问 console
,手动创建名为 outline
的 bucket
如果不会的,可以看看老苏之前写的 『 拥有自己的MinIO对象存储服务器 』
我们前面的设置都是按照 bucket
名字为 outline
来设置的,所以如果你改了 bucket
的名字,有两个地方要修改
Nginx Proxy Manager
的Advanced
中的代码docker.env.txt
文件中的AWS_S3_UPLOAD_BUCKET_NAME
也要改
测试粘贴一张图片
在 minio console
中可以找到刚刚上传的图片
最后记录下版本
因为这个迭代比较快,很可能过一段时间就会有比较大的变化
结语
Outline
支持的认证中还有 OIDC
,也就是 OpenID Connect
,老苏正在研究的 Authelia
正好可以提供这种认证方式(虽然还是 β
版),如果一切顺利,就可以让 Outline
实现本地认证了。不过还需要一些铺垫,起码得先介绍 Authelia
吧。
技术上都已经调通了,只是最近工作比较忙,还需要时间来整理文字和图片。
参考文档
outline/outline: The fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible.
地址:https://github.com/outline/outlineOutline – Team knowledge base & wiki
地址:https://www.getoutline.com/Guide for installing Outline with Authelia as an OpenID provider | by Rigaut-Luczak Lola | Medium
地址:https://medium.com/@Lola_Dam/guide-for-installing-outline-with-authelia-as-an-openid-provider-129a141f6090