MastodonをEC2からLinodeに移行
Overview
構成
運営費を安くするため、EC2(+S3)で動かしていたMastodonサーバ( https://mstdn.asterism.xyz )をLinodeに移行しました。
もう何度目かも分からない構成変更ですね。
今回は以下のように変更しています。
元々の構成は丼本体、リバースプロキシ、及びデータベースそれぞれ別のEC2インスタンスで動かしている状態でした。(昔のブログ投稿に図を載せているのでそちらを)
docker swarmでEC2スポットフリートにMastodonを載せる - blog.asterism.xyz
今回リバースプロキシと丼本体を動かすサーバを同一インスタンスにし、その上で元々dockerの外で動かしていたリバースプロキシ(nginx)をcaddyに変えてかつdockerの中で完結させるようにしています。
CPUが1コアしかない辺り少々心配ですが、App鯖を2コアにするだけでも+$10かかるので今は一先ずこのサイズで困ったらスケールアップします。
docker-compose.ymlなんかはこの辺に。
https://github.com/orlea/mstdn.asterism.xyz/commit/090dbd22fbd7107eb13a7cf0d3e237724c9b4aeb
移転作業
大雑把ですが以下のような感じ
- LinodeのVM作成
- アプデ
- dockerやらPostgreSQL等々インストール、設定
- FW設定
- Mastodonの設定ファイルを持ってくる
- データベースのリストア
- DNS切り替え
- docker-compose up -d
Linode特有の問題として、LinodeのプライベートネットワークはDC内で全ユーザが共有してるので全然プライベートではないというのがあり。
そのためApp鯖、DB鯖お互いのLAN側アドレスを/32で指定してFWルールを設定しています。
今回はtokyo2のリージョンを選びましたがやっぱりこの中でも変なクローラとか動いてんだろうなぁ…。
メール周り
Linodeはスパムメール業者に悪用されないようにするため、デフォルトではアウトバウンドのTCP25, 465 587を閉じています。
ただ移行時私はそれを知らず、「よし丼本体は動くようになったし後はメール確認したら終わりかなー」とパスワードリセットメールを自分に向けて送り全く届かないなんて事になってしまいました。
最初はLinodeがAWS SESにブロックされてんのかなーと思い、ならば別のメールサーバを!とさくらのメールボックス( 年額1087円 )を契約してそちらでも試したのですがうまく行かず。
あーでもないこーでもないとTLで喚き散らしていたらフォロワーさんからポートが塞がれている話を聞き、Linodeサポートに問い合わせして無事メールが送れるようになりましたとさ。
無駄な1000円は勉強代ってことで……。
雑感
Pleromaの運営をやめた先月は$40程度のサーバ代でしたが今月はLinodeのクレジット$100分をもらったのもあり全部で$25行かないくらいと予想しています。
プロモーションでもらったクレジットがいつまで使えるか分かりませんが、Linodeでの出費は(VM代$10+自動バックアップ$2.5)*2台で$25と今までと比べたら大分安いですね。
EC2の頃はEC2だけで$35以上かかってたはずなので。
まぁ安さを目指すならそもそもDB鯖と分けるんじゃなくて、全部一個のVPSにしちゃえばいいじゃんって話ではあるんですが。