当前位置: 首页 > article >正文

《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


http://www.kler.cn/a/541420.html

相关文章:

  • 微信小程序分包异步化
  • [前端]CRX持久化
  • C语言学习笔记:子函数的调用实现各个位的累加和
  • 0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型
  • LeetCode 102. 二叉树的层序遍历题解
  • 迁移学习 Transfer Learning
  • AI算力的摆脱有点像发动机汽车变电动车
  • 第22章 Balking设计模式(Java高并发编程详解:多线程与系统设计)
  • 牛客周赛Round 80 —— 举手赢棋 python 补题 + 题解
  • 数据结构之八大排序算法
  • Visual Studio 2022 中使用 Google Test
  • k8s:pod被kill,显示command terminated with exit code 137
  • Python Pandas(7):Pandas 数据清洗
  • UDP小实验
  • #渗透测试#批量漏洞挖掘#某成科信票务管理系统 TicketManager SQL注入漏洞
  • MapReduce简单应用(三)——高级WordCount
  • C#操作excel数据,第一步先保存到Redis,第二步再保存到Sql Server数据库。第三步同步到MongoDB中
  • Lisp语言的算法
  • 51单片机独立按键的扩展应用
  • Linux ping不通百度但浏览器可以打开百度的的解决方法
  • 抖音“碰一碰”发视频:短视频社交的新玩法
  • 【设计模式】【行为型模式】职责链模式(Chain of Responsibility)
  • 集成学习 网络安全 网络安全集成服务
  • HTML之JavaScript变量和数据类型
  • 【OneAPI】通过网页预渲染让搜索引擎收录网页
  • 如何通过 bugreport 分析 Android 系统日志?