DokuWiki 不需要后端数据库,备份只需要处理程序文件和文本格式的数据文件。用 Docker 运行也只需要简单启动一个 apache + php 容器就可以。在本地机器上用了一阵,一直开着占用资源,随用随开也有点麻烦,决定扔到 VPS 上去。

首先参照文档在 Ubuntu 上安装 Docker CE,步骤还不少。

文件转移

把本地文件上传至 VPS,这步通过 GitHub 中转。一是安全限制设置传输服务也蛮烦的,二是以后 VPS 上新的数据可以直接推到 GitHub 备份,无数据库少了数据库备份的麻烦。

Ubuntu 上取得文件后,可能需要设置读写权限,chmod -R 777 简单粗暴有效。

DokuWiki 的目录结构conf 目录保存配置文件,data 目录保存用户数据。根据备份指南data 目录下的 cache , index , lockstmp 的内容可以不用备份。理论上 Revisions 数据也是可以删除的,不过适可而止了。这个场景用 git 的目的主要是备份,清晰的版本管理是其次。

但是如果这四个文件夹不存在程序是会出错的,需要用 .gitignore 排除文件夹的内容但包含文件夹自身

运行后因为没有备份 index 目录,标签页内容和搜索结果都会是空白,可以用 Searchindex Manager 插件主动去生成索引

运行

Docker 命令如下

docker run -d --restart=always -v "$PWD/":/var/www/html -p 8080:80 php:apache /bin/bash -c 'a2enmod rewrite; apache2-foreground'

后台运行,自动重启,/bin/bash -c 'a2enmod rewrite; apache2-foreground' 用于 URL Rewrite,如果未启用相关选项可略过。

Docker 容器启动后,即可用 IP:Port 访问。

用 Docker 运行 DokuWiki 已知的问题是自动升级会出错,需下载程序文件手动升级。然后,macOS 复制文件时目标位置有同名文件夹的情况是一个大坑。

选择 DokuWiki 的理由,自用的东西,架构越简单越好,数据格式用开放的标准更好,因为安装、配置、迁移的时间成本都是自己的。