wiki.js知识库系统搭建和配置总结

wiki.js知识库系统搭建和配置总结 wiki.js知识库成熟度很高官方文档完备试用这个知识库后比较满意而且wiki.js对离线环境相对友好包括创建用户等不需要邮箱认证比较简单。这里分别从在线环境和离线环境来记录软件的安装和配置。一、联网环境安装wiki.js最主要的参考资料还是官方文档地址https://docs.requarks.io/wiki.js的运行环境依赖主要是数据库和node.js如果docker安装node.js就不用管了docker再运行一个数据库即可。推荐的数据库是PostgreSQL。推荐在Linux环境下安装下面的安装记录都是在Ubuntu 24系统下完成。1、安装docker-ce按照文档操作使用官方docker源大概率会因为网络导致下载失败所以换成国内源下面安装步骤阿里云文档提供的 https://developer.aliyun.com/mirror/docker-ce。# step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get install ca-certificates curl gnupg # step 2: 信任 Docker 的 GPG 公钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # Step 3: 写入软件源信息 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # Step 4: 安装Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # apt-cache madison docker-ce # docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages # docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages # Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial) # sudo apt-get -y install docker-ce[VERSION]2、利用docker创建PostgreSQL、wiki.js和wiki.js升级程序的容器# 在本地创建Wiki.js工作目录 mkdir -p /etc/wiki # 创建数据库用户密码文件在创建容器时密码文件比用密码更安全 openssl rand -base64 32 /etc/wiki/.db-secret # 创建docker network docker network create wikinet # Create data volume for PostgreSQL docker volume create pgdata # 利用docker create创建容器这里创建了三个容器包括db、wiki、wiki-update-companion # 这里同样可能遇到网络问题需要docker增加其他镜像源 sudo docker create --namedb -e POSTGRES_DBwiki -e POSTGRES_USERwiki -e POSTGRES_PASSWORD_FILE/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -v pgdata:/var/lib/postgresql/data --restartunless-stopped -h db --networkwikinet postgres:17 sudo docker create --namewiki -e DB_TYPEpostgres -e DB_HOSTdb -e DB_PORT5432 -e DB_PASS_FILE/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -e DB_USERwiki -e DB_NAMEwiki -e UPGRADE_COMPANION1 --restartunless-stopped -h wiki --networkwikinet -p 80:3000 -p 443:3443 ghcr.io/requarks/wiki:2 sudo docker create --namewiki-update-companion -v /var/run/docker.sock:/var/run/docker.sock:ro --restartunless-stopped -h wiki-update-companion --networkwikinet ghcr.io/requarks/wiki-update-companion:latest3、启动docker容器# 如果没有防火墙直接启动容器 # 停止容器的话把start换成stop即可 sudo docker start db sudo docker start wiki sudo docker start wiki-update-companion # 如果有问题可以用下面命令查看wiki.js日志信息 sudo docker logs wiki通过安装docker、创建应用容器、启动容器简单3步即可完成最小化安装。此时打开浏览器访问服务器ip端口3000就能打开wiki.js页面了要使用wiki.js还需要简单初始化配置也比较简单。进入系统后可以在设置页面选择中文。如果希望使用Docker Compose更方便的管理容器官方文档也提供了参考写法。参考https://docs.requarks.io/install/dockerwiki.js支持多种全文搜索引擎对比下比较好用的是ElasticsearchElasticsearch也可以用docker安装。二、离线环境安装wiki.js离线环境安装wiki.js使用docker安装应该是最方便的利用docker save命令很容易将image保存为tar压缩文件到本地然后在离线环境中用docker load导入image的tar压缩文件。1、在线环境docker导出所需image# 离线环境没法自动升级所以升级程序就不需要部署了 sudo docker save -o db.tar postgres:17 sudo docker save -o wikijs.tar ghcr.io/requarks/wiki2、离线环境docker导入imagesudo docker load -i db.tar sudo docker load -i wiki.tar3、离线环境额外配置wiki.jswiki.js默认是英语环境其他语言包并没有包含在镜像中需要在线额外加载对于离线环境需要额外配置。首先是从官方提供的地址https://github.com/Requarks/wiki-localization下载最新的语言包。注意不能只下载中文(zh.json)locales.json也是必须的。最好右上角直接下载整个项目文件。把压缩包传输到离线环境中解压到/etc/wiki/data/sideload目录下或其他目录。关于此的参考文档在这里https://docs.requarks.io/install/sideload在/etc/wiki/下新增一个配置文件config.yml。可以从官网下载wiki.js的压缩包从利明提取config.sample.yml并重命名。或者从docker容器里cp一个。增加offline: true选项同时会自动开启sideloadsideload加载语言包。# 从在线环境的wiki容器里复制config.yml到本地 sudo docker cp wiki:/wiki/config.yml ./ # 修改配置文件增加离线模式 vi config.yml # 这是从容器中提取的配置文件并增加了离线模式配置 # 可以看到参数都是通过docker环境变量传入 port: 3000 bindIP: 0.0.0.0 db: type: $(DB_TYPE) host: $(DB_HOST) port: $(DB_PORT) user: $(DB_USER) pass: $(DB_PASS) db: $(DB_NAME) storage: $(DB_FILEPATH) ssl: $(DB_SSL) ssl: enabled: $(SSL_ACTIVE) port: 3443 provider: letsencrypt domain: $(LETSENCRYPT_DOMAIN) subscriberEmail: $(LETSENCRYPT_EMAIL) logLevel: $(LOG_LEVEL:info) logFormat: $(LOG_FORMAT:default) ha: $(HA_ACTIVE) offline: true # 增加配置docker create部分也需要修改一下把本地的config.yml和sideload目录映射给wiki容器。wiki容器修改后如下就是增加了-v参数来映射文件。sudo docker create --namewiki -e DB_TYPEpostgres -e DB_HOSTdb -e DB_PORT5432 -e DB_PASS_FILE/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -v /etc/wiki/data/sideload:/wiki/data/sideload -v /etc/wiki/config.yml:/wiki/config.yml -e DB_USERwiki -e DB_NAMEwiki -e UPGRADE_COMPANION1 --restartunless-stopped -h wiki --networkwikinet -p 80:3000 -p 443:3443 ghcr.io/requarks/wiki:2修改后启动容器就可以选择中文语言了。3、用deb安装ElasticsearchElasticsearch没有选择容器安装而是用的deb希望这样性能能好些而且es的安装比较简单deb安装足够方便。wiki.js最高只支持es 8x版本安装过程参考官方文档https://www.elastic.co/guide/en/elasticsearch/reference/8.19/deb.html从官网下载deb文件。地址wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.19.12-amd64.deb或者从官方网页下载更多选项地址https://www.elastic.co/downloads/past-releases/elasticsearch-8-19-12复制到离线环境用dpkg -i 安装。sudo dpkg -i elasticsearch-8.19.12-amd64.deb # 软件自动安装系统服务设置服务开机启动 sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service # 启动es sudo systemctl start elasticsearch # 停止es sudo systemctl stop elasticsearch # 查看状态 sudo systemctl status elasticsearch # 有问题看日志 tail -n 500 /var/log/elasticsearch/在deb安装Elasticsearch过程中会屏显日志输出默认生成的超级用户elastic随机密码以及通信使用的tls证书有2种证书一种用于客户端访问通信一种用户集群互访。# 生成密码如果找不到可以用命令重置 elasticsearch-reset-password程序启动后可以用curl测试程序是否正常运行默认Elasticsearch是用户名密码验证。可以验证证书也可以用-k参数跳过证书验证。正常运行的话会有返回消息。# 测试es是否正确运行 curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:生成的密码 https://localhost:9200 # 跳过验证证书 curl -XGET -u elastic:生成的密码 https://localhost:9200/ -k4、安装Elasticsearch ik中文分词插件这个中文分词插件可以更好支持中文必须安装。项目地址https://release.infinilabs.com/analysis-ik/stable/# 下载压缩包 https://release.infinilabs.com/analysis-ik/stable/ # 在elastic安装目录的plugins包下创建IK文件夹将下载好的zip包解压在IK文件夹中重启elastic sudo unzip elasticsearch-analysis-ik-8.19.10.zip -d /usr/share/elasticsearch/plugins/ik5. 修改Elasticsearch配置文件这里有个坑我用的Elasticsearch 8.19.12安装包生成的配置文件有2处重复的cluster.initial_master_nodes得删除一处否则后面的覆盖前面的导致配置异常。另外就是xpack.security.enabled默认开启如何总是出问题可以选择关闭身份认证。# 编辑elasticsearch配置文件 $ vi /etc/elasticsearch/elasticsearch.yml # 需要修改内容参考了其他文章 # cluster.name集群名称根据自己业务启个合适的名字 # node.name给节点起个名字一般使用node-1 、node-2 、… # path.data数据存放的位置比如/data/elasticsearch/data # path.logs日志存放的位置比如/data/elasticsearch/logs # network.host配置成本机 IP 地址用于集群机器之间相互通信。 # http.portES 服务访问的端口号比如9200 # discovery.seed_hosts配置为 master 候选者节点。如果要与其他节点组成集群这里必须配置。比如[10.20.1.29, 10.20.0.91, 10.20.0.93] # cluster.initial_master_nodes首次启动集群时配置主节点的候选节点该配置里的节点都是候选节点。比如[node-1, node-2, node-3] # xpack.security.enabled: false 是否开启安全性默认是开启但是测试wiki.js功能是否发现总有问题还是关闭了6、wiki.js修改搜索引擎为Elasticsearch 并支持中文检索在wiki.js的搜索引擎设置页面按下图设置。host处可以在链接中增加用户名和密码tls证书校验可以不开否则还需要配置证书证书还要定期更新有些麻烦。三、遗留问题wiki.js相对docmost要成熟很多界面很漂亮。但是上传附件的是存储在数据库中。即便开启了本地存储选项数据库和本地会同时存储附件。如果长期使用大量附件上传到数据库内是否有些问题能否附件不存储在数据库中