《Wiki.js知识库部署实践 + CNB Git数据同步方案解析》
一、wiki.js 知识库简介

基本概述
- 定义 :Wiki.js 是一个开源、现代、轻量且功能强大的 Wiki 应用程序,基于 Node.js 构建,旨在帮助个人和团队轻松创建、管理和共享知识。
- 开源性质 :它遵循 AGPLv3 许可证,任何人都可以免费下载、使用和修改其源代码,这种开源特性也意味着用户可以根据自身需求进行定制和扩展,同时社区的贡献也不断为其增添新功能和优化
- 官网地址: https://js.wiki/
功能特点
- 编辑与内容创作 :支持多种编辑方式,包括 Markdown、所见即所得编辑器和 HTML 编辑,满足不同用户群体的需求。无论是开发人员还是非技术人员,都能方便地进行内容创作和编辑。同时,还具备实时预览、工具栏 / 键盘快捷方式等辅助功能,提高编辑效率。
- 版本控制与历史追踪 :所有内容修改都会被跟踪记录,用户可以轻松恢复到以前的状态或随时恢复已删除的页面,还能可视化地比较同一页面的两个版本,查看更改的确切内容,这对于知识的更新和管理非常有帮助,确保了内容的安全性和可追溯性。
- 多语言支持 :被翻译成 40 多种语言,并且具有原生 RTL 支持,可以以多种语言提供维基内容,用户能够在同一页的语言之间快速切换,这使得其能够满足不同地区和语言背景的用户需求,构建多语言的知识库。
- 多媒体资产管理 :通过资产管理器,用户可以方便地上传和管理各种媒体资产,如图片、视频等,并能轻松地在文件夹中分类管理这些资产,同时还能查看它们被使用的地方,方便对多媒体内容进行组织和利用。
- 搜索功能 :内置了搜索引擎,无需额外设置即可使用,对于大多数用户来说已经足够。此外,还支持使用 Algolia、Azure 搜索等云搜索服务,以及现有的 ES 装置来为维基搜索功能提供动力,从而满足不同用户对搜索性能和功能的更高要求。
- 存储与备份 :支持多种存储方式,包括 Git、企业云存储以及本地 / 网络存储等,用户可以将内容备份到不同的存储位置,如 GitHub、GitLab、BitBucket、Azure DevOps 等 Git 服务,AWS S3、Azure Blob 存储、Google 云存储等云存储服务,以及磁盘 / 网络共享或网络上的远程服务器等本地存储位置,确保数据的安全性和可靠性。
安全与权限管理
- 身份认证 :提供了多种身份认证方式,包括本地身份认证、第三方身份验证服务(如谷歌、Facebook、微软、GitHub、Discord、Slack 等)以及企业认证(通过 LDAP、SAML、CAS、Auth0、Okta、Azure AD 等与企业现有认证集成),还支持两阶段认证,为知识库的安全访问提供了有力保障。
- 权限管理 :具备灵活的权限管理机制,可以按需创建用户组,为不同组分配不同的权限,还可以基于页面规则进行更精细的权限设置,从而确保只有经过授权的用户才能访问和编辑特定的知识内容,保护企业或团队的知识资产。
可定制性与扩展性
- 外观定制 :用户可以完全自定义知识库的外观,包括主题、颜色、布局等,还支持明暗模式,使其能够符合企业的品牌形象或个人的审美需求,提供更好的用户体验。
- 模块化与插件扩展 :采用模块化设计,提供了广泛的模块,用户可以根据实际需求打开或关闭对应功能。此外,还支持插件扩展,通过安装各种插件来进一步增强其功能,如图表插件、地图插件、代码高亮插件等,满足不同场景下的个性化需求。
- GraphQL API :公开了 GraphQL API,开发者可以通过它访问和修改 Wiki 的所有资源,从而实现更深层次的定制和集成,与其他系统或应用进行数据交互和功能扩展。
应用场景
- 企业内部知识库 :企业可以使用 Wiki.js 搭建内部知识库,方便员工共享和查找技术文档、项目资料、流程规范等,通过 LDAP 集成等身份认证方式实现统一身份验证,确保信息安全,提高团队协作效率和知识管理水平。
- 开源项目文档 :开源项目团队可选择 Wiki.js 作为项目文档平台,利用其强大的 Markdown 编辑器和版本控制功能,方便团队成员协作编写和维护文档,保证文档的准确性和及时性,促进项目的顺利进行。
- 教育机构在线资源库 :教育机构可以利用 Wiki.js 搭建在线资源库,供教师和学生共享教学资料、学习资源等,通过插件扩展实现图表展示、在线讨论等功能,提升教学效果和学习体验。
二、安装部署&优化
使用Docker Compose方式部署
使用pg数据库作为数据源
version: "3"
services:db:image: docker.cnb.cool/srebro/docker-images/postgres:15-alpineenvironment:POSTGRES_DB: srebroPOSTGRES_PASSWORD: srebro.cnPOSTGRES_USER: wikijslogging:driver: "none"restart: unless-stoppedvolumes:- ./db-data:/var/lib/postgresql/datawiki:image: docker.cnb.cool/srebro/docker-images/wiki:2depends_on:- dbenvironment:DB_TYPE: postgresDB_HOST: dbDB_PORT: 5432DB_USER: srebroDB_PASS: srebro.cnDB_NAME: wikirestart: unless-stoppedports:- "18888:3000"
Nginx 反向代理:
[root@hcss-ecs-195f conf.d]# cat doc.conf
#docserver {listen 1443 ssl;http2 on;server_name doc.srebro.cn;error_page 404 /404/404.html;charset utf-8;ssl_certificate /home/application/nginx/cert/srebro.cn.pem; ssl_certificate_key /home/application/nginx/cert/srebro.cn.key;ssl_session_cache shared:SSL:1m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-Real-IP $remote_addr;proxy_set_header x-wiz-real-ip $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-Forwarded-Proto $scheme;proxy_pass http://localhost:18888;}
}
访问测试

优化配置
-
知识库的结构定义成,自定义导航,这样更美观简洁

-
为内容设置备份和同步目标
可以设置git的备份方式,我这里以CNB代码仓库作为案例演示

(1)、首先建立 一个 代码仓库, 私有仓库/公开仓库 都行 ,看你自己是否选择开放
(2)、 初始化仓库 创建 一个 master 分支 【⚠️ CNB 默认新建的仓库,在main 分支下】
(3)、在CNB 个人设置中,创建一个添加访问令牌,⚠️ 本地小本本记下来📒 【实则就是用户名/密码的方式】,给足权限

(4)、设置 wikijs 这边,认证方式选为:basic,看图配置
⚠️ : 上面的访问令牌 就是用户名/密码


配置好后可以进行Force Sync 测试,看看是否有报错

相关文章:
《Wiki.js知识库部署实践 + CNB Git数据同步方案解析》
一、wiki.js 知识库简介 基本概述 定义 :Wiki.js 是一个开源、现代、轻量且功能强大的 Wiki 应用程序,基于 Node.js 构建,旨在帮助个人和团队轻松创建、管理和共享知识。开源性质 :它遵循 AGPLv3 许可证,任何人都可以…...
CSS Overflow 属性详解:控制内容溢出的利器
在前端开发中,处理内容溢出是一个常见的需求。CSS 提供了 overflow 属性,帮助我们控制当内容超出元素框时的显示方式。本文将详细介绍 overflow 属性的各种取值及其应用场景。 1. 什么是 overflow 属性? overflow 属性用于控制当元素的内容…...
.yml文件_YAML格式文件
.yml 文件是 YAML(YAML Ain’t Markup Language)格式的一种文件扩展名。YAML 是一种用于数据序列化的语言,通常用于配置文件、数据交换、日志记录等场景。它以可读性高、简洁的格式为特点,非常适合用于人类阅读和编写。YAML 通常被…...
根文件系统 Debian10【1】移植
1.开发背景 一般根文件系统使用 Busybox 或者是 Buildroot 构建,这样构建出来的文件系统比较小,但是不具备上网功能,扩展性比较差。随着 ARM 的日益强大,ARM 可以搭载更庞大复杂的系统,可以是 Ubuntu 或者 Debian 等发…...
【PyQt】实现格式刷功能
实现格式刷功能 在Qt Designer中直接实现格式刷功能并不支持,但可以通过以下方法在应用程序中实现类似功能: 一、Qt Designer中的替代方案 1.手动设置样式表 在属性编辑器中复制样式表(QSS)内容,粘贴到其他控件。 …...
Could not create task ‘:mainActivity:minifyReleaseWithR8‘.
最近接收了一个老项目,把项目clone下来后,总是报错,无法运行 Build-tool 33.0.1 is missing DX at D:\Android\Sdk\build-tools\33.0.1\dx.batFAILURE: Build failed with an exception.* What went wrong: Could not determine the depende…...
2025年日祭
本文将同步发表于洛谷(暂无法访问)、CSDN 与 Github 个人博客(暂未发布) 本蒟自2025.2.8开始半停课。 任务计划(站外题与专题) 数了一下,通过人数比较高的题,也就是我准备补的题&a…...
二维dp-地图
问题描述 传说,在蓝桥王国中一个极其神秘的森林。这个森林的起点在(1,1) ,终点在 (n,m)。在你进入这个森岭后,每次你只可以向下或者向右走,由于森岭的神秘力量,至多只可以改变 k 次方向。 小蓝现在想知道,…...
Windows下AMD显卡在本地运行大语言模型(deepseek-r1)
Windows下AMD显卡在本地运行大语言模型 本人电脑配置第一步先在官网确认自己的 AMD 显卡是否支持 ROCm下载Ollama安装程序模型下载位置更改下载 ROCmLibs先确认自己显卡的gfx型号下载解压 替换替换rocblas.dll替换library文件夹下的所有 重启Ollama下载模型运行效果 本人电脑配…...
el-table表格点击单元格实现编辑
使用 el-table 和 el-table-column 创建表格。在单元格的默认插槽中,使用 div 显示文本内容,单击时触发编辑功能。使用 el-input 组件在单元格中显示编辑框。data() 方法中定义了 tableData,tabClickIndex: null,tabClickLabel: ,用于判断是否…...
数据库操作与数据管理——Rust 与 SQLite 的集成
第六章:数据库操作与数据管理 第一节:Rust 与 SQLite 的集成 在本节中,我们将深入探讨如何在 Rust 中使用 SQLite 数据库,涵盖从基本的 CRUD 操作到事务处理、数据模型的构建、性能优化以及安全性考虑等方面。SQLite 是一个轻量…...
Ubuntu 24.10 安装Deepseek(Ollama+openwebui)
一、Ollama安装 1.在线安装 curl -fsSL https://ollama.com/install.sh | sh 如果curl工具没有安装先执行如下命令 sudo apt install curl 验证curl是否安装成功 curl --version 安装的过程中会提示输入当前系统登录用户的密码。 安装提示success后,验证安装 ollama -…...
【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)
偏差和方差的权衡(Bias-Variance Tradeoff) 1. 引言 在机器学习模型的训练过程中,我们常常面临一个重要的挑战:如何平衡 偏差(Bias) 和 方差(Variance),以提升模型的泛…...
STM32的HAL库开发---高级定时器---输出比较模式实验
一、高级定时器输出比较模式实验原理 定时器的输出比较模式总共有8种,本文使用其中的翻转模式,当TIMXCCR1TIMXCNT时,翻转OC1REF的电平,OC1REF为输出参考信号,高电平有效,OC1REF信号连接到0C1上面ÿ…...
[论文阅读] Knowledge Fusion of Large Language Models
Knowledge Fusion of Large Language Models (FuseLLM) Methodology 整体Pipeline如下图所示 不同的动物代表不同的LLM。左边第一,第二分别是Ensemble以及Weight Merging方法。最右侧为本文提出的FuseLLM。 Ensemble: 融合多个models的预测结果,比如…...
elementui:el-table支持搜索、切换分页多选功能,以及数据回显
1、el-table相关代码,需注意:row-key"(row) > { return row.id }" 以及 :reserve-selection"true" <div class"boxList"><div class"search-form"><!-- 搜索表单 --><el-form :inline"true&q…...
(ICLR=2025)生成的表征对齐:训练扩散Transformer比你想象的更简单
生成的表征对齐:训练扩散Transformer比你想象的更简单 paper是KAIST发表在ICLR 2025的工作 paper title:REPRESENTATION ALIGNMENT FOR GENERATION: TRAINING DIFFUSION TRANSFORMERS IS EASIER THAN YOU THINK Code:链接 ABSTRACT 最近的研究表明&…...
白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?
大家都知道,在设计的初期,我们通常会先绘制草图,然后再进行上色处理,最终才开始进行最终的设计工作。在这个上色的过程中,配色是至关重要的一环。这不仅方便了内部同事的评审,也让产品方和客户可以直观地了…...
Bash (Bourne-Again Shell)、Zsh (Z Shell)
文章目录 1. 历史背景2. 主要区别3. 功能对比自动补全插件和主题路径扩展提示符定制 4. 性能5. 使用场景6. 如何切换 Shell7. 总结 以下是 Bash 和 Zsh 之间的主要区别,列成表格方便对比: 特性BashZsh默认Shell大多数Linux发行版默认ShellmacOS默认She…...
pikachu[皮卡丘] 靶场全级别通关教程答案 以及 学习方法 如何通过渗透测试靶场挑战「pikachu」来精通Web渗透技巧? 一篇文章搞完这些问题
目录 Pikachu靶场 部署 暴力破解漏洞 学习地址: 靶场练习: 基于表单的暴力破解 验证码绕过(on server) 验证码绕过(on Client) token防爆破? XSS跨站脚本攻击 学习地址: 靶场练习: 反射型xss(get) 反射性xss(post) 存储型xss DOM型xss xss盲打 x…...
汽车零部件工厂如何借助安灯呼叫按钮盒提升生产响应速度
在现代汽车零部件工厂的生产环境中,高效的信息传递和快速的响应速度是确保生产顺畅运行的关键。然而,传统的口头呼喊或现场沟通方式往往存在信息传递慢、现场嘈杂、责任人难以及时找到等问题,尤其在设备故障或缺料时,这些问题会导…...
【0404】Postgres内核 实现分配一个新的 Object ID (OID)
文章目录 1. 分配一个新 Object ID (OID)1.1 ShmemVariableCache 中 nextOid1.2 写一个 NEXTOID log record1. 分配一个新 Object ID (OID) Postgres内核中分配一个新的 Oid 是由函数 GetNewObjectId() 实现。该函数声明于 transam.h,实现于 varsup.c 源文件。 对于 GetNewO…...
Idea 2024.3 使用CodeGPT插件整合Deepseek
哈喽,大家好,我是浮云,最近国产大模型Deepseek异常火爆,作为程序员我也试着玩了一下,首先作为简单的使用,大家进入官网,点击开始对话即可进行简单的聊天使用,点击获取手机app即可安装…...
「vue3-element-admin」告别 vite-plugin-svg-icons!用 @unocss/preset-icons 加载本地 SVG 图标
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …...
C++自研3D教程OPENGL版本---动态批处理的基本实现
又开始找工作了,借机休息出去旅行两个月,顺便利用这段时间整理下以前写的东西。 以下是一个简单的动态批处理实现: #include <GL/glew.h> #include <GLFW/glfw3.h> #include <iostream> #include <vector>// 顶点结…...
docker /var/lib/docker/overlay2目录把磁盘空间占满问题
1、查看服务器磁盘空间 df -h果然100%了,docker系统文件把磁盘空间占满了。 2、进入overlay2目录,查找那个容器工作目录占用最高 cd /var/lib/docker/overlay2du -h --max-depth1详见下图 好家伙占用110G!复制目录名称2c3c48ccac533c5d4a366d45a19bb9…...
SOA(面向服务架构)全面解析
1. 引言 什么是SOA(面向服务架构) SOA(Service-Oriented Architecture,面向服务架构)是一种将应用程序功能以“服务”的形式进行模块化设计的架构风格。这些服务是独立的功能模块,它们通过定义明确的接口…...
华为交换机堆叠配置
一、CSS堆叠集群配置(框式交换机) 1、通过集群卡连接方式组建集群 [SwitchA] set css mode css-card \\配置集群卡连接方式 [SwitchA] set css id 1 \\配置成员交换机的集群ID(缺省值为1) [SwitchA] set css priority 100 \\配…...
蓝桥杯备赛——进制转化相关问题
目录 一、基础概念 二、问题研究(1) 代码解读: 1. transfer 函数 代码功能概述 详细步骤 2. main 函数 代码功能概述 详细步骤 三、运用递归解决 (一) 代码如下: 代码解读: &#…...
Nginx配置 ngx_http_proxy_connect_module 模块及安装
1、配置完互联网yum源后,安装相关依赖软件包 [root@server soft]# yum install -y patch pcre pcre-devel make gcc gcc-c++ openssl openssh [root@server soft]# yum install openssl* 2、解压缩软件,加载模块 [root@server soft]# ls nginx-1.20.2 nginx-1.20.2.tar.gz …...
