wiki.js开源文档库安装与功能介绍

一、介绍

  1. 官网:
  2. wiki.js官方文档

1.1 基本概述

https://news.qq.com/rain/a/20230324A03IUX00
Wiki.js是一款基于Node.js和Vue技术栈可高度扩展的、开源Wiki 软件。适用于团队协作共同编辑文档。

尽管市面上已经有很多 Wiki.js 的同类竞品,比如 Confluence、语雀、Notion 等等,但它基本上已经为用户考虑好了搭建一个 Wiki 站点可能会用到的解决方案,包括存储、评论系统、访问统计以及全文搜索等等。而这些特性既是「powerful」, 同时又能「extensible」。

1.2 功能亮点

1.2.1 文档管理

  • 在线编辑文档:Wiki.js 内置了多种的编辑器供你选择,如 Markdown、Visual Editor(即 WYSIWYG,所见即所得)、AsciiDoc、原始的 HTML 编辑器等。这个是知识库最基本的功能,既然要团队能共享文档,那就要解决每个人文档一致性问题。在统一的web端编辑是最简单的解决方案。
  • 文档版本控制:可以恢复历史版本,还能可视化比较同一文档的不同版本。
  • 文档搜索:Wiki.js 基本上也涵盖了主流的全文搜索引擎方案,包括 AWS CloudSearch、Azure Search、Elasticsearch 等。

1.2.2 存储与备份

支持 Git 协议的存储与同步。如:github, gitlab等git服务。简单来说就是,即便你不在 Wiki.js 内置的编辑器上编辑内容,但只要你把创作的内容上传到主流的 Git 存储平台如 GitHub 或 GitLab 等,之后在后台界面中勾选并配置 Git 存储选项,就那么 Wiki.js 可以自动将内容同步到站点上而无须手动操作,实现从写作到发布的一站式闭环!wiki.js官方文档就是存储在github上的。通过我的实践,完全可以私有化本地git服务,不需要通过github这样的网站。这对数据本地安全是很有用的功能。

除了Git同步,你也可以选择本地文件的存储方式,这样可以开启每日备份选项。

1.2.3 安全与权限

用户管理系统,简化用户登录和权限管理流程。
身份认证。除了直接在注册好的 Wiki.js 站点上注册之外,Wiki.js 还集成了国外多个平台的身份验证,如 GitHub、Google、Slack 等,如果你想接入自己的身份认证服务,那么 Wiki.js 也预留了 OAuth2、CAS、Generic OpenID Connect 等多种认证服务接口。

1.2.4 自动化接口

https://blog.csdn.net/weixin_38299857/article/details/145519850
Wiki.js 也预留了自动化接口,在后台中配置了 API 访问密钥之后即可以一边参考接口文档,一边通过 GraphQL 接口来与其他自动化工具集成或关联。当然在未来的版本中也会提供 Webhook 的功能。

1.2.5 web界面可定制

外观定制,自定义主题。就是通过自己写CSS,这点对界面美观有要求的人可以研究。

二、docker方式安装

2.1 镜像下载

这里介绍的是采用docker方式安装wiki.js环境。通常镜像下载是比较麻烦的事情,可以通过设置代理下载。docker image也可以在其他网络好的设备上下载后保存为tar包,拷贝到部署环境也是完全可行的。

docker pull ghcr.io/requarks/wiki:2.5

docker pull docker.xuanyuan.me/library/mysql:5.7

2.2 部署

docker安装wiki.js mysql。由于我只是原型验证下wiki.js部署,用的是mysql数据库。

2.2.1 加载镜像

# docker load < mysql.tar
441e16cac4fe: Loading layer [==================================================>]  1.536kB/1.536kB
Loaded image: docker.xuanyuan.me/library/mysql:5.7

# docker load < wikijs.tar
340489cca797: Loading layer [==================================================>]  36.86kB/36.86kB
Loaded image: ghcr.io/requarks/wiki:2.5

2.2.2 创建docker网络

这个网络是给wiki.js与mysql通信用的。

docker network create wiki-net

2.2.3 部署mysql

docker run --name mysql-wiki -e MYSQL_ROOT_PASSWORD=my-pwd -e MYSQL_DATABASE=wikijs -e MYSQL_USER=wikijs -e MYSQL_PASSWORD=wikijs-pwd --network=wiki-net -d docker.xuanyuan.me/library/mysql:5.7
2868f7c555837e011da1593ef5cc66d2d111a20ed41c898be379a56e2e5f66e3

2.2.4 部署wiki.js

docker run --name wikijs -e DB_TYPE=mysql -e DB_HOST=mysql-wiki -e DB_PORT=3306 -e DB_USER=wikijs -e DB_PASS=wikijs-pwd -e DB_NAME=wikijs --network=wiki-net -p 8080:3000 -d ghcr.io/requarks/wiki:2.5
85a2304482956e1609cff23ba9a0e41b64556f0101dcacac108910e0ff0a90e7

2.2.4.1 wiki.js调试方式

docker exec -it wikijs bash

如果有旧docker占用参数名就要先删除。

# docker run --name wikijs -e DB_TYPE=mysql -e DB_HOST=mysql-wiki -e DB_PORT=3306 -e DB_USER=wikijs -e DB_PASS=wikijs-pwd -e DB_NAME=wikijs --network=wiki-net -p 8080:3000 -d ghcr.io/requarks/wiki:2.5

docker: Error response from daemon: Conflict. The container name "/wikijs" is already in use by container "842d06c018b86e0818f14d35bceddce7317a9b6b1dbf1f824ecf3a0c90b8848f". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

# docker rm 842d06c018b86e0
842d06c018b86e0

2.2.5 验证部署正常

2.2.5.1 验证docker正常

可以看到两个docker都正常运行。

# docker ps
CONTAINER ID   IMAGE                                  COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
85a230448295   ghcr.io/requarks/wiki:2.5              "docker-entrypoint.s…"   8 minutes ago    Up 8 minutes    3443/tcp, 0.0.0.0:8080->3000/tcp, :::8080->3000/tcp   wikijs
2868f7c55583   docker.xuanyuan.me/library/mysql:5.7   "docker-entrypoint.s…"   13 minutes ago   Up 13 minutes   3306/tcp, 33060/tcp                                   mysql-wiki

2.2.5.2 mysql数据库调试方式

查看数据库数据,在连接好wikijs后可以看是否有数据写入。

# docker exec -it mysql-wiki bash
bash-4.2# mysql -u wikijs -p wikijs
Enter password: wikijs-pwd   <<< 密码是docker部署时设置的密码

进入数据库界面后查看数据。

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wikijs             |
+--------------------+
2 rows in set (0.00 sec)

mysql> SHOW TABLES;
+------------------+
| Tables_in_wikijs |   <<< wikijs相关数据,说明wiki.js已经连接上了mysql。
+------------------+
| analytics        |
| apiKeys          |
| assetData        |
| assetFolders     |
| assets           |
| authentication   |
| commentProviders |
| comments         |
| editors          |
| groups           |
| locales          |
| loggers          |
| migrations       |
| migrations_lock  |
| navigation       |
| pageHistory      |
| pageHistoryTags  |
| pageLinks        |
| pageTags         |
| pageTree         |
| pages            |
| renderers        |
| searchEngines    |
| settings         |
| storage          |
| tags             |
| userAvatars      |
| userGroups       |
| userKeys         |
| users            |
+------------------+
30 rows in set (0.00 sec)

2.2.6 访问wiki.js web页面

wiki.js设置的http服务监听的是8080端口。只要web访问这个端口就可以访问web页面。

# netstat -tunple
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
           
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      0          502679     21255/docker-proxy  

tcp6       0      0 :::8080                 :::*                    LISTEN      0          509743     21262/docker-proxy  

wiki.js本地浏览器可以访问wiki.js的http服务地址:http://localhost:8080/。我的wiki.js部署在远端服务器172.16.100.43上就需要把localhost替换为服务器IP:http://172.16.100.43:8080/

可以看到web页面就整个wiki.js环境安装成功了!

2.3 基本使用

2.3.1 初始界面

初始的web界面需要设置管理员账号密码。可以随便填一个不存在的邮箱都行。

wikijs01

2.3.2 管理员登录

wikijs02

登录后界面:

wikijs03

2.3.3 系统设置

wikijs04

三、功能原型验证

3.1 文档功能验证

3.1.1 搜索功能

验证结果:初始部署只能搜索标题,文档内容不能搜索。可能需要通过安装拓展插件实现。

wikijs06

3.1.2 文档协同编辑

可以多人编辑同一篇文档。这个是团队必须要的一个功能。文档保存按钮就会触发一次git commit。

验证步骤:

  1. 用户1创建一篇文档。
  2. 登录用户2编辑同一篇文档。

3.1.2.1 设置普通用户编辑权限

wikijs07

页面权限:

wikijs08

3.1.2.2 普通用户编辑效果

普通用户界面出现编辑图标则具有编辑权限。
wikijs09

用户2成功编辑并保存正文则说明共同编辑是成功的。

wikijs10

3.1.3 文档插入图片

一篇文档不只有文字,也应该有插图。

3.1.3.1 插入流程图

支持draw.io

wikijs11

3.1.3.2 插入位图

文档编辑界面有插入图片(png, jpg)的菜单可以上传图片。

3.2 git存储功能验证

因为很多这些软件都想把数据限制在他自己软件才能读取,这样对用户迁移就很不灵活。一个团队的文档可能以后要整体迁移的,如果数据被限制了,那如果遇到这个软件以后开始收费或闭源将是很麻烦的事情。

3.2.1 设置

看菜单有git仓库设置功能。而且我采用一个本地的git仓库而不需要连接外网。
这里我填的远端仓库地址是一个内网私有地址:root@172.18.0.1:/home/git。只需要保证wiki.js的docker里能确认git clone这个地址能成功即可。

image

storage.status可以看到git配置成功!
如果不成功,调试方法也是根据storage.status的日志提示。

3.2.2 同步验证

git拉取的新文档
wikijs14

wiki.js里查看git log与远端仓库git log对比则可以说明wiki.js与git仓库双向同步验证完成。

posted @ 2025-07-20 12:19  liqinglucky  阅读(334)  评论(0)    收藏  举报