UbuntuServer22.04部署Wiki.js做Wiki页面

本文仅仅是对官方文档进行一些翻译和添加一些过程中的小问题

为什么选择Wiki.js

  • 支持多种语言:富文本、Markdown、Asciidoc
  • 界面美观

安装

更新机器

# Fetch latest updates
sudo apt -qqy update

# Install all updates automatically
sudo DEBIAN_FRONTEND=noninteractive apt-get -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' dist-upgrade

安装 Docker

# Install dependencies to install Docker
sudo apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install ca-certificates curl gnupg lsb-release

# Register Docker package registry
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Refresh package udpates and install Docker
sudo apt -qqy update
sudo apt -qqy -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confold' install docker-ce docker-ce-cli containerd.io docker-compose-plugin

解决Docker权限问题

# 添加docker用户组
groupadd docker 

# 把当前用户加入docker用户组
gpasswd -a ${USER} docker

# 查看是否添加成功:
cat /etc/group | grep ^docker

# 重启docker
systemctl restart docker

# 更新用户组
newgrp docker

# 测试docker命令是否可以使用sudo正常使用
docker ps

设置容器

# Create installation directory for Wiki.js
mkdir -p /etc/wiki

# Generate DB secret
openssl rand -base64 32 > /etc/wiki/.db-secret
# 上面的命令为官方的手册,但是我的机器会提示权限问题,可以尝试下面的步骤
openssl rand -base64 32
# 复制上面的结果,并手动保存到/etc/wiki/.db-secret
vi /etc/wiki/.db-secret

# 下面进入到docker的设置步骤,如果遇到普通用户权限问题,可以尝试后面的步骤

# Create internal docker network
docker network create wikinet

# Create data volume for PostgreSQL
docker volume create pgdata

# Create the containers
docker create --name=db -e POSTGRES_DB=wiki -e POSTGRES_USER=wiki -e POSTGRES_PASSWORD_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -v pgdata:/var/lib/postgresql/data --restart=unless-stopped -h db --network=wikinet postgres:15
docker create --name=wiki -e DB_TYPE=postgres -e DB_HOST=db -e DB_PORT=5432 -e DB_PASS_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -e DB_USER=wiki -e DB_NAME=wiki -e UPGRADE_COMPANION=1 --restart=unless-stopped -h wiki --network=wikinet -p 80:3000 -p 443:3443 ghcr.io/requarks/wiki:2
docker create --name=wiki-update-companion -v /var/run/docker.sock:/var/run/docker.sock:ro --restart=unless-stopped -h wiki-update-companion --network=wikinet ghcr.io/requarks/wiki-update-companion:latest

设置防火墙

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

sudo ufw --force enable

启动容器

docker start db
docker start wiki
docker start wiki-update-companion

确认运行状态

在浏览器上,导航到您的服务器 IP/域名(例如http://your-server-ip/)。

通过Let's Encrypt实现HTTPS(可选)

  1. 在您的域名注册商上创建一条 A 记录 ,将域名/子域名(例如wiki.example.com)指向您的服务器 公共 IP
  2. 确保您能够使用 HTTP 上的该域名/子域名加载 wiki(例如http://wiki.example.com)。
  3. 通过SSH连接到您的服务器。
  4. 通过运行以下命令停止删除现有的 wiki 容器(不会丢失数据):
docker stop wiki
docker rm wiki
  1. 运行以下命令,将wiki.example.comadmin@example.com值替换为您自己的域名/子域名以及您的 wiki 管理员的电子邮件地址:
docker create --name=wiki -e LETSENCRYPT_DOMAIN=wiki.example.com -e LETSENCRYPT_EMAIL=admin@example.com -e SSL_ACTIVE=1 -e DB_TYPE=postgres -e DB_HOST=db -e DB_PORT=5432 -e DB_PASS_FILE=/etc/wiki/.db-secret -v /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro -e DB_USER=wiki -e DB_NAME=wiki -e UPGRADE_COMPANION=1 --restart=unless-stopped -h wiki --network=wikinet -p 80:3000 -p 443:3443 ghcr.io/requarks/wiki:2
  1. 通过运行以下命令启动容器:
docker start wiki
  1. 等待容器启动并且 Let's Encrypt 配置过程完成。您可以选择通过运行以下命令来查看容器日志:
docker logs wiki

当您在日志中看到以下行时,该过程将完成:

(LETSENCRYPT) New certifiate received successfully: [ COMPLETED ]
HTTPS Server on port: [ 3443 ]
HTTPS Server: [ RUNNING ]

  1. 使用 HTTPS 在网络浏览器中加载您的 wiki(例如https://wiki.example.com)。您的 wiki 现在使用免费的 Let's Encrypt 证书接受 HTTPS 请求!

自动 HTTP 到 HTTPS 重定向

默认情况下,对 HTTP 端口发出的请求不会重定向到 HTTPS。您可以使用以下说明启用此选项:

  1. 单击页面右上角的头像导航至管理区域。
  2. 从左侧导航菜单中,单击 SSL
  3. 在该部分旁边Redirect HTTP requests to HTTPS,单击 “打开” 以启用 HTTP 到 HTTPS 重定向。
  4. 现在,对 HTTP 端口发出的任何请求都会自动重定向到 HTTPS!

更新证书

您可以随时从 管理区域SSL续订证书。

如果您的证书已过期并且无法加载 wiki UI 来更新它,只需重新启动容器即可:

docker restart wiki

更新过程将在初始化期间自动运行。

升级

在安装指南中,您安装了 Wiki.js Update Companion。当有新版本可用时,此功能会自动执行升级过程。

当有新版本可用时,您将在管理区域中收到通知。要执行升级,请按照以下简单说明操作:

  1. 转到 “系统信息” 部分,然后单击 “执行升级” 按钮。
  2. 等待该过程完成。
  3. 您现在应该使用最新版本。就这么简单!

参考连接:

Docker 普通用户无权限问题

Install on Ubuntu 18.04 / 20.04 / 22.04 LTS

Wikijs简介-强大&可扩展的开源维基软件

最后修改:2023 年 10 月 17 日
如果觉得我的文章对你有用,请随意赞赏