【AWS】bitnami mastodonセットアップ手順

AWS
スポンサーリンク

最近Twitterがオワコン化しているので、代替?のSNSであるMastodonを立ててみたいと思います。
Mastodonは、Dockerやk8sなどで簡単に構築する方法や、OS上にインストールしてセットアップする方法などがありますが、bitnamiによる提供があるため、OSテンプレートを使用して構築してみたいと思います。

期待する目標

本手順で期待する目標は以下の通りです。

  • AWS上にbitnami mastodonを展開できる
  • mastodonの初期セットアップができる
  • mastodonにアクセスすることができる

前提条件

本手順の前提条件は以下の通りです。

  • 有効なAWSアカウントが存在すること
  • VPCおよびサブネットが作成済みであること
  • 独自ドメインを取得し、名前解決ができること

VPCの作成及びサブネットの作成は、以下の記事で解説しています。

【AWS】VPC作成手順

なお、今回は検証のため、最低限の設定で検証を行います。
使用するインスタンスについては、無料利用枠内のt2.microを使用します。
bitnamiを使用してmastodonを構築する場合、途中でSSHが必要なため、TCP/22をSGのインバウンドルールに追加しておきます。
また、certbotを使用してLet’s Encryptを動作させるため、TCP/80とTCP/443を0.0.0.0/0のインバウンドルールも設定しておきます。

Mastodonとは

マストドン (Mastodon) はミニブログサービスを提供するためのフリーソフトウェア、またはこれが提供する連合型ソーシャルネットワークサービスである。開発者はドイツのオイゲン・ロホコ[4](Eugen Rochko)。「脱中央集権型」 (decentralized) のマストドンのサーバーはだれでも自由に運用する事が可能であり、利用者は通常このサーバーの一つを選んで所属するが、異なるサーバーに属する利用者間のコミュニケーションも容易である。

wikiより引用

mastodonは、分散SNSとして一時期話題に上がりましたが、分散型という点がいまいち受け入れられなかったのか、Twitterのシェアを奪うほど大きなサービスにはならなかったです。
Twitterと大きく異なるのは、TwitterはTwitterというサービスで一本化されていますが、Mastodonは自身でサーバを立てることができ、各ユーザがサーバ毎に登録をして利用します。
Twitterというよりか、Discordのサーバに所属しているような感じですかね。

Bitnamiとは

Bitnami は、Web アプリケーション、ソフトウェア スタック、および仮想アプライアンス用のインストーラーまたはソフトウェア パッケージのライブラリです。Bitnami は、 Daniel Lopez Ridruejo と Erica Brescia によって2003 年にスペインセビリアで設立された会社Bitrockによって後援されています。[1] Bitnami スタックは、LinuxWindowsMac OS XおよびSolarisにソフトウェアをインストールするために使用されます。[2] VMware は、 2019 年 5 月 15 日に Bitrock を、その 2 つの最大の資産である Bitnami と InstallBuilder とともに買収しました。[3]

wikiより引用

Bitnamiは、OS+ソフトウェアを1つのパッケージとして提供しているサービスとなります。
仮想アプライアンスとして、仮想マシンを展開することで、必要な依存関係にあるソフトウェアを個別に展開しなくても一発でサービス提供が可能な状態になります。
最近では、VMwareが買収をしたことで、bitnami for VMware的な感じで表記されることも多いです。
このBitnamiによる仮想アプライアンスを使用することで、簡単に安全にソフトウェアを展開することができます。

mastodon展開

今回のmastodonはAWS上に展開していくので、AWSアカウントを使用してAWSコンソールにログインしておきます。

EC2インスタンスの選択
EC2インスタンスの選択

[AWSコンソール]より、[EC2]-[インスタンス]-[インスタンス]を押下します。

インスタンスを起動
インスタンスを起動

[インスタンス]より、[インスタンスを起動]を押下します。

名前とタグの設定
名前とタグの設定

[インスタンスを起動]の[名前とタグ]より、インスタンスの名前を入力します。

AMIの検索
AMIの検索

[アプリケーションおよびOSイメージ(Amazon マシンイメージ)]の検索欄に[mastodon]と入力し、[Enter]を押下します。

AMIの選択
AMIの選択

[Amazon マシンイメージ(AMI)を選択]より、[AWS Marketplace AMI]のタブを選択し、[Mastodon packaged by Bitnami]を選択します。

Mastodon packaged by Bitnamiの詳細
Mastodon packaged by Bitnamiの詳細

AMIを選択すると、AMIの詳細が表示されるので、[続行]を押下します。
ついでに、AMIを使用すると場合によってはAMIの使用料金が発生するため、そこもコストに入れておく必要があります。

AMIの確認
AMIの確認

MastodonのAMIを選択すると、[Amazon マシンイメージ]に反映されるので、確認します。

インスタンスタイプの選択
インスタンスタイプの選択

[インスタンスタイプ]より、インスタンスタイプを選択します。
今回は、検証のため[t2.micro]のインスタンスを選択しました。
一応t2.microでもmastodon自体は起動したのですが、複数ユーザで使用するのであれば、もう少し上のインスタンスを選択してもよいかと思います。

キーペアの設定
キーペアの設定

mastodonは展開後にSSH接続を行う必要があるので、キーペアを選択します。
キーペアを流用してもよいのですが、今回は検証のため新しいキーペアを作成してみます。

キーペアの作成
キーペアの作成

[キーペアを作成]より、以下の設定を行います。

  • キーペア名 : 任意のキーペア名を入力
  • キーペアのタイプ : RSA (任意)
  • プライベートキーファイル形式 : .pem (任意の形式を指定)

設定が完了したら、[キーペアを作成]を押下します。
キーペアの作成が完了すると、自動的にキーペアがダウンロードされるため、キーペアを任意の安全な場所に保存しておきます。

ネットワーク設定の編集
ネットワーク設定の編集

[ネットワーク設定]より、[編集]を押下します。

ネットワーク設定
ネットワーク設定

[ネットワーク設定]より、以下の設定を行います。

  • VPC : mastodonを展開するVPCを選択
  • サブネット : VPC内のmastodonを展開するサブネットを選択
  • パブリックIPの自動割り当て : 有効化
  • ファイアウォール : 既存のセキュリティグループを選択する
  • 共通のセキュリティグループ : 任意のSGを選択

ファイアウォールについては、80と443は全許可、22のTCPについては、自身のグローバルIPのみ許可にしています。
今回はSGを事前に作成しているので、既存のSGを選択しましたが、既存のSGを作成していない場合は、新たにSGを作成してください。

ストレージを設定
ストレージを設定

[ストレージを設定]より、以下の設定を行います。

  • ストレージ容量 : 10GiB
  • ストレージの種類 : gp2

今回は検証のため、最低限のストレージ容量を設定しています。
SNSのため画像や動画等もアップロードされることがあるため、その点を考慮して多めにストレージ容量は見積もっておいた方がよさそうです。(AWS上に展開する場合、無停止で拡張できるため、大きな問題にならなさそうだが。。。)

インスタンスの設定完了
インスタンスの設定完了

一通り設定を入れたら、[インスタンスを起動]を押下して、インスタンスを起動させます。

インスタンスの起動中
インスタンスの起動中

[インスタンスの起動]を押下すると、インスタンスのデプロイが開始されるため、完了するまで待機します。

サブスクライブの遅延
サブスクライブの遅延

これは、AWSあるあるだと思いまが、今回もAMIのサブスクライブに時間がかかっています。の表示がでました。これについては、サブスクライブが完了するとメールが飛ぶので気長に待ちます。
この段階で[すべてのインスタンスを表示]を押下して、ページを遷移させておきます。

インスタンスの起動確認
インスタンスの起動確認

[インスタンス]より、デプロイしたmastodonのインスタンスが生成され、起動していることを確認します。
インスタンスを生成する際にパブリックIPを有効化しているので、パブリックIPがインスタンスについています。
とはいえ、このパブリックIPは再起動すると変わってしまうことがあるので、Elastic IPを使用して不変なパブリックIPを取得しておきます。

Elastic IPのの割り当て
Elastic IPのの割り当て

[EC2]-[ネットワーク&セキュリティ]-[Elastic IP]を押下します。
Elastic IPのページより、[Elastic IPアドレスを割り当てる]を押下します。

Elastic IPアドレスを割り当てる
Elastic IPアドレスを割り当てる

[Elastic IPアドレスを割り当てる]より、以下の設定を行います。

  • ネットワークボーダーグループ : ap-northeast-1 (インスタンスが所属しているAZを選択)
  • パブリックIPv4アドレスプール : AmazonのIPv4アドレスプール
  • タグ : 任意で設定

設定が完了したら、[割り当て]を押下します。

Elastic IPの確認
Elastic IPの確認

[Elastic IP]より、取得したElastic IPが存在していることを確認します。
これで、パブリックIPが確定したので、名前解決ができるように設定します。
名前解決の設定方法については、各レジストラにより違うので、ここで解説はしません。
また、レジストラに設定してから変更が反映されるまで最大24時間程度かかる場合があるため、多少の時間をおいて、nslookup等で外部のDNSサーバから名前解決ができるようになってから次工程を進めます。

Elastic IPの関連付け選択
Elastic IPの関連付け選択

[Elastic IP]より、取得したElastic IPを選択し、[アクション]-[Elastic IPアドレスの関連付け]を押下します。

Elastic IPアドレスの関連付け
Elastic IPアドレスの関連付け

[Elastic IPアドレスの関連付け]より、以下の設定を行います。

  • リソースタイプ : インスタンス
  • インスタンス : mastodonのインスタンスID
  • プライベートIPアドレス : mastodonに割り当てられたプライベートIPアドレス
  • このElastic IPアドレスの再関連付けを許可する : ■

再関連付けについては、インスタンスを変更したりする場合などはチェックを入れておきます。
設定が完了したら、[関連付け]を押下します。

Elastic IPの関連付け確認
Elastic IPの関連付け確認

[Elastic IP]より、取得したElastic IPアドレスを選択し、[関連付けされたインスタンス]に作成したmastodonのインスタンスIDが関連付けられていることを確認します。
以上で、mastodonの展開は完了です。

mastodonの初期設定

mastodonのインスタンスを展開できたら、mastodonの初期設定を行っていきます。
ブラウザより、mastodonのFQDNでアクセスします。

mastodon初期設定画面
mastodon初期設定画面

mastodonは、初期設定をしていないと、上記のような初期画面になります。
この後、コマンドを実行する必要があるため、mastodonのインスタンスにSSH接続を行います。
AWSのインスタンスは原則として、SSH接続する際に公開鍵認証を使用しているため、作成したキーペアを使用してSSH接続します。
SSH後、以下のコマンドを実行します。

bitnami@ip-192-168-150-225:~$ sudo /opt/bitnami/configure_app_domain --domain <mastodonのFQDN>
Configuring domain to mastodonのFQDN
2023-07-03T15:32:10.141Z - info: Saving configuration info to disk
mastodon 15:32:10.58 INFO  ==> Updating domain in configuration file
mastodon 15:32:10.61 INFO  ==> ** Reloading NGINX configuration **
mastodon 15:32:10.66 INFO  ==> mastodon-web is not running
mastodon 15:32:15.86 INFO  ==> mastodon-web started
mastodon 15:32:15.94 INFO  ==> mastodon-streaming is not running
mastodon 15:32:21.09 INFO  ==> mastodon-streaming started
mastodon 15:32:21.19 INFO  ==> mastodon-sidekiq is not running
mastodon 15:32:26.37 INFO  ==> mastodon-sidekiq started
Disabling automatic domain update for IP address changes
bitnami@ip-192-168-150-225:~$

このコマンドを実行することで、mastodonの初期ドメインの設定が完了します。
このコマンドは1度のみ実行し、以下は実行しないでください。
想像ですが、このコマンドを実行すると、内部の初期値が決まるようで、複数実行した場合のサポートはわかりませんでした。

mastodonはデフォルトだと自己証明書のため、アクセスするたびにブラウザで警告が表示されます。
これを解消するため、Let’s Encryptによる公的な証明書を取得する設定を行います。
CertBotによる取得のようで、一度実行すると自動的に証明書の更新をしてくれるようです。

bitnami@ip-192-168-150-225:~$ sudo /opt/bitnami/bncert-tool --domains <mastodonのFQDN>
Warning: Support for the nginx web server is limited. This tool will only be
able to generate HTTPS certificates and configure certificate renewal. It will
not enable/disable redirections or apply other types of server configurations.
Press [Enter] to continue:
An updated version is available. Would you like to download it? You would need to run it manually later. [Y/n]: y

The tool will exit now. To run the updated version run the following command:

/opt/bitnami/bncert-tool --domains <mastodonのFQDN>

bitnami@ip-192-168-150-225:~$

コマンドを実行すると、新しいインストーラがあるので、更新しますか?と聞かれたため、[y]を入力して、Certbotを更新しました。Certobot更新後、もう一度コマンドを実行するように指示されたので、もう一度実行します。

bitnami@ip-192-168-150-225:~$ sudo /opt/bitnami/bncert-tool --domains <mastodonのFQDN>
Warning: Support for the nginx web server is limited. This tool will only be
able to generate HTTPS certificates and configure certificate renewal. It will
not enable/disable redirections or apply other types of server configurations.
Press [Enter] to continue:[ENTER]を入力
----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to
configure your web server.

Domain list [<mastodonのFQDN>]: <mastodonのFQDN>を入力

The following domains were not included: www.<mastodonのFQDN>. Do you want to add them? [Y/n]: n

----------------------------------------------------------------------------
Changes to perform

The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains:
mastodon.willserver.asia
3. Configure a cron job to automatically renew the certificate each month
4. Start web server once all changes have been performed



Do you agree to these changes? [Y/n]: y


----------------------------------------------------------------------------
Create a free HTTPS certificate with Let's Encrypt

Please provide a valid e-mail address for which to associate your Let's Encrypt
certificate.

Domain list: <mastodonのFQND>

Server name: <mastodonのFQND>

E-mail address []: [メールアドレスを入力]

The Let's Encrypt Subscriber Agreement can be found at:

https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf

Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: y


----------------------------------------------------------------------------
Performing changes to your installation

The Bitnami HTTPS Configuration Tool will perform any necessary actions to your
Bitnami installation. This may take some time, please be patient.

----------------------------------------------------------------------------
Success

The Bitnami HTTPS Configuration Tool succeeded in modifying your installation.

The configuration report is shown below.

Backup files:
* /opt/bitnami/nginx/conf/nginx.conf.back.202307031535
*
/opt/bitnami/nginx/conf/server_blocks/default-https-server-block.conf.back.202307
031535
*
/opt/bitnami/nginx/conf/server_blocks/mastodon-https-server-block.conf.back.20230
7031535
*
/opt/bitnami/nginx/conf/server_blocks/mastodon-server-block.conf.back.20230703153
5

Find more details in the log file:

/tmp/bncert-202307031535.log

If you find any issues, please check Bitnami Support forums at:


GitHub - bitnami/vms: Bitnami VMs
Bitnami VMs. Contribute to bitnami/vms development by creating an account on GitHub.
Press [Enter] to continue: bitnami@ip-192-168-150-225:~$

途中、対話があるので、対話が必要な部分は黄色太文字にしてあります。

  • Press [Enter] to continue: 空欄の状態でENTERを入力
  • Domain list []: mastodonのFQDNを入力してENTER
  • The following domains were not included: www.. Do you want to add them? [Y/n]: y or n を入力。(wwwを付けてアクセスさせる場合は、wwwの部分まで含めLet’s Encryptで取得するか?)
  • Do you agree to these changes? [Y/n]: yを入力 (変更するかどうかを聞いている)
  • E-mail address []: 自身のメールアドレスを入力(Let’s Encryptから証明書の期限切れなどのメールが届く)
  • Do you agree to the Let’s Encrypt Subscriber Agreement? [Y/n]: yを入力(Let’s Encryptに同意するかどうか?)

このCertBotの設定が完了したら、SSHしたついでに初期ユーザのパスワード確認しておきます。

bitnami@ip-192-168-150-225:~$ sudo cat /home/bitnami/bitnami_credentials
Welcome to the Mastodon packaged by Bitnami

******************************************************************************
The default username and password is 'user@bitnami.org' and 'xxxxxxxxxxxxxxxxx'.
******************************************************************************

You can also use this password to access the databases and any other component the stack includes.

Please refer to https://docs.bitnami.com/ for more details.

bitnami@ip-192-168-150-225:~$

Catコマンドで表示してあげることで、デフォルトのユーザ名とパスワードを確認することができます。
以上でmastodonの初期設定は完了です。

mastodonを触ってみる

mastodonの初期設定が完了したら、mastodonにログインしてみます。

mastodonトップページアクセス
mastodonトップページアクセス

ブラウザより、mastodonのFQDNを使用してアクセスするか、初期設定ページを更新することで、mastodonのページにアクセスすることができます。
mastodonの初期設定ページを更新した場合、SSLの証明書が古い自己証明書をつかんでいるため、新しいタブで開きなおすことをお薦めします。
mastodonのトップページが表示されたら、[ログイン]を押下します。

初期アカウントでログイン
初期アカウントでログイン

ログインページが表示されるため、SSHで確認したで初期メールアドレスとパスワードを使用してログインします。

ログイン成功
ログイン成功

mastodonに無事ログインできました。
ユーザの設定等はここから一通り設定できます。

投稿の確認
投稿の確認

念のため、ちゃんと投稿ができるか確認しておきます。

アカウント作成
アカウント作成

一通り機能を確認したら、アカウントをログアウトしアカウントの新規作成ができるか確認してみます。

アカウントのセットアップ
アカウントのセットアップ

アカウントのセットアップより、以下の情報を入力します。

  • 表示名 : 任意の表示名を入力
  • ユーザ名 : 任意のユーザ名を入力
  • メールアドレス : 自身のメールアドレスを入力
  • パスワード : 任意のパスワードを入力
  • プライバシーポリシーを読み、同意します : ■

入力が完了したら、[登録する]を押下します。

メール認証
メール認証

登録ボタンを押すと、入力したメールアドレス宛にメールが飛び、そこからメールアドレスの認証を行います。が、デフォルトの状態だとメールの送信ができていませんでした。
多分設定が必要になると思うのですが、まだ調べ切れていないので、とりあえずは後回しにしました。

アカウントの状態確認
アカウントの状態確認

メールアドレスの認証ができていなくても、ログイン自体は可能なようです。
とりあえず、今回はこんな感じで終わりにしたいと思います。

まとめ

今回は、AWS上にbitnamiのmastodonをデプロイしてみました。
より細かく設定したり、チューニングするのであれば、一からインストールするほうが良いと思うのですが、構築の工数が高かったり、不用意に設定をしてセキュリティーホールを作ったりしても危ないので、bitnamiの仮想アプライアンスを使用しました。
仮想アプライアンスについては、仕様上、事細かに設定はできなかったり、バージョンアップに制約があったりするので、一長一短ですが、構築の難易度が下げられるという部分がとても大きいので、これはこれで良いと思いました。
bitnamiのmastodonですが、基本的にはすんなり設定できましたが、ドキュメント類が少ないという点があり、メールサーバの設定だったりはまだできていません。
bitnamiのmastodonについては、AWSとAzureに展開ができますが、ovaファイルでも配布しているので、VMware系の仮想化ソフトウェアであれば、オンプレにも展開が可能です。
今回、なぜAWS上に展開したかというと、オンプレの展開がうまくいかなかったというのが大きな理由です。
多分ですが、初期設定のドメインの設定でしくじっているので、外部からアクセス可能なドメインが必要なのかなーと思った次第でした。(よくわからないけど・・・)

おまけ

本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。

コメント

タイトルとURLをコピーしました