−25%

Windows 年払い、10月31日まで。 プランを見る

EQVPS

Mastodon 向け VPS:自分だけの小さなインスタンス

VPS で小さな Mastodon インスタンスを運営。メモリとディスクの正直な見積もり、Docker での構築、SMTP リレーによるメール、ディスクを埋めないためのメディア整理。

自分の SNS アカウントを自分で持つのは素敵な考えです。そのアカウントが他人のサーバーの上に、他人のルールと稼働状況のもとで存在していると気づくまでは。自分の Mastodon インスタンスならそれが解決します。ハンドルは @you@your-domain、止められるのはあなただけ。ただし Mastodon は小さなアプリではありません。何を引き受けるのか知っておく価値があります。

向いている人

それ以上の規模になると、モデレーションの責任、通報対応、本格的なインフラを抱えるサービスの運営です。それはまた別の話です。

本当に必要なもの

Mastodon は複数のプロセスを同時に動かします。Rails の Web アプリ、バックグラウンドの Sidekiq ワーカー、ストリーミングサーバー、PostgreSQL、Redis。連合の仕組み上、あなたが寝ている間もサーバーは他のサーバーから投稿やメディアを取り込み続けます。

インスタンスプラン
ひとり用、フォロー少なめSmall-IP — 2 vCPU、4 GB、月 $16
小さなコミュニティ、連合も活発Medium-IP — 4 vCPU、6 GB、月 $20

4 GB でも動きますがぎりぎりです。フォローしている人気投稿に何千もの返信がつくと、Sidekiq のキューが詰まります。6 GB なら余裕が生まれます。もうひとつの制約はディスクで、後述のメディアの項を見てください。

ドメインと専用 IP も必要です。他のサーバーは 443 番ポートであなたのサーバーに配送します。

Docker で構築する

公式リポジトリには docker-compose.yml が含まれています。Docker をインストールした新しい Ubuntu 24.04 サーバーで:

git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
touch .env.production
docker compose run --rm -v $(pwd)/.env.production:/opt/mastodon/.env.production \
  web bundle exec rake mastodon:setup
docker compose up -d

セットアップのタスクは、ドメイン、データベースと Redis の設定(既定値は compose ファイルと一致)、メールの設定、最初の管理者アカウントを尋ね、すべてを .env.production に書き込みます。チェックアウトしたタグのリリースノートは必ず読んでください。メジャーバージョン間で手順が変わることがあります。

Mastodon には dist/nginx.conf に nginx のテンプレートが同梱されています。/etc/nginx/sites-available/ にコピーし、ドメインを書き換えて certbot で証明書を取得します。リバースプロキシとドメインのガイドで両方を扱っています。

メール:リレーを使う

Mastodon は確認メールやパスワード再設定のメールを送ります。当社のサーバーでは 25 番と 465 番ポートが閉じているので、587 番ポートで外部のトランザクションメール事業者に向けます。

SMTP_SERVER=smtp.your-provider.example
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=notifications@your-domain.example

正直、いずれにせよリレーは欲しくなります。できたばかりのサーバー IP から送ったメールは迷惑メールに入りがちで、リレーにはあなたにまだない信用があります。

メディア:ディスクを食う怪物

サーバーが目にしたアカウントの画像や動画は、すべてローカルにキャッシュされます。活発なインスタンスなら週に何 GB にもなります。古いリモートメディアを定期的に片付けましょう。

docker compose exec web tootctl media remove --days 7
docker compose exec web tootctl preview_cards remove --days 30

これを毎日の cron ジョブに入れます。インスタンスが大きくなったら、.env.production の S3_* 設定でメディアを S3 互換のオブジェクトストレージに移しましょう。そうすれば VPS のディスクにはデータベースだけが残ります。

運用

チームのチャット用にもっと軽いものが欲しいなら、Matrix サーバーのほうが合うかもしれません。

デプロイの準備はできましたか?暗号通貨で支払い、KYC不要 — 約1分でオンライン。

今すぐデプロイ →

FAQ

Mastodon インスタンスにはどのくらいのメモリが必要ですか?

ひとり用や小規模なら、現実的な最低ラインは 4 GB、快適なのは 6 GB です。Mastodon は Web プロセス、Sidekiq ワーカー、PostgreSQL、Redis を同時に動かし、連合のせいで誰も投稿していなくても Sidekiq は働き続けます。

なぜ Mastodon には専用 IP が必要なのですか?

他のサーバーは 443 番ポートの HTTPS であなたのサーバーに投稿を届け、人々はブラウザであなたのインスタンスを開きます。そのためには自分の IP で 443 番への着信を受けられる必要があり、NAT プランにはそれがありません。

Mastodon からメールを送るには?

外部のトランザクションメール事業者を 587 番ポートの SMTP で使います。当社のサーバーでは 25 番と 465 番ポートは閉じており、そもそもリレーを使ったほうが、新しい IP から直接送るよりずっと届きやすくなります。

なぜディスクがこんなに早く埋まるのですか?

サーバーは目にしたすべてのアカウントのメディアをキャッシュします。'tootctl media remove --days 7' を定期実行するか、メディアを S3 互換のオブジェクトストレージに移してください。

あとでドメインを変えられますか?

できません。ドメインは fediverse 全体で各アカウントの身元の一部です。最初のアカウントを作る前によく考えて選んでください。

コメント

まだコメントはありません。最初になりましょう。

コメントを残す

コメントは表示される前にモデレートされます。