🚀

【解説つき】mastodonでクラウド上にサーバーを立ててみた【AWS×DigitalOcean×SendGrid】

2022/11/17に公開約4,600字

背景

Twitterからの避難先として名前が挙がる分散型SNS、mastodon。そのサーバー(インスタンス)はだれでも立てることができます。

調べてみると割と簡単にクラウドサーバーを構築することができるようなので、できるだけ簡単でかつ安価な方法で試してみました。

サーバーのサの字もわからなくても構築だけなら何の問題もありません。

なお、この方法がベストプラクティスであることは保証しかねます。

自鯖の紹介

https://mstdn.travelodon.net/

旅行関連をテーマにしたインスタンスです。サブ垢としてどうぞ。

準備

必要なもの

  • 独自ドメイン

どこで取ってきても問題ありません。

  • AWSアカウント

https://aws.amazon.com/jp/

クラウド上にファイルを保存するのに必要です。まともに公開サーバーを立てたいなら最初からこういうクラウドストレージサービスを使うのがよいでしょう。

  • DigitalOceanアカウント

https://m.do.co/c/8b81b3371eb7

mastodonのために必要な構築を簡単にやってくれます。こちらから登録すると$200ものクレジットが2か月間与えられます。

  • SendGridアカウント

https://sendgrid.kke.co.jp/

メール配信に使います。配信状況が分かるというメリットもあります。

こちらのSendGrid、類似サービスのMailgunと異なり毎月1万2000通送信可能なフリープランがあります。ドキュメントやサポートも日本語対応なのもGood point.

迷惑メールや詐欺など悪用防止のため簡単な審査があります。1日ぐらいかかるものとみてください。

AWSにしろDigitalOceanにしろ一定期間の無料枠はあったりするものの、いずれお金がかかってくると思います。

手順

(0.Ubuntuのセットアップ)

前提としてUbuntuの環境が必要です。前提すぎて説明されないことも多い。

コマンドはここから入力します。いれてなかったらググって調べてみてください。
ここでは割愛。

1. DigitalOcean

プロジェクトの名前を付けてDropletを開始しましょう。
日本に最も近いシンガポールを選択し、marketplaceからmastodonを選択。

つぎにSSH keyが必要なので作成します。

書いてある通りです。Ubuntuからターミナルを開いて操作しましょう。コピーかEnterかパスワード入力なので心配する必要はありません。困ったらこれを参考にするとよいかも。

このプランぐらいがちょうどいいらしい。

作成が完了したらipv4アドレスをコピー。

次にこのアドレスに自分のドメインを割り当てる作業を行います。こちらはご自身のドメイン管理システムで行ってください。

TXTレコードには"v=spf1 ip4:~~~ -all"と入力しています。
サブドメインはなくても問題ないでしょう。

つぎにターミナルの入力に移ります。


 :~$ ssh root@mstdn.travelodon.net
The authenticity of host 'mstdn.travelodon.net (128.199.88.7)' can't be established.
ECDSA key fingerprint is SHA256:qv8nuck1s4HmAq2VqRS4nEAymG7dFS6+VRSsnp8a7Y8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

ssh root@~~~(先ほど設定したホスト名)を入力し、yesで進みます。


Domain name: mstdn.travelodon.net
Do you want to store user-uploaded files on the cloud? yes
Provider Amazon S3

ここで一旦中断します。

2. AWS

S3

バケットを作成します。

オブジェクト所有者でACLを有効にします。どうでもいいことですが私はこの設定をしていなかったせいで2日間ファイルのアップロードができず悶絶していました。

加えてパブリックアドレスをオンにします。

IAM

ユーザーグループを作成します。

このとき許可ポリシーにS3fullaccessを付与。次にユーザーを作成します。

そのあと先ほど作成したユーザーグループに追加して進み、タグの追加をパスして進み、ユーザー情報を確認。

この画面を閉じずにターミナルへ移りましょう。


S3 bucket name: travelodon-bucket
S3 region: ap-northeast-1
S3 hostname: s3-ap-northeast-1.amazonaws.com
S3 secret key: 4orlU1tthkA+khSDLuPGUiX2DyTNq3P37dElkxKg
Do you want to access the uploaded files from your own domain? yes
Domain for uploaded files: travelodon-bucket.s3.ap-northeast-1.amazonaws.com

これでAWSの操作は完了です。

3. SendGrid


SMTP server: smtp.sendgrid.net
SMTP port: 587
SMTP username: apikey
SMTP password: (あなたが発行したkey)
SMTP authentication: plain
SMTP OpenSSL verify mode: peer
E-mail address to send e-mails "from": mstdn.travelodon@gmail.com
(あなたのmastodon用メールアドレス)

この辺は日本語ドキュメントが充実しているので大丈夫だと思います。

https://sendgrid.kke.co.jp/docs/Tutorials/B_Marketing_Mail/marketing_campaigns0.html


Send a test e-mail with this configuration right now? yes
Send test e-mail to: (あなたのメールアドレス)
Great! Saving this configuration...
Booting up Mastodon...
It is time to create an admin account that you'll be able to use from the browser!
Username: admin
E-mail: (あなたのメールアドレス)
You can login with the password: (あなたのパスワード)
The web interface should be momentarily accessible via https://pod.domain.com/
Launching Let's Encrypt utility to obtain SSL certificate...
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) 
(Enter 'c' to cancel):(あなたのメールアドレス)

あとはなんかでてくるやつをyesかnoして完了! 自分のサイトにアクセスしてみましょう!

お疲れさまでした。

設定の変更方法

はじめに/home/mastodon/liveに移動します。


cd /home/mastodon/live

次のファイルをvimで開きます。


vim .env.production

vimでの編集方法はこちらを参考にするとよいでしょう。

https://7ka.org/ubuntu_terminal_vim/

保存したらマストドンをリスタートします。


sudo systemctl restart mastodon-*

Discussion

ログインするとコメントできます