|
Wiki.js 搭建说明
Docker Compose 一键部署,带 Git 同步
|
Wiki.js 是一个轻量级、界面现代的开源 Wiki 系统,支持 Markdown 编辑、Git 同步备份、多种数据库后端。下面记录一下用 Docker Compose 部署的完整流程。
|
docker-compose.yml
version: "3.9"
networks:
wikinet:
driver: bridge
volumes:
pgdata:
services:
db:
image: postgres:17
container_name: db
hostname: db
restart: unless-stopped
networks:
- wikinet
environment:
POSTGRES_DB: wiki
POSTGRES_USER: wiki
POSTGRES_PASSWORD_FILE: /etc/wiki/.db-secret
volumes:
- /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro
- /etc/wiki/pgdata:/var/lib/postgresql/data
wiki:
image: ghcr.io/requarks/wiki:2
container_name: wiki
hostname: wiki
restart: unless-stopped
networks:
- wikinet
depends_on:
- db
ports:
- "80:3000"
- "443:3443"
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wiki
DB_NAME: wiki
DB_PASS_FILE: /etc/wiki/.db-secret
UPGRADE_COMPANION: "1"
volumes:
- /etc/wiki/.db-secret:/etc/wiki/.db-secret:ro
- /etc/wiki/keys:/etc/wiki/keys:ro
- /etc/wiki/ssh/known_hosts:/etc/ssh/ssh_known_hosts:ro
wiki-update-companion:
image: ghcr.io/requarks/wiki-update-companion:latest
container_name: wiki-update-companion
hostname: wiki-update-companion
restart: unless-stopped
networks:
- wikinet
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
|
1. 创建目录
sudo mkdir -p /etc/wiki
sudo mkdir -p /etc/wiki/keys
|
2. 生成数据库密码
使用 openssl 生成随机密码并写入密钥文件:
openssl rand -base64 32 | sudo tee /etc/wiki/.db-secret > /dev/null
sudo chmod 644 /etc/wiki/.db-secret
注意:.db-secret 文件权限设为 644 即可,容器内以 root 运行 PostgreSQL 可以读取。
|
3. 启动
docker compose up -d
启动后访问 http://你的服务器IP 完成初始化设置(创建管理员账号等)。
|
4. 配置 Git 同步
Wiki.js 支持将内容自动同步到 Git 仓库,实现备份和版本控制。
4.1 生成专用 SSH Key
为 Wiki.js 生成一个无密码的 ed25519 密钥:
sudo ssh-keygen -t ed25519 -N "" -f /etc/wiki/keys/wikijs_git
sudo chmod 600 /etc/wiki/keys/wikijs_git
4.2 将公钥添加到 Git 仓库
查看公钥内容:
sudo cat /etc/wiki/keys/wikijs_git.pub
以 GitHub 为例:
Repo → Settings → Deploy keys → Add deploy key
粘贴公钥内容,并勾选 Allow write access(Wiki.js 需要写入权限来推送变更)。
4.3 生成 known_hosts
预先生成 GitHub 的 host key,避免首次连接时出现 Host key verification failed 错误:
sudo mkdir -p /etc/wiki/ssh
sudo ssh-keyscan -H github.com | sudo tee /etc/wiki/ssh/known_hosts > /dev/null
sudo chmod 644 /etc/wiki/ssh/known_hosts
4.4 在 Wiki.js 后台配置
进入 Wiki.js 管理面板:
Git 同步 → Authentication → SSH Private Key Path
填入:/etc/wiki/keys/wikijs_git
|
一些注意事项
三个容器通过 wikinet 网络互通,数据库不暴露端口到宿主机,安全性较好。
密码通过 Docker Secret 风格的文件挂载传入,避免在 docker-compose.yml 中明文写密码。
wiki-update-companion 容器用于自动升级 Wiki.js 版本,建议保留。
如果需要反向代理,可以将 ports 改为只监听本地,然后由 Nginx/Caddy 反代。
|
|