《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-alpine
    environment:
      POSTGRES_DB: srebro
      POSTGRES_PASSWORD: srebro.cn
      POSTGRES_USER: wikijs
    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - ./db-data:/var/lib/postgresql/data

  wiki:
    image: docker.cnb.cool/srebro/docker-images/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: srebro
      DB_PASS: srebro.cn
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "18888:3000"

Nginx 反向代理:

[root@hcss-ecs-195f conf.d]# cat doc.conf 
#doc


  server {
        listen       443 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;
            }
}   

访问测试

https://doc.srebro.cn

image-20250208162446483

image-20250210175156566

优化配置

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

    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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

递增三元组(蓝桥杯18F)

暴力求解&#xff1a; #include<iostream> using namespace std; int main() {int N;cin >> N;int* A new int[N];int* B new int[N];int* C new int[N];for (int i 0; i < N;i) {cin >> A[i];}for (int i 0; i < N; i) {cin >> B[i];}for…

【抽象代数】1.2. 半群与群

群的定义 群非空集合二元运算性质 定义1. 设 为一个非空集合&#xff0c;上有二元运算&#xff0c;满足结合律&#xff0c;则称或为一个半群。 定义2. 设 为半群&#xff0c;若元素 满足 &#xff0c;则称 为 的左幺元&#xff08;右幺元&#xff1a;&#xff09;&#…

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡

idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下&#xff1a; 打开 IntelliJ IDEA&#xff1a; 打开你的 IntelliJ IDEA 应用…

机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战

前一篇文章&#xff0c;使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …

生成式聊天机器人 -- 基于Pytorch + Global Attention + 双向 GRU 实现的SeqToSeq模型 -- 上

生成式聊天机器人 -- 基于Pytorch Global Attention 双向 GRU 实现的SeqToSeq模型 -- 上 前言数据预处理下载并加载数据原始数据格式化数据清洗与字典映射转换为模型需要的数据格式 SeqToSeq 模型Encoder 编码器Decoder 解码器全局注意力机制解码器实现 前言 本文会介绍使用…

Maven 安装配置(完整教程)

文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型&#xff08;POM&#xff09;的项目管理和自动化构建工具。它主要服务于 Java 平台&#xff0c;但也支持其他编程语言…

我们来学人工智能 -- 将Ollama已下载的模型从C盘迁出

题记 未配置OLLAMA_MODELS系统变量导致模型下载到了C盘 迁移步骤 退出ollama 配置OLLAMA_MODELS系统变量 OLLAMA_MODELS&#xff1a;D:\ollama\models 直接将C盘下的models目录剪切到指定目录 检查 cmd命令窗口退出重新打开

AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…

数据库5(MySQL版)

作业要求 触发器 mysql> create trigger after_order_insert -> after insert on orders -> for each row -> update goods set num num - new.onum where gid new.gid; mysql> create trigger after_order_delete -> after delete on or…

python 语音识别方案对比

目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…

Neo4j图数据库学习(二)——SpringBoot整合Neo4j

一. 前言 本文介绍如何通过SpringBoot整合Neo4j的方式&#xff0c;对图数据库进行简单的操作。 Neo4j和SpringBoot的知识不再赘述。关于Neo4j的基础知识&#xff0c;有兴趣可以看看作者上一篇的文章&#xff1a;Neo4j图数据库学习(一)——初识CQL 二. 前置准备 新建SpringBo…

《代码随想录第二十八天》——回溯算法理论基础、组合问题、组合总和III、电话号码的字母组合

《代码随想录第二十八天》——回溯算法理论基础、组合问题、组合总和III、电话号码的字母组合 本篇文章的所有内容仅基于C撰写。 1. 基础知识 1.1 概念 回溯是递归的副产品&#xff0c;它也是遍历树的一种方式&#xff0c;其本质是穷举。它并不高效&#xff0c;但是比暴力循…

Qt监控设备离线检测/实时监测设备上下线/显示不同的状态图标/海康大华宇视华为监控系统

一、前言说明 监控系统中一般有很多设备&#xff0c;有些用户希望知道每个设备是否已经上线&#xff0c;最好有不同的状态图标提示&#xff0c;海康的做法是对设备节点的图标和颜色变暗处理&#xff0c;离线的话就变暗&#xff0c;有可能是加了透明度&#xff0c;而大华的处理…

初次体验Tauri和Sycamore (2)

原创作者&#xff1a;庄晓立&#xff08;LIIGO&#xff09; 原创时间&#xff1a;2025年2月8日&#xff08;首次发布时间&#xff09; 原创链接&#xff1a;https://blog.csdn.net/liigo/article/details/145520637 版权所有&#xff0c;转载请注明出处。 关键词&#xff1a;Sy…

模型压缩 --学习记录2

模型压缩 --学习记录2 如何找到更好的权衡方式(模型量化)方法一:寻找更好的 range方法二:寻找更好的 X-fp32(浮点数)方法三:寻找更好的 scale 和 zp方法四:寻找更好的 roundPTQ 后训练量化(离线量化)QAT 量化感知训练(在线量化)量化为什么会带来加速?三、模型稀疏技…

Vue与Konva:解锁Canvas绘图的无限可能

前言 在现代Web开发中&#xff0c;动态、交互式的图形界面已成为提升用户体验的关键要素。Vue.js&#xff0c;作为一款轻量级且高效的前端框架&#xff0c;凭借其响应式数据绑定和组件化开发模式&#xff0c;赢得了众多开发者的青睐。而当Vue.js邂逅Konva.js&#xff0c;两者结…

8.JVM-方法区

前言 这次所讲述的是运行时数据区的最后一个部分 从线程共享与否的角度来看 ThreadLocal&#xff1a;如何保证多个线程在并发环境下的安全性&#xff1f;典型应用就是数据库连接管理&#xff0c;以及会话管理 栈、堆、方法区的交互关系 下面就涉及了对象的访问定位 Person&a…

面向对象程序设计-实验3

题目1 &#xff08;给出题目描述&#xff09;设计一个类CRectangle 代码清单&#xff1a; #include<iostream> using namespace std; class CRectangle { public: CRectangle() { m_l1.0; m_w1.0; } void get() { cin>>m_l; if(m_l>50) { m_l1.0; } cin&g…

边缘计算网关驱动智慧煤矿智能升级——实时预警、低延时决策与数字孪生护航矿山安全高效运营

迈向智能化煤矿管理新时代 工业物联网和边缘计算技术的迅猛发展&#xff0c;煤矿安全生产与高效运营正迎来全新变革。传统煤矿监控模式由于现场环境复杂、数据采集和传输延时较高&#xff0c;已难以满足当下高标准的安全管理要求。为此&#xff0c;借助边缘计算网关的实时数据…

deepseek本地部署+web图形化页面配置+对比其他ai模型

公众号&#xff1a;泷羽Sec-尘宇安全 前言 最近deepseek非常火&#xff0c;训练成本低&#xff0c;其预训练费用仅为OpenAI GPT-4o模型的不到十分之一&#xff0c;但是效果堪比OpenAI&#xff0c;使用深度思考&#xff0c;回答的问题很不错&#xff0c;啥都敢说 可惜惨遭ddos…