基于 Nginx All In One 的 Outline Wiki 部署方法

1. Outline 简介

官网:https://www.getoutline.com/

Outline 是一个开源的知识库和团队协作工具🧠,旨在帮助团队共享、组织和协作文档📝。它提供了一个简洁的界面,使用户能够轻松创建、编辑和查看文档。

以下是 Outline 的一些主要特点:

  1. 实时协作👥: 团队成员可以实时编辑和评论文档,提高协作效率。
  2. Markdown📄: 支持 Markdown 的大多数语法,包括高亮等。
  3. 文档组织📂: 用户可以通过文件夹和集合来组织文档,使内容易于查找和管理。
  4. 权限管理🔒: 可以设置不同级别的访问权限,确保敏感信息的安全。
  5. 集成第三方服务🔗: Outline 可以与 Slack、GitHub 等第三方服务集成,方便团队协作。
  6. 自托管或云服务☁️: Outline 可以在自己的服务器上托管,也可以使用官方提供的云服务。
  7. 开源💻: Outline 是开源软件,允许开发人员根据自己的需求进行定制和扩展。
  8. 自由导入导出🚚:Outline 支持一键式导出导入功能,格式可为 Markdown、HTML、JSON 等

Outline 宣传图

2. 文章目录结构

本文介绍了一种基于 Nginx All In One 的网络架构部署 Outline 的方法,目录结构如下:

0. 前言I. 需求II. Outline 简介III. 环境说明IV. Contact
1. 架构图
2. Nginx 部署2.1 概述2.2 配置域名2.2.1 需要了解的2.2.2 服务器域名配置2.3 获取 SSL 证书2.4 使用 Docker&Compose 部署 Nginx 与网络2.4.1 创建 Docker Network2.4.2 创建 Nginx2.5 配置 Nginx 反代 & SSL 证书2.5.1 安装 SSL 证书2.5.2 配置反向代理规则2.5.3 导入到 Nginx 配置2.5.4 启用最新配置
3. PostgreSQL 部署3.1 概述3.2 已有 PostgreSQL 服务3.3 使用 Docker-Compose 部署 PostgreSQL3.4 创建用户与数据库
4. Redis 部署4.1 概述4.2 使用 Docker-Compose 部署 Redis
5. Keycloak 部署5.1 概述5.2 使用 Docker-Compose 部署 Keycloak5.3 配置 Outline 的 OIDC 服务5.3.1 登陆5.3.2 创建 Outline Realm5.3.3 创建 Outline Client5.3.4 配置 Outline Client5.3.5 创建 Outline Client Role5.3.6 创建 Outline User5.3.7 授权 Outline User 访问 Outline Client 权限
6. MinIO 部署6.1 概述6.2 使用 Docker-Compose 部署 MinIO6.3 配置 Outline 的 OSS 服务
7. Outline 部署7.1 概述7.2 创建 Outline 配置文件7.3 outline-docker.env 配置文件详解7.4 初始化数据库7.5 使用 Docker-Compose 部署 Outline
8. 初步测试8.1 登陆 Outline8.2 测试 PostgreSQL 基本功能8.3 测试 MinIO 基本功能8.4 更多功能
9. 参考资料
X. Change Log

你可以访问在线文档查看

  • GitHub Page:https://jiang-taibai.github.io/deploy-outline-via-nginx
  • Gitee Page: https://jiang-taibai.gitee.io/deploy-outline-via-nginx

3. 部署架构图概览

在这里插入图片描述
涉及到的Outline服务以及它的依赖服务:

  • Outline: 超级棒的团队多人协同文档管理开源项目!3000 端口为访问 Outline 的端口,但该端口并不暴露,由 Nginx 通过 Docker Network 方式访问
  • Keycloak: 一个支持 OpenID Connect(下文简称 OIDC)的开源项目。用于 Outline 的单点登录服务。
  • Redis: 非关系型数据库,Outline 使用 Redis 实现缓存、消息队列、会话存储、实时协作等功能
  • PostgreSQL: 关系型数据库,Outline 使用 PostgreSQL 实现数据的持久化
  • Minio: 一款本地对象存储系统的开源项目。用于存储 Outline 的图片等资源

网络架构主干:

  • nginx_all_in_one: Docker Network,使用虚拟网卡实现多个容器之间的网络互通
  • Nginx: 占用主机的 80, 443 端口并反代了四个域名,而反代的端口确实来自虚拟局域网中的端口,由图中可知整个网络只有 80 和 443 端口暴露在外。

四个域名的作用:

  • outline.example.com: 用于访问 Outline 的主域名
  • sso.example.com: 提供身份权限验证服务,同时也是管理员入口
  • minio.example.com: MinIO API 为 Outline 提供对象存储服务 OSS
  • minio-admin.example.com: MinIO Admin 界面

这种部署方式的优点如下:

  • 安全性更高🔒: 所有服务均隐藏与虚拟局域网中,并在虚拟局域网中通信,不会暴露在互联网上
  • 门槛低🎁: 全文所有服务项均使用 Docker 部署,并使用 Compose 插件,俗称开箱即用,部署难度大大降低。通常情况下,你只需要新建一个 yaml 配置文件和执行一条命令 docker-compose up -d 即可。
  • 非侵入式的端口友好型🚪: 所有服务都不会占用服务器的任何一个端口。由占用 80 端口的 Nginx 负责反向代理转发到 虚拟局域网 中的服务访问点 SAP
  • 非侵入式的环境友好型🐳: 所有服务均使用 Docker 容器化部署,不会在服务器中创建一大堆的环境变量
  • 后期调试友好型🔧: 所有服务均使用 Docker Compose 插件部署,所有配置项、密码等都保存在了服务器中,较原先的纯 Docker 部署而言,对于后期调试无需翻找当时设置的所有配置项。

你可以访问在线文档查看

  • GitHub Page:https://jiang-taibai.github.io/deploy-outline-via-nginx
  • Gitee Page: https://jiang-taibai.gitee.io/deploy-outline-via-nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ajax 笔记(四)—— Ajax 进阶

笔记目录 4. Ajax 进阶4.1 同步代码和异步代码4.2 回调函数地狱4.2.1 解决方法一:Promise 链式调用4.2.2 解决方法二:async 函数和 await 4.3 Promise.all 静态方法4.4 事件循环4.4.1 事件循环4.4.2 宏任务与微任务 4.5 案例4.5.1 案例一-商品分类4.5.2 …

读书笔记 |【项目思维与管理】➾ 项目成为一种生存方式

读书笔记 |【项目思维与管理】➾ 项目成为一种生存方式 一、理解项目固有的挑战二、项目对企业的价值三、知识型企业的经营逻辑四、做项目管理的推进者 💖The Begin💖点点关注,收藏不迷路💖 项目无处不在,项目已经成为…

智慧建筑工地平台,通过信息化技术、物联网、人工智能技术,实现对施工全过程的实时监控、数据分析、智能管理和优化调控

智慧工地是指通过信息化技术、物联网、人工智能技术等手段,对建筑工地进行数字化、智能化、网络化升级,实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量,降低施工成本&#xf…

分布式唯一ID实战

目录 一、UUID二、数据库方式1、数据库生成之简单方式2、数据库生成 - 多台机器和设置步长,解决性能问题3、Leaf-segment 方案实现4、双 buffer 优化5、Leaf高可用容灾 三、基于Redis实现分布式ID四、雪花算法 一、UUID UUID的标准形式包含32个16进制数字&#xff…

Word 2019打开.doc文档后图片和公式不显示(呈现为白框)的解决办法

Word 2019打开.doc文档后图片和公式不显示(呈现为白框)的解决办法 目录 Word 2019打开.doc文档后图片和公式不显示(呈现为白框)的解决办法一、问题描述二、解决方法1.打开 WORD 2019,点击菜单中的“文件”;…

微服务05-Sentinel流量防卫兵

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以 流量 为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 S…

FBB简介

FBB FBB简介FBB组网名词解释FBB组网(从下至上)小结 FBB简介 FBB:Fixed BroadBand,固定宽带网络,是一种依托线缆介质进行传输的地面有线网络,区分与MBB,MBB是移动网络。 MBB是天上一张网&#x…

学习Vue:简介和优势

什么是 Vue.js? Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它专注于视图层,并且可以轻松地集成到现有的项目中。Vue.js 的设计理念是渐进式,这意味着您可以根据项目的需要逐步引入 Vue.js,从而更好地控制应用的复…

专注于创意设计,为您的小程序和网站建设带来更多的可能性

随着移动互联网的快速发展,越来越多的企业开始关注小程序和网站建设,以此来拓展业务和提升品牌形象。 在这个领域中,创意设计扮演着关键的角色。它不仅可以帮助企业打造独特的形象和品牌,还能够提高用户体验和购买决策的效率。 因…

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置。

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置。 问题原因核心代码完整代码:在线示例 在以往的项目维护中,出现一个问题,使用最新高清底图…

已有公司将ChatGPT集成到客服中心以增强用户体验

Ozonetel正在利用ChatGPT来改善客户体验。该公司表示,他们通过使用ChatGPT收集与客户互动过程收集的“语料”能够更有针对性地提高服务效率,提供个性化的用户体验,并实现更高的客户满意度。[1] 通过这套解决方案,客服中心将拥有一…

javascript写一个简单的闭包例子

当你在JavaScript中创建一个闭包时,你可以将函数定义在另一个函数的内部,并从外部函数中返回该函数。以下是一个简单的闭包示例: function outerFunction() {var outerVariable "I am from the outer function";function innerFu…

vue 图片转pdf

尝试了集中图片转pdf的方式, (1)最终较为优秀的一种是使用jspdf将图片转为pdf,支持JPG/JPEG/PNG/BMP/TIF/TIFF图片格式转换,详见我的另一篇文章: https://blog.csdn.net/Ann_52547/article/details/1322149…

MybatisPlus查询结果返回值为null

1、问题描述 返回值为null&#xff0c;程序不报错&#xff0c;但是条数好像是正确的。我出现问题的代码如下&#xff1a; 1、自定义类StudentMapper继承了BaseMapper接口 public interface StudentMapper extends BaseMapper<Student> { } 2、使用StudentMapper中的s…

centos 定时脚本检测tomcat是否启动,未启动情况下重新启动

编写脚本 tomcatMonitor.sh #!/bin/sh. /etc/profile . ~/.bash_profile#首先用ps -ef | grep tomcat 获得了tomcat进程信息&#xff0c;这样出来的结果中会包含grep本身&#xff0c; #因此通过 | grep -v grep 来排除grep本身&#xff0c;然后通过 awk {print $2}来打印出要…

Struts2一次请求参数问题的记录

最近&#xff0c;一次前端正常请求&#xff0c;但后台出现请求参数值的变化&#xff0c;导致报错&#xff0c;问题如下&#xff1a; 从入参request中查看请求参数&#xff0c;是一个Json字符串&#xff0c;其中有个description的键值对&#xff1b; 但是&#xff0c;接下来调用…

【需求输出】用户故事方法

文章目录 1、初识用户故事2、用户故事是描述需求的最好方式3、创建用户故事4、用户故事的分层管理5、编写用户故事的工具 1、初识用户故事 2、用户故事是描述需求的最好方式 3、创建用户故事 4、用户故事的分层管理 5、编写用户故事的工具

软件测试基础之软件缺陷处理

一、什么是缺陷 不满足用户确定需求、影响软件功能实现的问题、故障 缺陷就是人们通常所说的bug。 ex.一下哪一种选项不属于软件缺陷___。 A.软件没有实现产品规格说明所要求的功能 B.软件中出现了产品规格说明不应该出现的功能 C.软件实现了产品规格说明没有提到的功能 D.软…

Python实现透明隧道爬虫ip:不影响现有网络结构

作为一名专业爬虫程序员&#xff0c;我们常常需要使用隧道代理来保护个人隐私和访问互联网资源。本文将分享如何使用Python实现透明隧道代理&#xff0c;以便在保护隐私的同时不影响现有网络结构。通过实际操作示例和专业的解析&#xff0c;我们将带您深入了解透明隧道代理的工…

TiDB 应急运维脚本,更加方便的管理TiDB集群

TiDB 应急运维脚本&#xff0c;更加方便的管理TiDB集群 使用方法 使用方法&#xff1a;[tidblocalhost ~]$ which tiup ~/.tiup/bin/tiup编辑脚本&#xff0c;MYSQL_PASSWD 和 PORT 根据实际替换 [tidblocalhost ~]$ vi ~/.tiup/bin/ti#version 1.1 #author guanguanglei ##…