おひとりさまMastodonを建てる

なにこれ

昨今の Twitter がアレなので自前でインスタンスを建てた。
まだ繋ぎ方やパラメータのチューニング中なので非公開だが,手順理解の為に記録として。

構成情報

Proxmox 8.0.3 上に LXC で Ubuntu22.04 を用意
CPU: 1Core
RAM: 512MiB (+SWAP 4GiB)
Disk: 100GiB
Mastodon Version: v4.1.4

$ uname -a
Linux mstdn 6.2.16-3-pve #1 SMP PREEMPT_DYNAMIC PVE 6.2.16-3 (2023-06-17T05:58Z) x86_64 x86_64 x86_64 GNU/Linux


メモリはこんなに切り詰める必要はないはず。最小構成でどこまで小さく出来るのかを見てみたかった。
512Miだと常時80%前後を推移しているので1.5Giあれば足りた。*1勿論もっと在ってもいい。

Docker 使うか K8s 上にデプロイするかでも悩んだけど,極論 PostgreSQL と Redis だけ外出ししてしまえれば何でもいいのと構成理解の為だったのもあり一先ず全部ひとまとめにしている。 デバッグは Proxmox のスナップショット,運用時は雑に LXC のバックアップ機能を取ればある程度可用性は保てそう。

セットアップ手順

基本的に公式の順序でやった。
docs.joinmastodon.org

1か所だけ手順から逸れた。
PostgresのDBマイグレーションに失敗するのでこれを読み替えて実施する。
Postgres PG::Error: ERROR: new encoding (UTF8) is incompatible · GitHub
DB のエンコードを変えてから Setting up Mastodon を実行すればOK。

今後の方針

これのアップデートを掛けつつ作業を進める予定
r-pechi.hatenablog.com

  • エンドポイントを絞る
    • ポートを閉めたい。 Cloudflare Tuunnel とか使う予定
  • サービス正常性監視導入
    • 最低限 Prometheus は入れとく。 Splunk でログ解析してレスポンス監視する
    • メタデータはオブジェクトストレージに置く
  • DB 周りの分離とバックアップ
    • 基本的に dump は内部のオブジェクトストレージに置く
  • オブジェクトストレージは Ceph で HA して担保する

*1:分流10件くらいのTLで試したが問題なし