IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 基于Outline构建团队的知识库(下篇) -> 正文阅读

[系统运维]基于Outline构建团队的知识库(下篇)

本文所需用到的 2 个文件都放在这里👉:https://github.com/wbsu2003/synology/tree/main/outline/docker

文件下载后,还需要做些微调,比如要填入从 Slack 中获取的 Client IDClient Secret ,域名要替换为你上篇中准备好的 2 个。

老苏已经尽可能的把需要改动的地方减到了最少🙂

创建目录

docker 文件夹中,创建一个新文件夹,并将其命名为 outline,在其中再建两个子目录,分别是 datafakes3

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BJu1NARx-1646185707897)(https://cdn.jsdelivr.net/gh/wbsu2003/gitnote-images@master/picgo/2021/10/202111182254421.png)]

接下来用 SSH 客户端登录到群晖,下载需要的文件

# 进入目录
cd /volume2/docker/outline/

# 将 docker.env.txt 下载到 outline 目录
curl -sSL https://raw.githubusercontent.com/wbsu2003/synology/main/outline/docker/docker.env.txt -o docker.env.txt

# 国内用户如果下不动的话试试下面加代理这个
curl -sSL https://ghproxy.com/https://raw.githubusercontent.com/wbsu2003/synology/main/outline/docker/docker.env.txt -o docker.env.txt

# 将 docker-compose.yml 下载到 outline 目录
curl -sSL https://raw.githubusercontent.com/wbsu2003/synology/main/outline/docker/docker-compose.yml -o docker-compose.yml

# 国内用户如果下不动的话试试下面加代理这个
curl -sSL https://ghproxy.com/https://raw.githubusercontent.com/wbsu2003/synology/main/outline/docker/docker-compose.yml -o docker-compose.yml

下载的方式很多,不一定非要用命令行,也可以复制、粘贴,最终的目录结构是下面👇这样的

修改文件

docker.env.txt

环境变量有点多,老苏是基于官方的 .env.sample 文件修改的,原文件的地址:https://github.com/outline/outline/blob/main/.env.sample

老苏之所以不是用的默认的 .env 而是用了 docker.env.txt 命名环境变量文件,只是为了在群晖上方便编辑;

  1. 通用参数部分
#   –––––––––––––––– 通用参数 ––––––––––––––––
SYNOLOGY_IP=192.168.0.197
OUTLINE_URL=https://ot.laosu.ml:444
MINIO_URL=https://s3.laosu.ml:444
YOUR_SLACK_KEY=填入在 Slack 获取的 Client ID
YOUR_SLACK_SECRET=填入在 Slack 获取的 Client Secret

理论上你只要根据你的情况修改这部分,然后跳转到 一键启动 章节,执行完 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
  1. PostgreSQL 容器部分
#  –––––––––––––––– POSTGRES相关参数 ––––––––––––––––
POSTGRES_HOST=ol-postgres
POSTGRES_USER=outline
POSTGRES_PASSWORD=ec25cee20b82
POSTGRES_DB=outline

只要修改 POSTGRES_USERPOSTGRES_PASSWORD 即可,密码老苏习惯用 Bitwarden 的密码生成器

  1. Redis 容器部分
#  –––––––––––––––– REDIS相关参数 ––––––––––––––––
REDIS_HOST=ol-redis
REDIS_URL=redis://${REDIS_HOST}:6379

默认就好了

  1. Minio 容器部分
#  –––––––––––––––– MINIO相关参数 ––––––––––––––––
MINIO_HOST=ol-minio
MINIO_ROOT_USER=laosu
MINIO_ROOT_PASSWORD=N8L53ddpZjCt

只要修改 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 即可

  1. Outline 容器部分
OUTLINE_HOST=ol-outline
SECRET_KEY=c344e03be80679185357463d8e4b6e7c8395bb96efd16cc864647ac59cd6388c
UTILS_SECRET=500435ac8059e8ecf4ba3ec25cee20b01e4849ff469b8225eaf216115757121c
URL=${OUTLINE_URL}
PORT=3000

基础部分的

  • SECRET_KEYUTILS_SECRET 可以运行 openssl rand -hex 32 来生成
  • URL 用的是前面填写的 OUTLINE_URL 中的域名
  • PORTOutline 的内部端口,默认即可,不要去改

DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}
PGSSLMODE=disable

数据库部分保持默认即可

AWS_REGION=us-east-2
AWS_S3_FORCE_PATH_STYLE=true
AWS_S3_UPLOAD_BUCKET_NAME=outline
#AWS_S3_UPLOAD_BUCKET_URL=http://${MINIO_HOST}:9000
AWS_S3_UPLOAD_BUCKET_URL=${MINIO_URL}
AWS_S3_UPLOAD_MAX_SIZE=26214400
AWS_ACCESS_KEY_ID=${MINIO_ROOT_USER}
AWS_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD}
AWS_S3_ACL=private

存储部分只要改 AWS_S3_UPLOAD_MAX_SIZE,这个是上传文件的大小限制

AWS_S3 的详细设置可以参考 https://wiki.generaloutline.com/share/125de1cc-9ff6-424b-8415-0d58c809a40f

SLACK_KEY=${YOUR_SLACK_KEY}
SLACK_SECRET=${YOUR_SLACK_SECRET}

第三方认证只调通了 Slack,这里不用管,因为在基础部分已经填写了

FORCE_HTTPS=true
DEBUG=http
DEFAULT_LANGUAGE=zh_CN

这是一些杂项,一看就明白,建议默认就好了

docker-compose.yml

可能需要修改的有 2 处,其他默认即可

  • 老苏的 docker 安装在 volume2 ,一般大家默认是在 volume1
  • 外部端口为了避免冲突可能需要修改
  1. PostgreSQL 容器部分
  postgres:
    image: postgres
    container_name: ${POSTGRES_HOST}
    ports:
      - "5532:5432"
    volumes:
      - /volume2/docker/outline/data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "${POSTGRES_USER}"]
      interval: 30s
      timeout: 20s
      retries: 3

这部分可能需要修改的是外部端口,老苏已经尽量避开了

  1. Redis 容器部分
  redis:
    image: redis
    container_name: ${REDIS_HOST}
    ports:
      - "6479:6379"
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 30s
      retries: 3

这部分可能需要修改的也是外部端口

  1. Minio 容器部分
  storage:
    image: minio/minio
    container_name: ${MINIO_HOST}
    ports:
      - "9100:9000"
	  - "9101:9000"
    entrypoint: sh
    command: -c 'minio server /data --console-address ":9001"'
    #deploy:
    #  restart_policy:
    #    condition: on-failure
    volumes:
      - /volume2/docker/outline/fakes3:/data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

这部分可能需要修改的也是外部端口

  1. Outline 容器部分
  outline:
    image: outlinewiki/outline
    container_name: ${OUTLINE_HOST}
    ports:
      - "6070:3000"
    depends_on:
      - postgres
      - redis
      - storage
    command: sh -c "yarn sequelize:migrate --env production-ssl-disabled && yarn start"
    environment:
      - SECRET_KEY=${SECRET_KEY}
      - UTILS_SECRET=${UTILS_SECRET}
      - URL=${URL}
      - PORT=${PORT}
      - DATABASE_URL=${DATABASE_URL}
      - PGSSLMODE=${PGSSLMODE}
      - REDIS_URL=${REDIS_URL}
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_REGION=${AWS_REGION}
      - AWS_S3_UPLOAD_BUCKET_URL=${AWS_S3_UPLOAD_BUCKET_URL}
      - AWS_S3_UPLOAD_BUCKET_NAME=${AWS_S3_UPLOAD_BUCKET_NAME}
      - AWS_S3_UPLOAD_MAX_SIZE=${AWS_S3_UPLOAD_MAX_SIZE}
      - AWS_S3_FORCE_PATH_STYLE=${AWS_S3_FORCE_PATH_STYLE}
      - AWS_S3_ACL=${AWS_S3_ACL}
      - FORCE_HTTPS=${FORCE_HTTPS}
      - DEBUG=${DEBUG}
      - DEFAULT_LANGUAGE=${DEFAULT_LANGUAGE}
      - SLACK_KEY=${SLACK_KEY}
      - SLACK_SECRET=${SLACK_SECRET}

这部分可能需要修改的也是外部端口

假设你想增加其他的认证方式,比如微软的,首先需要在 docker.env.txt 填入相应的值

然后在上面👆添加即可

      - AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
      - AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
      - AZURE_RESOURCE_APP_ID=${AZURE_RESOURCE_APP_ID}

一键启动

SSH 客户端执行下面的命令

# 一键运行
docker-compose --env-file docker.env.txt up -d

# 一键运行(显示日志)
docker-compose --env-file docker.env.txt up

# 一键删除
docker-compose --env-file docker.env.txt down

非常简单,只要一条命令就能启动

第一次启动 outline 会停止

从日志看被 PostgreSQL 拒绝了

直接再次启动 ot-outline 即可,这次可以正常的写入数据了

时间很短

开始 ot-outlineCPU 会比较高,但很快就会降下来

删除也只要一条命令就可以

运行

在浏览器中输入 http://群晖IP:6070 就能看到主界面

没有设置任何第三方登录的界面

设置了微软认证的界面

跳转验证

认证成功后一直卡在👆上一个页面

设置了 slack 认证的界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-seBTBcsb-1646185707905)(https://cdn.jsdelivr.net/gh/wbsu2003/images2022@main/picgo/2022/02/202202171550192.png)]

申请权限,点 允许

会收到邮件

终于看到主界面了

如果注销了,使用电子邮件继续 就是填 Slack 的注册邮件地址

新建个文档试试,从写作上看和 notion 比较像,支持块操作
在这里插入图片描述

如果现在上传图片,左下角会显示下面的错误,因为 minio 并未自动初始化

有两种方式可以进行初始化,一种是增加 minio/mc 容器,一种是进入 minio Console 手动添加 bucket,老苏选择了后一种,感觉只是为了初始化增加个容器没必要,而且后续还需要通过 Console 来管理上传的图片

需要我们通过 http://192.168.0.197:9101 来访问 console,手动创建名为 outlinebucket

如果不会的,可以看看老苏之前写的 『 拥有自己的MinIO对象存储服务器

我们前面的设置都是按照 bucket 名字为 outline 来设置的,所以如果你改了 bucket 的名字,有两个地方要修改

  • Nginx Proxy ManagerAdvanced 中的代码
  • 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/outline

Outline – 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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:53:58  更:2022-03-03 16:56:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:41:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码