🐕

writefreely をdockerで走らせてみた。

2021/08/11に公開

まえがき

writefreely を docker で走らせてみた。

docker-compose.yml と、Dockerfile は以下で公開しています。

https://github.com/yakumo-saki/docker-writefreely

ライセンスはオリジナルに従い AGPL 3.0 としています。

なお、本文書は作業を行ってからしばらく立って記憶だけで書いているので

誤りがある可能性が高いです。誤りを見つけたら編集リクエスト等頂けるとありがたいです。

また、writefreely を production で走らせる場合、docker イメージはまだ出来てないよ的な記述があるのでご注意ください。

docker イメージ

yakumosaki/writefreely は、

https://hub.docker.com/r/writeas/writefreely/tags

に 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