Mastodon用メディアのドメインを第三レベルから第四レベルに
Overview
私が運営しているMastodonサーバのメディアサーバがダサいドメインだったのをちょっといい感じに変えました。
- 運営当初はS3を直接公開
- Cloudflareを通すように変更
- wasabiに移ったりS3に戻ったり紆余曲折
- media-mastdn.asterism.xyzだったドメインをmedia.mstdn.asterism.xyzに変更 👈 new!
Cloudflareの無料プランでは、*.example.com しか有効な証明書を発行してもらえません。
という理由があって無理矢理第三レベルドメインに収めるために、media-mstdn.asterism.xyzのドメインで運用していました。
ちなみにS3の仕様上、Hostヘッダがバケット名かどうかも見ているので、公開するドメインと同じバケット名で作る必要があります。(多分CloudFront使うならなんとかなる?厳密にはもっと色々やり方あるんだろうけど。あるいはもっと言うとバケット名モロバレってバケットポリシーちゃんと書いてもちょっと不安)
そんなときTLにこの公式ドキュメントが流れてきまして。
https://docs.joinmastodon.org/admin/optional/object-storage-proxy/
ここに書いてあるサンプルは実はそのままじゃ動かないので少し手を加える必要がありましたが、概ねこの通りにやっていい感じにできました。
今私が使っているwebサーバは基本的にcaddyなのでそれでなんとかしたかったですが、いい感じにこのサンプルをCaddyfileに書き直すのはかなりつらそうだったため諦めて
- Caddyからnginxにリバースプロキシ
- nginxでS3をプロキシ
って感じにしてます。
このやり方を取らないと、私の場合はVPSを1台増やす必要があって追加出費になってしまうため気持ち悪いけどこうしました。
ちなみに現状バケット名の都合で(ドットが入ってるからSSLで蹴られる)nginxからS3にはhttpsではなくhttpで通信しています。
これもその内変えたいけど、バケット移すの面倒くさいんだよねぇ……。
お金も掛かるしawsコマンドなりrcloneなりを動かすマシン用意しなきゃだし。
とはいえ、バケット名モロバレ状態から移行する準備はできたってことでとりあえずはここまで。(バケットポリシーでメディアプロキシ用のnginxとmastodon本体以外からはアクセスできないようにしてます)