Open7
git-mediawiki を使って「ウィキじまい」をする
MediaWiki の記事を静的ファイルに変換して「ウィキじまい」をする。
目標
-
git-remote-mediawiki
を使って git リポジトリに変換する - 静的ファイルを生成して GitHub Pages のような形で公開する
経緯
- 設置していた Wiki が荒らされていたことに気付く
- 復旧そのものは
mysql
コマンドを実行するだけなので簡単-
automysqlbackup
のおかげ
-
- しかし、荒らされてから何ヶ月も気付かない(管理してない)のはダメだよね
- 誹謗中傷や犯行予告が書き込まれていたら困る
- 更新するつもりのない Wiki のために MariaDB を動かしているのは無駄
- 良い機会なので MediaWiki をやめよう
まずは荒らされた Wiki を復旧させる。復旧に必要なのはコマンド1行だけ。
$ sudo gunzip -c /var/lib/automysqlbackup/monthly/mediawiki/mediawiki_2024-10-01_06h25m.October.mediawiki.sql.gz | sudo mysql mediawiki
画像は DB とは別で管理されているので、画像と DB の情報に齟齬が生まれないように気配りをする必要がある。
画像フォルダもちゃんとバックアップを取るべきだが、忘れられがち。
Docker を使って git-mediawiki
の環境をサクッと作る。
FROM debian:bookworm
ARG USERNAME=sigsign
ARG USER_UID=1000
ARG USER_GID=1000
ENV LANG=C.UTF-8
RUN groupadd -g ${USER_GID} ${USERNAME} && \
useradd -u ${USER_UID} -g ${USER_GID} -G adm,sudo -m -s /bin/bash ${USERNAME}
RUN \
export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
bash-completion \
curl \
file \
git \
git-mediawiki \
less \
sudo \
vim \
whiptail \
zip
RUN echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/user \
&& chmod 440 /etc/sudoers.d/user
USER ${USERNAME}
CMD [ "/bin/bash", "-l" ]
git clone mediawiki::https://wiki.example.com/w
では思うように動かなかった。
git-remote-mediawiki の実装を読んで、それっぽいオプションを適宜追加して試していく。
デフォルトでは remote.origin.fetchStrategy
に by_page
が設定されている。
remote.origin.fetchStrategy
に by_rev
を指定すると(MAIN 名前空間以外はスキップされてしまうものの)期待通りの動作をするようだ。
あとは remote.origin.namespaces
に保存したい名前空間のリストをスペース区切りで追加すればよさそう。
$ git clone -c remote.origin.fetchStrategy="by_rev" -c remote.origin.namespaces="(Main) User User_talk ..." mediawiki::https://wiki.example.com/w
うまくいった。
git-remote-mediawiki
の不満なところ。
- 階層化された Wiki ページがディレクトリ構造にならない
-
page/subpage
がpage%2Fsubpage.mw
に保存される -
page/subpage.mw
に保存されてほしい
-
- コミットのメールアドレスが
USER@wiki.singnote.cc/w
になる-
USER@wiki.signote.cc
になってほしい
-