使用 Outline 构建 企业 or 个人 知识库面临的问题

在这里插入图片描述
前不久,我写了一篇文章,介绍《如何在本地部署安装 Outline》,我之所以写这篇文章,主要原因是我最近需要做一个项目,使用 Outline 来构建一个公司级知识库。所以我需要在本地先搭建一个,来撰写一些前期的文档,并体验试用系统。

现在,我部署了一个线上的系统,来正式实现公司级的知识库,结果踩了不少坑,特撰写文章来与大家分享,希望大家引以为戒。

一、企业级部署

前文已经介绍而本地部署的方法,其实企业级部署,也差不多的方式,我就不想多介绍细节了,主要介绍一下坑。

企业级的部署采用的主要方法,还是使用 Docker 或者 K8S 这样的系统来部署,是最简单的。坑主要在几个地方:

1. 登录方式

你首先要想好的事部署好了 Outline 的话怎么登录呢?可以使用帐号登录,那样的话,会在企业原有很多业务系统的前提下,又多了一个帐号系统,员工入职申请和离职吊销引发的一致性问题,都是需要解决的。很不方便。

使用 OAuth 登录,这个是需要专门修改代码来开发的,不是很直观。原生提供的方式还有使用 Google 邮箱登录,或者使用 OIDC 登录,还有就是集成 Slack,不过中国公司没几个使用 Slack 的就有点尴尬。

我们公司是使用 Google 邮箱的,但是 Outline 部署在中国,服务器是无法联通 Google 服务器的,还需要给服务器科学,才能正式完成 Google 登录。而 Outline 本身不支持配置代理在里面,所以整个配置过程有点麻烦,我不想赘述。

2. 附件存储

企业级使用,你不可能不考虑附件存储的问题。而且 Docker 部署,则约束了你不能使用简单的本地存储方式。比如,最起码,你需要挂载网络卷,然后让本地文档存储在网络硬盘上,这个还比较好部署一点。

另一种方式,就是使用网络存储,但是 Outline 原生只支持 AWS 的 S3,好在中国的阿里云和腾讯云都是支持 S3 的 API 的。但是我们实际配置了才知道,这也是一个大坑。比如,腾讯云的 COS,我们配置了,发现,腾讯实现的 HTTP 协议竟然是区分 Header 大小写的,这明显与协议不符。不知道写这个 HTTP 服务的 老哥是怎么混进去的。

如果访问腾讯的 COS,使用 S3 的协议,必须将所有的鉴权 Header 全部小写才可以被腾讯验证。哔了狗的体验,难怪做不过阿里云,不过我并不知道阿里云实现的对不对,反正腾讯云糟糕。

如何才能让 Outline 支持腾讯云的 COS 呢?非修改代码不可。真是无语凝咽。

二、兼容性问题

解决了部署,终于可以愉快的使用了,你发现噩梦才开始。系统有一些很神奇的设定,让你惊讶。

1. 导入导出

我的设想是,我弄一个测试环境,在上面编辑好文档,然后导出,导入到线上环境。想法很美妙,现实很残酷!

我发现,我导出后,再导入,我设置的文档集前面的小图标没了!而且,文档集的顺序全乱掉了。

而且,文档集内的文档的顺序也没了,只能按照字典序排列,而且,不能手动脱拽调整顺序了!!功能根本不一致。

2. 格式兼容

我编辑的一些加黑 + 高亮的格式,在导入再导出后,加黑突然失效了。所以,这个系统对 Markdown 的支持是有缺陷的。

3. 图片链接

我发现另一问题就是,我导出的文档里面包含的系统内部的链接,在导入后全部失效了!! 都变成了 url encode 后的乱码了。这个太糟心了,点击也没法跳转了。所以整套导入导出机制,就彻底无意义了。

另一个致命问题是图片。这个系统是有 BS 架构的。所以是 server 的,结果你上传了任何图片,它保留在文档里的图片链接,竟然是指向了自己的 server,所以更加枪毙了导入导出的方案,糟糕至极。

4. 不合常理的设计

我导入完毕后,看到有个导入的历史记录,就很洁癖的随手删掉了,弹出的二次提醒完全没看。后来我才知道,那个提醒上写着,如果删除,您此次导入的所有文档都将删除!!!!!气死我也,等我回过神来发现,怎么所有文档都不见了,还在那里调查出了啥 bug。

所有的文档都进入了回收站,我心暗叫还好,然后就发现另一个更惊讶的事情,回收站的文档竟然只能看,不能恢复!!还是免不了 30 天被删除的命运,能活活气死你。

5. 中文搜索

我发现对中文的搜索支持极其不足,比如我的一篇文档是“客户端证书安装指南”,结果搜“证书” 是完全搜不到的,只能搜“客户端”,这……
后来我手动加了空格,“客户端 证书 安装指南”,才能让“证书” 两个字可以搜索出来,简直了!

三、结论

所以,你想搞个免费的企业级知识库的话,Outline 未必是比较好的选择。上面的问题,你都能接受即可。除了上述的各种缺点外,其编辑器算是比较好用的了,另外允许对图片加工对齐格式和大小,也比较友好。协同编辑的功能和性能也还可以。还是有一些优点的。当然界面也很美观。

只是远远称不上完美。对于负责安装部署和维护的人来说,堪称糟糕。

顺便提一嘴,我用的版本是 0.75.2 (2024-03),如果您从遥远的未来看到此文,注意时效性。

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

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

相关文章

【环境配置】Ubuntu MySQL 8.0.28 安装并允许外部客户端连接

文章目录 MySQL 安装步骤配置 MySQL Server 允许外部连接 MySQL 安装步骤 步骤一:在 MySQL 官网找到 apt 仓库,下载最新的仓库 点击 Download: 输入如下命令: sudo wget -c https://dev.mysql.com/get/mysql-apt-config_0.8…

2014年认证杯SPSSPRO杯数学建模A题(第一阶段)轮胎的花纹全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 A题 轮胎的花纹 原题再现: 轮胎被广泛使用在多种陆地交通工具上。根据性能的需要,轮胎表面常会加工出不同形状的花纹。在设计轮胎时,往往要针对其使用环境,设计出相应的花纹形状。   第一阶段问…

JVM(三)——字节码技术

三、字节码技术 1、类文件结构 一个简单的 HelloWorld.java package com.mysite.jvm.t5; // HelloWorld 示例 public class HelloWorld {public static void main(String[] args) {System.out.println("hello world");} }执行 javac -parameters -d . HellowWorld.…

Selenium 自动化 —— 实战篇之自动登录163邮箱

Selenium 自动化专栏系列文章 (一)入门和 Hello World 实例(二)使用WebDriverManager自动下载驱动(三)Selenium IDE录制、回放、导出Java源码(四)浏览器窗口操作(五&…

AI时代-普通人的AI绘画工具对比(Midjouney与Stable Diffusion)

AI时代-普通人的AI绘画工具对比(Midjouney与Stable Diffusion) 前言1、基础对比Stable Diffusion(SD)SD界面安装与使用SD Midjouney(MJ) 2、硬件与运行要求对比Stable Diffusion硬件要求内存硬盘显卡 Midjo…

Linux实现m4a格式转换为wav格式

需要在linux上安装ffmpeg 参考博客 Linux上安装ffmpeg修改环境变量【这一点很重要,自己因为没有添加环境变量,捣鼓了很长时间】 将ffmpeg的绝对路径添加到 PATH 环境变量中,以让系统能找到ffmpeg的安装路径。 # /home//project/ffmpeg-6.1-a…

Chrome/Edge 使用 Markdown Viewer 查看 Markdown 格式文件

Chrome/Edge 使用 Markdown Viewer 查看 Markdown 格式文件 0. 引言1. 安装 Markdown Viewer 插件2. 使用 Markdown Viewer 阅读 Markdown 格式文件 0. 引言 大部分程序员都喜欢 Markdown 格式的文件,这时给一些没有在电脑上安装 Markdown 编辑器的同事分享资料时&…

PCA+DBO+DBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper!

PCADBODBSCN聚类,蜣螂优化算法DBO优化DBSCN聚类,适合学习,也适合发paper! 一、蜣螂优化算法 摘要:受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发,提出了一种新的基于种群的优化算法(Dung Beetle Optim…

zookeeper面试题

文章目录 ZooKeeper 是什么?ZooKeeper 提供什么?1. 文件系统2. 通知机制 ZooKeeper 文件系统四种类型的 znode1. PERSISTENT (持久化目录节点)2. PERSISTENT_SEQUENTIAL (持久化顺序编号目录节点)3. EPHEMERAL (临时目录节点)4. EPHEMERAL_SEQUENTIAL (临…

GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示

GIMP - GNU 图像处理程序 - 工具栏窗口 [Toolbox] 显示 1. File -> Open2. GIMP 主面板里,右击弹出菜单 -> Tools -> New Toolbox3. Windows -> Dockable Dialogs -> Tool Options4. 工具选项拖动到工具箱里面5. Always On TopReferences GIMP 是跨平…

sqlite3嵌入式开发板命令行方式使用

如何在编译嵌入式版本的sqlite3,请看我上一篇文章 sqlite3 交叉编译-CSDN博客 一、sqlite3命令行方式使用 假如我将编译好的嵌入式的sqlite3放置在如下路径: 进入bin目录进行操作 1.运行sqlite3 运行sqlite3有两种方式 1)直接在内存里面…

文心一言指令词宝典之职场效率篇

作者:哈哥撩编程(视频号、抖音、公众号同名) 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 🏆 推荐专栏: 🏅…

基于SpringBoot和Vue的车辆管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的车辆管理系统的设计与实现 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同学 💕&#x1f…

【Java面试题】操作系统

文章目录 1.进程/线程/协程1.1辨别进程和线程的异同1.2优缺点1.2.1进程1.2.2线程 1.3进程/线程之间通信的方法1.3.1进程之间通信的方法1.3.2线程之间通信的方法 1.4什么是线程上下文切换1.5协程1.5.1协程的定义?1.5.2使用协程的原因?1.5.3协程的优缺点&a…

计算机网络:物理层 - 编码与调制

计算机网络:物理层 - 编码与调制 基本概念编码不归零制编码归零制编码曼彻斯特编码差分曼彻斯特编码 调制调幅调频调相混合调制 基本概念 在计算机网络中,计算机需要处理和传输用户的文字、图片、音频和视频,他们可以统称为消息数据&#xf…

[GXYCTF2019]StrongestMind

web请求类题目,要求1000次 import requests from bs4 import BeautifulSoup import time urlhttp://ad7bc925-bc7a-4881-8a75-9045b60d4ab2.node5.buuoj.cn:81/index.php srequests.session() #维持会话 datas.get(url) for i in range(1001):soupBeautifulSoup(d…

探究 HTTPS 的工作过程

目录 1. HTTPS 协议原理 1.1. 为什么要有HTTPS协议 1.2. 如何理解安全 1.3. HTTPS 协议是什么 2. HTTPS 的前置概念 2.1. 什么是加密 && 解密 2.2. 为什么要加密 2.3. 常见的加密方式 2.3.1. 对称加密 2.3.2. 非对称加密 2.4. 数据摘要 && 数据指纹…

使用第三方远程连接工具ssh连接vagrant创建的虚拟机

vagrant默认密码都是vagrant 密码认证默认是关闭的,进入虚拟机,打开密码认证 1、使用命令vi /etc/ssh/sshd_config进入配置,注意要切换到root用户,这个配置root有权限 2、找到PasswordAuthentication默认为no,改为yes 3、重启虚…

Redis如何应对缓存穿透问题——Java全栈知识(9)

我们在正常使用缓存的时候的流程大概就是这样的: 请求访问缓存,缓存有数据就返回,缓存无数据就去数据库里面查数据写入到缓存中。 1、缓存穿透问题 但是如果由恶意请求,短时间内大量的访问不存在的数据,这时每个请求…

暴力破解笔记

1 暴力破解简介 暴力破解: 蛮力攻击,又称为穷举攻击,或暴力破解,将密码进行逐个尝试验证,直到尝试出真正的密码为止。 暴力破解是指采用反复试错的方法并希望最终猜对,以尝试破解密码或用户名或找到隐藏的…