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

一、wiki.js 知识库简介

image-20250208161258441

基本概述

  • 定义 :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;}
}   

访问测试

image-20250208162446483

优化配置

  • 知识库的结构定义成,自定义导航,这样更美观简洁

    image-20250208162642791

  • 为内容设置备份和同步目标

可以设置git的备份方式,我这里以CNB代码仓库作为案例演示

image-20250208163024771

(1)、首先建立 一个 代码仓库, 私有仓库/公开仓库 都行 ,看你自己是否选择开放

(2)、 初始化仓库 创建 一个 master 分支 【⚠️ CNB 默认新建的仓库,在main 分支下】

(3)、在CNB 个人设置中,创建一个添加访问令牌,⚠️ 本地小本本记下来📒 【实则就是用户名/密码的方式】,给足权限

image-20250208163633754

(4)、设置 wikijs 这边,认证方式选为:basic,看图配置

⚠️ : 上面的访问令牌 就是用户名/密码

image-20250208163402467

image-20250208163442524

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

image-20250208163458849

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

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

相关文章

ip地址是手机号地址还是手机地址

在数字化生活的浪潮中,IP地址、手机号和手机地址这三个概念如影随形,它们各自承载着网络世界的独特功能,却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语,经常被错误地与手机号地址或手机地址划上等号。本文旨在…

微服务 day01 注册与发现 Nacos OpenFeign

目录 1.认识微服务: 单体架构: 微服务架构: 2.服务注册和发现 1.注册中心: 2.服务注册: 3.服务发现: 发现并调用服务: 方法1: 方法2: 方法3:OpenFeign OpenFeig…

网络安全:挑战、技术与未来发展

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 在数字化时代,网络安全已成为全球关注的焦点。随着互联网的普及和信息技术的高速发展,网络攻击的…

PostgreSql-COALESCE函数、NULLIF函数、NVL函数使用

COALESCE函数 COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的; select coalesce(1,null,2),coalesce(null,2,1),coalesce(null,null,null); NULLIF(ex1,ex2)函数 如果ex1与ex2相等则返回Null,不相等返回第一个表达式的值…

neo4j-解决导入数据后出现:Database ‘xxxx‘ is unavailable. Run :sysinfo for more info.

目录 问题描述 解决方法 重新导入 问题描述 最近在linux上部署了neo4j,参照之前写的博客:neo4j-数据的导出和导入_neo4j数据导入导出-CSDN博客 进行了数据导出、导入操作。但是在进行导入后,重新登录网页版neo4j,发现对应的数据库状态变…

C语言【基础篇】之数组——解锁多维与动态数组的编程奥秘

数组 🚀前言🦜数组的由来与用途🌟一维数组详解🖊️二维数组进阶💯动态数组原理🤔常见误区扫盲💻学习路径建议✍️总结 🚀前言 大家好!我是 EnigmaCoder。本文收录于我的专…

TaskBuilder项目实战:创建项目

用TaskBuilder开发应用系统的第一步就是创建项目,项目可以是一个简单的功能模块,也可以是很多功能模块的集合,具体怎么划分看各位的实际需要,我们一般会将相互关联比较紧密的一组功能模块放到一个独立的项目内,以便打包…

基于DeepSeek API和VSCode的自动化网页生成流程

1.创建API key 访问官网DeepSeek ,点击API开放平台。 在开放平台界面左侧点击API keys,进入API keys管理界面,点击创建API key按钮创建API key,名称自定义。 2.下载并安装配置编辑器VSCode 官网Visual Studio Code - Code Editing…

Redis深入学习

目录 Redis是什么? Redis使用场景 Redis线程模型 Redis执行命令是单线程的为什么还这么快? Redis持久化 Redis 事务 Key 过期策略 Redis 和 mysql 如何保证数据一致? 缓存穿透 缓存击穿 缓存雪崩 Redis是什么? redis是一…

Dockerfile 文件详解

在平常的开发工作中,我们经常需要部署项目,一个项目开发完成后,使用 Docker 方式部署,那么首先得构造镜像,构造镜像最主要的就是 Dockerfile 文件的编写,今天简单来总结下 Dockerfile 文件的编写以及有哪些…

开源模型应用落地-CodeQwen模型小试-SQL专家测试(二)

一、前言 代码专家模型是基于人工智能的先进技术,它能够自动分析和理解大量的代码库,并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议,帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&a…

kubeadm构建k8s源码阅读环境

目标 前面看了minikube的源码了解到其本质是调用了kubeadm来启动k8s集群,并没有达到最初看代码的目的。 所以继续看看kubeadm的代码,看看能否用来方便地构建源码调试环境。 k8s源码编译 kubeadm源码在k8s源码库中,所以要先克隆k8s源码。之…

LLM学习笔记1——本地部署Meta-Llama-3.2-1B大模型

系列文章目录 参考博客 参考博客 文章目录 系列文章目录前言与调用一、部署要求二、实现步骤0.深度学习环境错误1,验证pytorch版本时提示以下问题:错误2,验证pytorch版本时提示以下问题:错误3,有时候还会提示你有一些…

搜维尔科技:提供人形机器人传感器的应用案例分析

视觉传感器 • 家庭服务场景:在家庭清洁机器人中,视觉传感器可以识别家具、障碍物的位置和形状,规划清洁路径,避开桌椅、宠物玩具等。如小米扫地机器人,通过视觉传感器与算法结合,能构建房间地图&#xff…

windows蓝牙驱动开发-蓝牙 LE 邻近感应配置文件

邻近感应检测是蓝牙低功耗 (LE) 的常见用途。 本部分提供了创建可用于开发 UWP 设备应用的邻近感应配置文件的设备实现的指南。 在开发此应用之前,应熟悉蓝牙 LE 函数和蓝牙 LE 邻近感应配置文件规范。 示例服务声明 蓝牙低功耗引入了一个新的物理层,…

逻辑回归:Sigmoid函数在分类问题中的应用

欢迎来到我的主页:【Echo-Nie】 本篇文章收录于专栏【机器学习】 1 什么是Sigmoid函数? Sigmoid函数(Logistic函数)是机器学习中最经典的激活函数之一,是一个在生物学中常见的S型函数,也称为S型生长曲线。…

如何在Windows中配置MySQL?

MySQL是一个广泛使用的开源关系型数据库管理系统,它支持多种操作系统平台,其中包括Windows。无论是开发者进行本地开发,还是管理员为应用程序配置数据库,MySQL都是一个非常流行的选择。本篇文章将详细介绍如何在Windows操作系统中…

MySQL的操作

一.数据库的操作 1.创建数据库 create database (if not exists) 数据库名称 (character set/charset 字符集名称); SQL中有特定含义的单词(create database)也就是关键字 在创建数据库名 表名 列名的时候都可以和关键字重复 。 if not exists&#xff1…

MariaDB *MaxScale*实现mysql8读写分离

1.MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 2.MaxScale 实验环境 中间件192.168.12…

响应式编程_05 Project Reactor 框架

文章目录 概述响应式流的主流实现框架RxJavaReactor Project Reactor 框架Reactor 异步数据序列Flux 和 Mono 组件FluxMono 操作符背压处理 小结 概述 响应式编程_02基本概念:背压机制 Backpressure介绍了响应式流规范以及 Spring 框架中的响应式编程技术&#xff…