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

news2025/2/10 23:43:18

一、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       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.coloradmin.cn/o/2295432.html

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

相关文章

CSS Overflow 属性详解:控制内容溢出的利器

在前端开发中,处理内容溢出是一个常见的需求。CSS 提供了 overflow 属性,帮助我们控制当内容超出元素框时的显示方式。本文将详细介绍 overflow 属性的各种取值及其应用场景。 1. 什么是 overflow 属性? overflow 属性用于控制当元素的内容…

根文件系统 Debian10【1】移植

1.开发背景 一般根文件系统使用 Busybox 或者是 Buildroot 构建,这样构建出来的文件系统比较小,但是不具备上网功能,扩展性比较差。随着 ARM 的日益强大,ARM 可以搭载更庞大复杂的系统,可以是 Ubuntu 或者 Debian 等发…

【PyQt】实现格式刷功能

实现格式刷功能 在Qt Designer中直接实现格式刷功能并不支持,但可以通过以下方法在应用程序中实现类似功能: 一、Qt Designer中的替代方案 1.手动设置样式表 在属性编辑器中复制样式表(QSS)内容,粘贴到其他控件。 …

2025年日祭

本文将同步发表于洛谷(暂无法访问)、CSDN 与 Github 个人博客(暂未发布) 本蒟自2025.2.8开始半停课。 任务计划(站外题与专题) 数了一下,通过人数比较高的题,也就是我准备补的题&a…

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上面&#xff…

[论文阅读] 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相关代码&#xff0c;需注意:row-key"(row) > { return row.id }" 以及 :reserve-selection"true" <div class"boxList"><div class"search-form"><!-- 搜索表单 --><el-form :inline"true&q…

(ICLR=2025)生成的表征对齐:训练扩散Transformer比你想象的更简单

生成的表征对齐&#xff1a;训练扩散Transformer比你想象的更简单 paper是KAIST发表在ICLR 2025的工作 paper title:REPRESENTATION ALIGNMENT FOR GENERATION: TRAINING DIFFUSION TRANSFORMERS IS EASIER THAN YOU THINK Code&#xff1a;链接 ABSTRACT 最近的研究表明&…

白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?

大家都知道&#xff0c;在设计的初期&#xff0c;我们通常会先绘制草图&#xff0c;然后再进行上色处理&#xff0c;最终才开始进行最终的设计工作。在这个上色的过程中&#xff0c;配色是至关重要的一环。这不仅方便了内部同事的评审&#xff0c;也让产品方和客户可以直观地了…

Bash (Bourne-Again Shell)、Zsh (Z Shell)

文章目录 1. 历史背景2. 主要区别3. 功能对比自动补全插件和主题路径扩展提示符定制 4. 性能5. 使用场景6. 如何切换 Shell7. 总结 以下是 Bash 和 Zsh 之间的主要区别&#xff0c;列成表格方便对比&#xff1a; 特性BashZsh默认Shell大多数Linux发行版默认ShellmacOS默认She…

pikachu[皮卡丘] 靶场全级别通关教程答案 以及 学习方法 如何通过渗透测试靶场挑战「pikachu」来精通Web渗透技巧? 一篇文章搞完这些问题

目录 Pikachu靶场 部署 暴力破解漏洞 学习地址: 靶场练习: 基于表单的暴力破解 验证码绕过(on server) 验证码绕过(on Client) token防爆破? XSS跨站脚本攻击 学习地址: 靶场练习&#xff1a; 反射型xss(get) 反射性xss(post) 存储型xss DOM型xss xss盲打 x…

汽车零部件工厂如何借助安灯呼叫按钮盒提升生产响应速度

在现代汽车零部件工厂的生产环境中&#xff0c;高效的信息传递和快速的响应速度是确保生产顺畅运行的关键。然而&#xff0c;传统的口头呼喊或现场沟通方式往往存在信息传递慢、现场嘈杂、责任人难以及时找到等问题&#xff0c;尤其在设备故障或缺料时&#xff0c;这些问题会导…

Idea 2024.3 使用CodeGPT插件整合Deepseek

哈喽&#xff0c;大家好&#xff0c;我是浮云&#xff0c;最近国产大模型Deepseek异常火爆&#xff0c;作为程序员我也试着玩了一下&#xff0c;首先作为简单的使用&#xff0c;大家进入官网&#xff0c;点击开始对话即可进行简单的聊天使用&#xff0c;点击获取手机app即可安装…

「vue3-element-admin」告别 vite-plugin-svg-icons!用 @unocss/preset-icons 加载本地 SVG 图标

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

docker /var/lib/docker/overlay2目录把磁盘空间占满问题

1、查看服务器磁盘空间 df -h果然100%了,docker系统文件把磁盘空间占满了。 2、进入overlay2目录&#xff0c;查找那个容器工作目录占用最高 cd /var/lib/docker/overlay2du -h --max-depth1详见下图 好家伙占用110G&#xff01;复制目录名称2c3c48ccac533c5d4a366d45a19bb9…