首页开发教程Wiki.js搭建教程:使用VPS部署团队知识库

Wiki.js搭建教程:使用VPS部署团队知识库

2026-09-08 15

公司的操作手册放在共享文件夹里,项目说明写在聊天群中,新员工遇到问题又要重新问一遍。资料分散之后,查找、更新和交接都会变得麻烦。把常用文档集中到知识库中,可以减少重复沟通,也便于维护统一版本。

Wiki.js是一款基于Node.js的开源知识库程序,可以部署在自己的服务器上,支持文档编辑、页面权限管理和多种登录方式。下面以Ubuntu VPS为例,介绍如何通过Docker部署Wiki.js,并完成域名、HTTPS和基础权限设置。

一、Wiki.js适合管理哪些资料

Wiki.js可以用于企业内部文档,也可以搭建面向客户的帮助中心。常见用途包括以下几类。

使用场景 可以整理的内容
员工培训 入职流程、岗位说明、常用工具操作
技术文档 部署步骤、接口说明、故障处理记录
客户支持 产品指南、常见问题、操作说明
项目协作 项目背景、需求说明、交付文档
个人知识管理 学习笔记、技术资料、工作记录

自行部署后,数据库和服务器由自己管理,备份、更新和权限设置也需要自行负责。已有Linux服务器管理经验的个人或团队,会更容易维护这套环境。

二、准备服务器和域名

本教程使用以下环境。

  • Ubuntu 24.04 LTS服务器
  • 拥有sudo权限的SSH账号
  • 建议至少2GB内存,具体需求取决于访问量和启用功能
  • 一个用于知识库的域名,例如wiki.example.com
  • Docker运行Wiki.js和PostgreSQL,Nginx负责网站入口

已有VPS可以继续使用。需要另外购买时,可以比较RackNerd VPS等方案,重点查看内存、磁盘、机房位置和备份条件。以下操作不依赖指定服务商。

RackNerd美国KVM VPS新一轮促销方案(限量销售,售完即止):

方案 CPU 内存 SSD存储 月流量 端口 价格 购买链接
1GB KVM VPS 1核 1GB 20GB SSD 3TB 1Gbps $21.99/年 点击购买
2GB KVM VPS 2核 2GB 35GB SSD 5TB 1Gbps $35.99/年 点击购买
4GB KVM VPS 3核 4GB 60GB SSD 7TB 1Gbps $59.99/年 点击购买
6GB KVM VPS 6核 6GB 100GB SSD 12TB 1Gbps $89.99/年 点击购买
8GB KVM VPS 7核 8GB 150GB SSD 20TB 1Gbps $119.99/年 点击购买

可选洛杉矶DC02、圣何塞、西雅图、达拉斯、芝加哥、纽约等机房,产品可访问RackNerd官网了解:点击直达

先将域名A记录指向服务器公网IPv4地址,并在服务商安全组中开放TCP 80和443端口,保留实际使用的SSH端口。如果配置了AAAA记录,还要确认服务器的IPv6连接正常。

搭建团队知识库,建议使用固定域名,方便成员访问和收藏。如果企业已经有官网域名,可以直接创建wiki.example.com这样的子域名,无需再购买一个域名。

还没有域名的用户,可以通过Gname注册域名,选择便于记忆、与企业或项目名称相关的名称。注册前一起查看首年价格和续费价格,准备长期使用的域名也要设置好到期提醒。

Gname优惠码:领取专属优惠券(点击优惠链接在Gname注册账号即可获得5张2.99美元COM域名优惠券,无需领取自动发放)

域名准备好后,在当前DNS服务商的解析面板中添加一条A记录。使用wiki.example.com时,主机记录填写wiki,记录值填写VPS的公网IPv4地址。等待解析生效,再继续配置Nginx和HTTPS。如果添加了AAAA记录,还需确认服务器的IPv6能够正常访问。

三、安装Docker和Nginx

登录服务器后更新系统。

sudo apt update
sudo apt upgrade -y

安装Docker、Nginx和证书工具。

sudo apt install -y docker.io nginx certbot python3-certbot-nginx

设置Docker和Nginx开机启动。

sudo systemctl enable --now docker
sudo systemctl enable --now nginx

查看Docker是否安装成功。

sudo docker version

如果系统更新要求重启,先重启服务器,再继续部署。本教程采用容器运行Wiki.js,无需另外安装宿主机Node.js。

四、创建PostgreSQL数据库

Wiki.js通过PostgreSQL保存页面、用户和配置信息。先创建应用网络与数据卷。

sudo docker network create wikijs-net
sudo docker volume create wikijs-db
sudo docker volume create wikijs-data

数据卷用于持久化保存文件,重建容器时可以继续使用。不过,数据卷仍在同一台服务器上,不能替代异地备份。

1、输入数据库密码

执行下面的命令,设置一个独立的强密码。输入内容不会显示在终端中。

read -r -s -p "请输入数据库强密码:" WIKI_DB_PASSWORD
printf '\n'

将密码保存到密码管理工具中,后续步骤也要在当前终端继续执行。

2、启动数据库容器

sudo docker run -d \
  --name wikijs-db \
  --network wikijs-net \
  --restart unless-stopped \
  -e POSTGRES_DB=wikijs \
  -e POSTGRES_USER=wikiuser \
  -e POSTGRES_PASSWORD="$WIKI_DB_PASSWORD" \
  -v wikijs-db:/var/lib/postgresql/data \
  postgres:16

这条命令创建wikijs数据库,并设置数据库用户。PostgreSQL没有映射公网端口,通过Docker内部网络与Wiki.js通信。

检查数据库状态。

sudo docker exec wikijs-db pg_isready -U wikiuser -d wikijs

出现accepting connections,表示数据库已经可以接受连接。

如果还没有准备完成,可以查看初始化日志。

sudo docker logs --tail 50 wikijs-db

这里的数据库初始化方式适用于专供Wiki.js使用的实例,不建议把其他业务数据库放进同一个容器共用。

五、部署Wiki.js

数据库准备完成后,启动Wiki.js容器。

sudo docker run -d \
  --name wikijs \
  --network wikijs-net \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -e DB_TYPE=postgres \
  -e DB_HOST=wikijs-db \
  -e DB_PORT=5432 \
  -e DB_USER=wikiuser \
  -e DB_PASS="$WIKI_DB_PASSWORD" \
  -e DB_NAME=wikijs \
  -v wikijs-data:/wiki/data \
  ghcr.io/requarks/wiki:2

清除当前终端里的密码变量。

unset WIKI_DB_PASSWORD

检查两个容器的运行状态。

sudo docker ps

查看Wiki.js启动日志。

sudo docker logs --tail 100 wikijs

3000端口只绑定到本机地址,外部访问稍后通过Nginx进入,无需开放公网3000端口。

数据库密码会保存在容器配置中,拥有Docker管理权限的人可以读取,因此不要随意给普通用户分配Docker权限。

六、配置域名访问和HTTPS

1、添加Nginx站点

创建配置文件。

sudo nano /etc/nginx/sites-available/wikijs

填写以下内容,将域名替换为自己的实际域名。

server {
    listen 80;
    server_name wiki.example.com;

    client_max_body_size 20m;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

保存后启用站点。

sudo ln -s /etc/nginx/sites-available/wikijs /etc/nginx/sites-enabled/wikijs
sudo nginx -t

只有配置检查通过后,才重新加载Nginx。

sudo systemctl reload nginx

如果服务器已启用UFW,允许HTTP和HTTPS访问。

sudo ufw allow 'Nginx Full'

2、申请证书

确认域名解析和80端口访问正常后,执行以下命令。

sudo certbot --nginx -d wiki.example.com --redirect

按照提示填写邮箱并完成验证。Certbot会申请证书,同时配置HTTP跳转HTTPS。

接着打开自己的知识库地址。

https://wiki.example.com

测试证书续期。

sudo certbot renew --dry-run

检查自动续期定时器。

sudo systemctl status certbot.timer

证书申请失败时,优先检查域名解析、错误的AAAA记录、安全组以及80端口是否能从外部访问。

七、创建管理员并设置文档权限

首次访问Wiki.js时,根据安装页面提示创建管理员账号,并填写正确的HTTPS站点地址。

初始化入口开放后,应尽快完成管理员设置。暂时不准备初始化的服务器,可以先限制访问来源。

进入后台后,先处理以下设置。

  • 设置站点名称、语言和时区
  • 创建文档首页和分类
  • 添加团队成员及用户组
  • 设置页面查看、编辑和管理权限
  • 按需配置邮件、登录方式和存储集成

企业内部知识库尤其要检查访客权限。可以使用管理员、普通成员和未登录访客分别测试,确认每类用户只能看到允许访问的内容。

文档目录也不必一开始就划分得太细。可以先建立“入职指南”“操作手册”“项目文档”“常见问题”几个栏目,再根据实际内容扩展。每份重要文档最好写明维护人和更新时间,方便后续修订。

八、备份知识库数据

知识库上线后,需要定期备份数据库、文件和部署配置。

创建备份目录。

sudo install -d -m 700 /var/backups/wikijs

导出数据库。

sudo sh -c 'docker exec wikijs-db pg_dump -U wikiuser -d wikijs -Fc > /var/backups/wikijs/wikijs-$(date +%F-%H%M%S).dump'

查看备份文件。

sudo ls -lh /var/backups/wikijs

文件生成后,还要确认命令没有报错,并定期进行恢复测试。仅看文件存在,无法证明备份一定可用。

建议同时保存以下内容。

备份对象 用途
PostgreSQL数据库 恢复页面、用户及配置信息
实际使用的附件存储 恢复图片和上传文件
Nginx配置 恢复域名入口与代理设置
容器参数及镜像版本 重建相同运行环境
存储集成配置 恢复外部存储连接

备份应另存一份到独立存储或其他服务器。启用了Git同步,也要保留数据库备份,因为页面同步通常不会完整覆盖用户、权限和全部应用设置。

九、常见问题

Wiki.js能作为公司内部知识库吗?

可以。配置登录方式、用户组和页面权限后,可以将文档限定为团队内部访问。设置完成后,应使用未登录窗口检查实际访问范围。

Docker容器删除后,文档会丢失吗?

本教程使用数据卷保存数据库和Wiki.js数据目录。只删除容器、保留数据卷时,可以用原有数据重新部署。

如果删除了数据卷,相关数据也可能丢失。不要在没有备份的情况下执行数据卷清理操作。

打开网站出现502怎么办?

先检查Wiki.js容器是否正常运行,再查看应用日志中的数据库连接信息。同时确认Nginx代理地址与容器端口映射一致。

sudo docker ps -a
sudo docker logs --tail 100 wikijs
sudo nginx -t

上传附件失败怎么办?

检查文件大小是否超过Wiki.js和Nginx的限制,再查看磁盘剩余空间。教程中的Nginx请求大小上限为20MB,需要上传更大的文件时,应同时检查应用设置。

升级时要注意什么?

先备份,再查看版本说明,并记录当前镜像版本。PostgreSQL跨大版本升级需要迁移数据,不能只把postgres:16改成新版本后直接使用旧数据目录。

自建知识库上线后还需要维护吗?

需要。系统更新、证书续期、磁盘容量、数据库备份和成员权限都要定期检查。团队还应安排文档维护人,避免知识库上线后内容长期无人更新。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章