writefreely をdockerで走らせてみた。
まえがき
writefreely を docker で走らせてみた。
docker-compose.yml と、Dockerfile は以下で公開しています。
ライセンスはオリジナルに従い AGPL 3.0 としています。
なお、本文書は作業を行ってからしばらく立って記憶だけで書いているので
誤りがある可能性が高いです。誤りを見つけたら編集リクエスト等頂けるとありがたいです。
また、writefreely を production で走らせる場合、docker イメージはまだ出来てないよ的な記述があるのでご注意ください。
docker イメージ
yakumosaki/writefreely は、
に v0.10 のイメージがないので自分でビルドしたものです。
多少 Dockerfile に変更を入れていますが、影響はないと思います。
準備
リポジトリのクローン
必要なものはまとめてあるので、
git clone https://github.com/yakumo-saki/docker-writefreely writefreely
で、私のリポジトリからクローンして下さい。
config.ini
(クローンしたディレクトリ内で)
cp config.ini.example config.ini
config.ini ファイルを編集。 公式の config.ini.example に追加して、
[server]
bind = 0.0.0.0
としています。 リバースプロクシ等、この方が都合が良い場合が多いでしょう。
なお、config.ini でいうところの site name は blog の集合体としての writefreely のサイト名で
例えば、FC2 ブログ。とか livedoor ブログ。のようなレベルの名前です。
自分のブログの名前は Web UI から設定できます。この名前はあとで変えても良いので気楽に決めて下さい。
DB の準備
とりあえず、DB を準備します。残念ながらここは自動化できていません。
$ docker-compose run db bash
$ mysql -uroot
mysql> create user writefreely identified by 'writefreely';
mysql> create database writefreely DEFAULT CHARACTER SET utf8mb4;
mysql> grant all on writefreely.* to writefreely;
mysql> use writefreely
Database changed
writefreely> source /tmp/schema.sql
(出力がそれなりに出るが省略)
writefreely> quit
Web の準備
一時的に keys ディレクトリに誰でも書込ができるようにします。
chmod 777 ./keys
$ docker-compose run --entrypoint '' web ash
$ cmd/writefreely/writefreely --gen-keys
$ cmd/writefreely/writefreely # 起動テスト。 CTRL+C で抜ける
$ (CTRL+D)
パーミッションを戻しておきます
chmod 755 ./keys
実行
あとは普通に docker-compose up -d
して下さい
おまけ
federation するには恐らく、https が必要です。
また、一度 federation した場合は、ドメインを変更すると ActivityPub からみたアカウントとドメインの整合性がとれなくなるので適当なドメインで試しに動かす場合は、federation しないように
した方がよいでしょう。
Discussion