恒讯科技

广告

DangYun

广告

RackNerd VPS搭建Wiki.js知识库教程(Docker版)

美国云服务器推荐

Wiki.js是一款基于Node.js的开源Wiki程序,支持Markdown编辑、用户权限管理以及Git等存储集成。它可以用于个人笔记、企业内部文档和产品帮助中心。自行部署无需支付Wiki.js软件订阅费,但服务器、备份和日常维护仍需要投入。下面使用Docker部署Wiki.js,通过PostgreSQL保存数据,再用Nginx绑定域名并配置HTTPS。

一、部署前需要准备什么

本教程以一台新装Ubuntu 24.04 LTS的VPS为例,需要具备以下条件。

  • 可以通过SSH登录,并拥有sudo权限
  • 建议至少配置2GB内存,为数据库和应用运行留出余量
  • 一个准备绑定知识库的域名,例如wiki.example.com
  • 将域名A记录解析到VPS公网IPv4地址
  • 在服务商安全组中开放TCP 80和443端口,并保留SSH管理端口

如果域名还配置了AAAA记录,需要确认它指向这台服务器且IPv6可以正常访问。错误的AAAA记录可能影响网站访问和证书签发。

已有VPS可以直接使用。尚未购买服务器,可以查看RackNerd VPS方案,根据团队所在地、文档规模和备份空间选择配置。本文没有对其具体套餐进行实测,部署步骤同样适用于其他支持Docker的Linux 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官网了解:点击直达

这里采用容器部署,Wiki.js运行环境由镜像提供,无需另外在宿主机上安装Node.js。

二、更新系统并安装Docker

通过SSH登录服务器,更新软件包索引和系统。

sudo apt update
sudo apt upgrade -y

安装Docker、Nginx以及后面申请证书需要的Certbot。

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

如果系统更新提示需要重启,可以先重启VPS,重新登录后继续操作。

三、创建数据库和持久化存储

Wiki.js需要数据库保存页面、用户和配置信息。本教程使用PostgreSQL,并创建独立的Docker网络,让应用通过容器名称连接数据库。

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

其中,wikijs-db保存数据库文件,wikijs-data用于保存Wiki.js数据目录中的文件。删除、重建容器时,这两个数据卷可以继续保留。

1、设置数据库密码

在当前终端中输入以下命令,交互式设置密码。输入时不会显示字符。

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

请使用独立的强密码,并保存到密码管理工具中。后续启动Wiki.js时,需要在同一个终端中继续使用这个变量。

2、启动PostgreSQL

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数据库和wikiuser用户。数据库没有映射到公网端口,只在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 2系列镜像创建应用容器。

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
sudo docker logs --tail 100 wikijs

本教程将3000端口绑定到127.0.0.1,由Nginx负责对外提供访问。因此,不需要在安全组开放3000端口,也不能直接通过公网IP加3000端口访问安装页面。

数据库密码仍保存在容器配置中,拥有服务器管理员或Docker管理权限的人可以读取。服务器账号和Docker权限应交给可信的管理员。

五、使用Nginx绑定域名

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

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

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

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

创建Nginx站点配置文件。

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

写入以下内容,将wiki.example.com替换为自己的域名。

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;
    }
}

这里将上传请求大小限制为20MB。如果后续需要上传更大的附件,还要检查Wiki.js自身的上传设置,并相应调整Nginx限制。

启用站点并检查配置。

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'

不要在未确认SSH放行规则前直接启用防火墙,以免中断远程管理。

六、申请HTTPS证书

只有前面的80端口配置,网站仍然使用HTTP。接下来通过Certbot申请证书,并将HTTP访问重定向到HTTPS。

将命令中的域名替换为实际域名。

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

按照提示填写邮箱、接受服务条款并完成验证。申请证书时,域名必须正确解析,外部网络也需要能够访问服务器的80端口。

完成后,在浏览器中打开:

https://wiki.example.com

检查证书自动续期是否可以正常执行。

sudo certbot renew --dry-run

再确认续期定时器状态。

sudo systemctl status certbot.timer

如果测试失败,应先处理域名解析、防火墙或Nginx配置问题,避免证书到期后网站出现访问警告。

七、完成Wiki.js初始化

打开网站后,按安装页面提示创建管理员账号,并将站点地址设置为实际使用的HTTPS域名。

初始化页面可以创建首个管理员,建议部署时尽快完成设置。如果暂时不准备初始化,可以先通过安全组限制访问来源。

进入后台后,可以依次完成以下操作。

  • 设置网站名称、语言和时区。
  • 创建首页及文档目录。
  • 添加团队成员并分配用户组。
  • 设置页面的查看和编辑权限。
  • 按需要配置认证方式和存储集成。

如果用于企业内部知识库,尤其要检查访客用户组的权限。完成设置后,用浏览器无痕窗口访问网站,确认未登录用户无法查看内部页面和附件。

Wiki.js中的Git等存储集成,需要另外配置。启用同步后,也应检查同步范围与执行结果,不能把页面同步直接当作完整数据库备份。

八、备份与日常维护

知识库投入使用后,数据库备份比最初安装更重要。管理员误删页面、服务器故障或升级失败,都可能影响资料使用。

1、备份数据库

创建备份目录。

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

导出PostgreSQL数据库。

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

备份文件保存在当前VPS上,还应定期复制到另一台服务器或独立存储中,并检查导出命令是否成功。

除了数据库,也要保存Nginx配置、容器部署参数,以及所使用文件存储中的数据。备份后应在测试环境验证能否恢复,避免直到故障发生才发现文件不可用。

2、排查运行问题

查看应用日志。

sudo docker logs --tail 100 wikijs

查看数据库日志。

sudo docker logs --tail 100 wikijs-db

检查磁盘空间。

df -h
sudo docker system df

附件、数据库和日志都会逐渐占用磁盘。不要随意执行带有删除数据卷选项的清理命令,以免误删持久化数据。

3、升级前先备份

教程中的ghcr.io/requarks/wiki:2会随Wiki.js 2系列版本更新。长期使用时,可以记录当前镜像版本或摘要,方便出现问题时回退。

升级Wiki.js前,先备份数据库与文件,再检查版本说明。PostgreSQL跨大版本升级需要单独进行数据迁移,不能仅更换镜像标签后直接挂载旧数据库目录。

常见问题

Wiki.js需要付费吗?

Wiki.js是开源软件,自行部署不需要支付软件订阅费。VPS、域名、备份存储和运维服务可能产生费用。

1GB内存的VPS能运行吗?

轻量环境有可能运行,但同一台服务器还要承担数据库和Nginx的资源消耗。新部署建议从2GB内存考虑,实际配置再根据访问量、附件数量和启用功能调整。

Wiki.js适合内部知识库吗?

可以。部署后需要配置认证、用户组和页面权限,并检查未登录用户的访问范围。安装完成不代表已经设置为私有站点。

出现502 Bad Gateway怎么办?

先检查Wiki.js容器是否运行,以及日志中是否存在数据库连接错误。再确认Nginx代理地址为127.0.0.1:3000,与容器端口映射一致。

相关阅读:

RackNerd VPS搭建Mail-in-a-Box邮件服务器教程

RackNerd VPS部署Hermes Agent教程:Ubuntu 24.04自建AI助手

RackNerd国外VPS上搭建Nextcloud云存储教程

RackNerd VPS部署Mastodon实例指南

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:938255063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RakSmart美国服务器
下一篇
RackNerd VPS搭建Wiki.js知识库教程
已经没有了
返回顶部