wikijs是一个在线多人协作(带git版本管理)的wiki套件

相比于其他wiki的展示功能为主,wikijs将权限管理+多人协作作为了首个要素,其支持富文本编辑器/mardown编辑器/html源码编辑

1.Docker-cli部署

在云服务器安装 https://docs.requarks.io/install/ubuntu

可以跟着官方的指令走,下面节选了最终3个创建容器的命令。

配置密钥

1
2
3
4
5
6
7
8
9
10
mkdir -p /etc/wiki

## Generate DB secret
openssl rand -base64 32 > /etc/wiki/.db-secret

## Create internal docker network
docker network create wikinet

## Create data volume for PostgreSQL
docker volume create pgdata

配置数据库

1
2
3
4
5
6
7
8
9
10
11
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:11

配置主容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 3000:3000 -p 3443:3443 \
ghcr.io/requarks/wiki:2

升级伴侣

1
2
3
4
5
6
7
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

配置防火墙

1
2
3
4
5
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

sudo ufw --force enable

运行容器

1
2
3
docker start db
docker start wiki
docker start wiki-update-companion

到这一步,就可以用3000端口访问wikijs了

2.docker-compose部署

官方文档:https://docs.requarks.io/install/docker

docker-compose最好的一点就是方便管理,不需要单独管理上面的3个容器,而是用一条命令就能同时启停容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: "3"
services:

db:
image: postgres:11-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: "none"
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data

wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "80:3000"

volumes:
db-data:

3.配置证书let’s encrpy

配置证书需要多指定两个环境变量,分别是你的域名以及用于申请证书的邮箱

1
2
3
-e "LETSENCRYPT_DOMAIN=wiki.example.com" \
-e "LETSENCRYPT_EMAIL=admin@example.com" \
-p 443:3443

如果不这么做,则需要在nginx反向代理上配置证书

4.超级方便的sqlite(个人推荐)

上面的两个办法,都需要多建一个数据库的容器。对于云服务器来说,内存是及其宝贵的资源。

如果你和我一样,wikijs只作为简单的记录用途,而不是生产用途(比如公司内部协作写文档),则可以使用轻便快捷的sqlite来作为数据库,避免多开一个容器的烦恼!

1
2
3
4
5
6
docker run -d \
-p 8080:3000 \
--name wiki \
--restart unless-stopped \
-e "DB_TYPE=sqlite" \
requarks/wiki

一条命令搞定,不需要弄什么第二个数据库,怎么样,是不是很爽?

参考 https://b4d.sablun.org/blog/2021-02-07-instant-wikijs-with-docker/

注意:请确认您不是在生产环境下使用sqlite。相比于其他数据库,sqlite的主要优势是方便,其性能是不如mysql等数据库的!

对于个人而言,sqlite也绰绰有余了,完全不用担心性能问题。

4.评论

默认的评论连回复都不支持,也没有一个管理页面和通知,如果要把wiki展示出来,这样就非常不方便!

如果有需要的话,建议配置一下artalk评论系统 在wikijs上使用artalk评论系统