本页内容
- 准备工作
- 安装 Node.js
- 安装 PostgreSQL 数据库
- 安装 Wiki.js
- 将 Apache2 配置为反向代理
- 配置 Wiki.js 安装
- 总结
Wiki.js 是一款基于 Node.js、Git 和 Markdown 的免费开源 Wiki 软件。它基于 AGPL-v3 许可证发布,并在设计上注重性能与系统资源的节约。Wiki.js 是一款功能强大的 Wiki 软件,可安装在系统的任意位置;你可以将其安装在操作系统上,也可以使用 Heroku 等云服务进行安装,还能在 Docker 和 Kubernetes 等容器环境中部署 Wiki.js。
Wiki.js 兼容 PostgreSQL 数据库,并提供 50 多项集成,用于扩展身份验证、日志系统、搜索引擎、渲染和存储等功能。它是一款功能强大的 Wiki 软件,拥有美观且直观的管理后台与页面界面。它完全可定制,是用于记录技术栈文档的理想 Wiki 软件。
在本指南中,你将在一台 Ubuntu 22.04 服务器上安装并配置 Wiki.js,使用 PostgreSQL 作为默认数据库,并使用 Apache2 作为反向代理。同时,你的 Wiki.js 安装还将拥有安全的 HTTPS/SSL 连接。完成本指南后,你的 Ubuntu 系统上将拥有一个功能完整且安全的 Wiki.js。
准备工作
要完成本指南,你首先需要满足以下要求:
- 一台 Ubuntu 22.04 服务器。
- 一个具有 root/管理员权限的非 root 用户。
- 一个指向你 Ubuntu 服务器 IP 地址的域名。
安装 Node.js
在安装 Wiki.js 之前,你必须先安装 Wiki.js 所需的依赖项。
Wiki.js 是一款主要使用 JavaScript 编写的 Wiki 软件,因此你需要在此第一步中安装 JavaScript 运行时 Node.js。Ubuntu 默认软件源提供了 Node.js 软件包,但在本指南中,你将使用 Nodesource 软件源来安装 Node.js。
运行以下 curl 命令,将 Nodesource 软件源添加到你的 Ubuntu 系统中。在撰写本文时,Wiki.js 要求至少使用 Node.js v8 及以上版本。而在本指南中,你将安装 Node.js v16 的 LTS 版本。
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -

现在你可以使用以下 apt 命令安装 Node.js 软件包。
sudo apt install nodejs

安装完成后,使用以下命令检查并确认 Node.js 的版本。你应该在终端屏幕上看到 Node.js v16 LTS 版本。
node --version
npm --version

安装 PostgreSQL 数据库
Wiki.js 默认支持多种关系型数据库,例如 PostgreSQL、MySQL/MariaDB 和 SQLite(默认),但生产环境推荐使用 PostgreSQL 数据库。你将在 Ubuntu 系统上安装 PostgreSQL 软件包,随后为 Wiki.js 创建数据库和用户。
首先,运行以下 apt 命令在你的服务器上安装 PostgreSQL 数据库。输入 Y 确认安装并按 ENTER 继续,安装即会开始。
sudo apt install postgresql postgresql-common

安装完成后,运行以下 systemctl 命令检查并确认 PostgreSQL 服务。你应该会看到 PostgreSQL 服务已设置为开机自启(enabled),这意味着它将在系统启动时自动运行。PostgreSQL 服务当前的状态为 " Active(运行中)"。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
使用以下命令登录 PostgreSQL 控制台,以创建 PostgreSQL 数据库和用户。
sudo -u postgres psql
在你的 PostgreSQL 控制台中运行以下命令,为 Wiki.js 创建一个新数据库和用户。在本示例中,我们将创建一个名为 " wikijs " 的数据库,以及一个用户名为 " wiki "、密码为 " wikijspassword " 的用户。
CREATE DATABASE wikijs;
CREATE USER wiki WITH ENCRYPTED PASSWORD 'wikijspassword';
GRANT ALL PRIVILEGES ON DATABASE wikijs TO wiki;
现在你可以使用 " Ctrl+d " 退出 PostgreSQL 控制台,或者直接输入 " \q " 命令退出。

安装 Wiki.js
现在你将手动在 Ubuntu 系统上安装 Wiki.js。通过本指南,你将创建一个用于 Wiki.js 的系统用户,下载 Wiki.js 源代码,将其与 PostgreSQL 数据库进行配置,最后将 Wiki.js 作为 systemd 服务运行。
首先,运行以下命令为 Wiki.js 创建一个新用户。在本示例中,我们将创建一个名为 " wiki " 的新系统用户,其默认主目录为 " /opt/wikijs ";由于这是系统用户,我们将禁用其 shell 访问权限。
sudo useradd -r -d /opt/wikijs -s /usr/sbin/nologin wiki
现在使用以下 wget 命令下载 Wiki.js 源代码。
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
下载完成后,创建一个新目录 " /opt/wikijs " 并将 Wiki.js 源代码解压到其中。你应该能看到 Wiki.js 源代码已位于安装目录 "/opt/wikijs " 中。
mkdir -p /opt/wikijs
tar xzf wiki-js.tar.gz -C /opt/wikijs
要与 PostgreSQL 数据库配置 Wiki.js,你需要复制默认的示例配置文件 " config.sample.yml ",并使用文本编辑器对其进行修改。
运行以下命令,将 Wiki.js 示例配置文件复制到 " /opt/wikijs/config.yml" 。然后,使用 nano 编辑器编辑新文件 " /opt/wikijs/config.yml "。
cp /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
nano /opt/wikijs/config.yml
按如下所示修改默认配置。
在本示例中,我们将在默认 TCP 端口 " 3000 " 上运行 Wiki.js。请务必修改 PostgreSQL 的数据库名称、用户名和密码。在 " bindIP " 选项中,请改为 localhost 或 " 127.0.0.1 " 。对于 Wiki.js 的日志配置,我们将使用默认级别 " info " 和格式 " json " 。
# default port wikijs will run port: 3000 # PostgreSQL database details db: type: postgres host: localhost port: 5432 user: wiki pass: wikijspassword db: wikijs ssl: false # bind wikijs to localhost only bindIP: 127.0.0.1 # setup log and the format loglevel: info logFormat: json
完成后保存并关闭文件。

现在运行以下 chown 命令,将 Wiki.js 安装目录 "/opt/wikijs" 的所有权更改为用户 "wiki" 。
sudo chown -R wiki:wiki /opt/wikijs
在本示例中,我们将把 Wiki.js 作为 systemd 服务运行。因此,你需要为 Wiki.js 创建一个新的 systemd 服务文件。
运行以下命令,创建新的 systemd 服务文件 "/etc/systemd/system/wikijs.service" 。
sudo nano /etc/systemd/system/wikijs.service
将以下配置添加到该文件中。
[Unit] Description=Wiki.js After=network.target postgresql.service [Service] Type=simple ExecStart=/usr/bin/node server Restart=always User=wiki Environment=NODE_ENV=production WorkingDirectory=/opt/wikijs [Install] WantedBy=multi-user.target
完成后保存并关闭文件。
接下来,运行以下命令重新加载系统管理器并应用新的服务文件 " wikijs.service "
sudo systemctl daemon-reload
现在你可以使用以下命令启动并设置 " wikijs " 服务开机自启。
sudo systemctl start wikijs
sudo systemctl enable wikijs

最后,使用以下命令检查并确认 " wikijs " 服务的状态。你现在应该能看到 " wikijs " 服务正在默认 TCP 端口 " 3000 " 上运行,并以 PostgreSQL 作为默认数据库。
sudo systemctl status wikijs

将 Apache2 配置为反向代理
在本示例中,Wiki.js 当前运行在 TCP 端口 "3000" 上。为了对外部网络或互联网开放访问,更好的做法是在 Wiki.js 前端搭建反向代理,并在其之上启用 HTTPS/SSL,以保护凭据和登录信息。你还将使用 Apache2 作为 Wiki.js 的反向代理。
运行以下 apt 命令安装 Apache2 软件包。输入 Y 确认安装并按 ENTER 继续,安装即会开始。
sudo apt install apache2

安装完成后,运行以下 "ufw" 命令,在你的 Ubuntu 系统上开放 HTTP 和 HTTPS 端口。然后,验证 UFW 规则列表。
sudo ufw allow "Apache Full"
sudo ufw status

接下来,使用以下命令启用部分 Apache2 模块。你将使用这些模块来搭建 Apache2 反向代理。
sudo a2enmod proxy proxy_http ssl remoteip http2

现在使用以下命令创建一个新的 Apache2 虚拟主机配置文件 " /etc/apache2/sites-available/wikijs.conf " 。
sudo nano /etc/apache2/sites-available/wikijs.conf
将以下配置添加到文件中。在本示例中,我们将为 Wiki.js 安装使用域名 " wiki.howtoforge.local " 以及来自 Let's Encrypt 的 SSL 证书。请务必修改域名以及 SSL 证书的路径。
<VirtualHost *:80> ServerName wiki.howtoforge.local # Comment to prevent HTTP to HTTPS redirect Redirect permanent / https://wiki.howtoforge.local ErrorLog /var/log/apache2/wiki.howtoforge.local-error.log CustomLog /var/log/apache2/wiki.howtoforge.local-access.log combined </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName wiki.howtoforge.local ProxyPreserveHost On ProxyPass "/" "http://127.0.0.1:3000/" ProxyPassReverse "/" "http://127.0.0.1:3000/" SSLEngine on SSLCertificateFile /etc/letsencrypt/live/wiki.howtoforge.local/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/wiki.howtoforge.local/privkey.pem Protocols h2 http/1.1 # Enable only strong encryption ciphers and prefer versions with forwarding Secrecy SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5 SSLHonorCipherOrder on # Disable insecure SSL and TLS versions SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 ErrorLog /var/log/apache2/wiki.howtoforge.local-error.log CustomLog /var/log/apache2/wiki.howtoforge.local-access.log combined </VirtualHost> </IfModule>
完成后保存并关闭文件。
接下来,使用以下命令启用虚拟主机配置文件 " wikijs.conf " 。
sudo a2ensite wikijs.conf
使用以下命令检查并验证 Apache2 配置。如果输出类似 " Syntax OK(语法正确)" 的信息,则表示 Apache2 配置已就绪。然后,重启 Apache2 服务以使更改生效。
sudo apachectl configtest
sudo systemctl restart apache2

配置 Wiki.js 安装
打开你的网页浏览器,访问你的 Wiki.js 安装域名(例如:https://wiki.howtoforge.local/ )。
输入你的 Wiki.js 安装所需的新管理员邮箱、密码和站点 URL。然后,点击 " INSTALL(安装)" 按钮开始安装。

安装完成后,你将看到 Wiki.js 的登录页面。输入管理员邮箱和密码,然后点击 " Log in(登录)" 。

你现在将看到 Wiki.js 的欢迎信息。点击 " CREATE HOME PAGE(创建首页)" 按钮,为你的 Wiki.js 设置默认索引页。

选择你想使用的编辑器。在本示例中,我们将使用 Markdown 编辑器。

输入标题、描述以及其他信息,然后点击 " OK(确定)" 。

为你的 Wiki.js 输入索引页的详细内容,然后点击 " CREATE(创建)" 进行确认。

你应该能看到你刚刚创建的 Wiki.js 默认首页。

要访问 Wiki.js 管理后台,请点击左上角的齿轮设置图标。你将看到如下的 Wiki.js 管理后台。

总结
在本教程中,你已在 PostgreSQL 数据库和 Apache2 反向代理之上搭建了 Wiki.js,并运行在最新的 Ubuntu 22.04 服务器上。你还通过 UFW 防火墙以及 Apache 反向代理上启用的 SSL/HTTPS 保护了你的 Wiki.js。最后,你也为你的 Wiki.js 安装配置了默认首页(索引)。
你可以为你的 Wiki 项目创建更多内容并设置分类。你还可以为 Wiki.js 添加一些模块以扩展其功能,或者为 Wiki.js 设置新的主题。