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(可选)
- 在您的域名注册商上创建一条 A 记录 ,将域名/子域名(例如wiki.example.com)指向您的服务器 公共 IP 。
- 确保您能够使用 HTTP 上的该域名/子域名加载 wiki(例如http://wiki.example.com)。
- 通过SSH连接到您的服务器。
- 通过运行以下命令停止并删除现有的 wiki 容器(不会丢失数据):
docker stop wiki
docker rm wiki
- 运行以下命令,将
wiki.example.com
和admin@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
- 通过运行以下命令启动容器:
docker start wiki
- 等待容器启动并且 Let's Encrypt 配置过程完成。您可以选择通过运行以下命令来查看容器日志:
docker logs wiki
当您在日志中看到以下行时,该过程将完成:
(LETSENCRYPT) New certifiate received successfully: [ COMPLETED ]
HTTPS Server on port: [ 3443 ]
HTTPS Server: [ RUNNING ]
- 使用 HTTPS 在网络浏览器中加载您的 wiki(例如https://wiki.example.com)。您的 wiki 现在使用免费的 Let's Encrypt 证书接受 HTTPS 请求!
自动 HTTP 到 HTTPS 重定向
默认情况下,对 HTTP 端口发出的请求不会重定向到 HTTPS。您可以使用以下说明启用此选项:
- 单击页面右上角的头像导航至管理区域。
- 从左侧导航菜单中,单击 SSL 。
- 在该部分旁边
Redirect HTTP requests to HTTPS
,单击 “打开” 以启用 HTTP 到 HTTPS 重定向。 - 现在,对 HTTP 端口发出的任何请求都会自动重定向到 HTTPS!
更新证书
您可以随时从 管理区域 > SSL续订证书。
如果您的证书已过期并且无法加载 wiki UI 来更新它,只需重新启动容器即可:
docker restart wiki
更新过程将在初始化期间自动运行。
升级
在安装指南中,您安装了 Wiki.js Update Companion。当有新版本可用时,此功能会自动执行升级过程。
当有新版本可用时,您将在管理区域中收到通知。要执行升级,请按照以下简单说明操作:
- 转到 “系统信息” 部分,然后单击 “执行升级” 按钮。
- 等待该过程完成。
- 您现在应该使用最新版本。就这么简单!