先日、Heokuを使ってのMastodonインスタンス作成できるという記事を書いた。
このときは、AWSアカウントなどを使っての画像やアイコン、ヘッダーの保存ができなかった。
保存できなかった原因としては、Heoku CLI コマンドやらMastodon内部の挙動で把握できていない部分があったため
(それと、個人的にAWSアカウントを作りたくなかった&渋々作ろうとしたら電話認証でコケたのも原因の一部)
で、その後も色々調べていると下記の記事を発見
どうやら、Google Cloud Storage を使ってMastodonにアップロードした画像データなどを保存できるそうな。
「よし、面白そうだ!実験的にインスタンス作ってみよう」
というわけで今回立ち上げたインスタンス:いわみどん
以下、ざっくりとしたインスタンス:いわみどん立ち上げまでの流れ
1.まずHeokuにデプロイ
2.デプロイ実行中にGoogle Cloud Storage に登録し必要なアクセスキーなどを取得
3.デプロイ後、Heroku CLI を使って環境変数を設定する。
基本的には、1~3までの流れで基本的なMastodonの機能(TooTや画像のアップロード、アイコンやヘッダーの変更など)が使えるようになる。
より、詳細な流れとしては下記にある。
使用環境
1.Herokuにデプロイ
下記より「Deploy to Heroku」を押して、Herokuへのデプロイを行う
で、デプロイ欄の「App name」「LOCAL_DOMAIN」「LOCAL_HTTPS」「S3_ENABLED」を下記のように埋めていく
- App name : iwami-mastodon
- LOCAL_DOMAIN : iwami-mastodon.herokuapp.com
- LOCAL_HTTPS : true
- S3_ENABLED : false
「LOCAL_HTTPS」を true にすることでHTTPS が有効になる。
あと、今回はGoogle Cloud Storage を使う予定なので「S3_ENABLED」 は false にしておく。
あとは、「Deploy app」 を押すことで自動的にMastodonインスタンスが立ち上がる。
とりあえず、Heroku ですることはここで一旦終了。
2.Google Cloud Storage に登録
こちらより Google Cloud Storage にアクセス
Googleアカウントを持っている場合であれば、アカウント名とパスワードを入力するだけ。ない場合は、アカウントを作る必要がある。
ログイン後、コンソール画面内にある「ストレージ」から「Storage」という項目をクリック。
「バケットを作成」というボタンがあるので、それをクリックして「iwami-mastodon」というバケットを作成する。このとき、「デフォルトのストレージクラス」は「Multi-Regional」にすること
バケットを作成した後は、画面左側にある設定をクリック。画面が切り替わった後、画面内に「相互運用性」という項目がある。
その中の「デフォルトプロジェクトにする」と「新しいキーを作成」をクリックする。
このとき、生成されたアクセスキーとシークレットアクセスキーは後で使うのでわかるようにしておくこと
これで、Google Cloud Storage での設定は終了
3.Gmailによるメール認証の前準備
いわみどんはGmailでのメール認証を使っており、その前準備としてGoogleアカウントで2段認証を行うように設定を変えておく。
Googleアカウントのアカウント情報内にある「ログインとセキュリティ」を選択。
その中にある2段認証プロセスを選択し、認証を行う。
その後、「ログインとセキュリティ」内の「アプリ パスワード」という項目を選択してパスワードを生成する。
このとき生成したパスワードは後で使うのでわかるようにしておくこと
これでメール認証の前準備は終了。
Heroku CLI 自体のインストールに関してはこちらの記事を参考にしてください。
インストール後、コマンドプロンプトを起動して以下のコマンドを入力
heroku config -a iwami-mastodon
そこへ以下のコマンドを入力していく
- heroku config:set S3_ENABLED=true -a iwami-mastodon
- heroku config:set S3_BUCKET=iwami-mastodon
- heroku config:set S3_CLOUDFRONT_HOST=storage.googleapis.com/iwami-mastodon -a iwami-mastodon
- heroku config:set S3_ENDPOINT=https://storage.googleapis.com -a iwami-mastodon
- heroku config:set S3_HOTNAME=storage.googleapis.com -a iwami-mastodon
- heroku config:set S3_PROTOCOL=https -a iwami-mastodon
- heroku config:set S3_REGION=EU -a iwami-mastodon (これはなくてもよいかも……)
- heroku config:set AWS_ACCESS_KEY_ID=[さっき作ったGoogle Cloud Storage のアクセスキー] -a iwami-mastodon
- heroku config:set AWS_SECRET_ACCESS_KEY=[さっき作ったGoogle Cloud Storage のシークレットアクセスキー] -a iwami-mastodon
- heroku config:set SMTP_FROM_ADDRESS=[使用するGmailアドレス] -a iwami-mastodon
- heroku config:set SMTP_LOGIN=[使用するGmailアドレス] -a iwami-mastodon
- heroku config:set SMTP_PASSWORD=[先ほど作ったアプリパスワード] -a iwami-mastodon
- heroku config:set SMTP_PORT=587 -a iwami-mastodon
- heroku config:set SMTP_SERVER=smtp.gmail.com
以上、すべてのコマンドを入力すればMastodonの基本的な機能(メール認証や画像データの保存など)は使用可能になる。
・以下詰まったところ
Gmailでのメール認証は2段認証とアプリパスワードを使うことで比較的簡単に突破できたねー。
一番詰まったのがMastodonインスタンスから Google Cloud Storage に保存された画像データを参照するところだね。
この GitHubのIssue を参考にして下記のコマンドで解決できた。
heroku config:set S3_CLOUDFRONT_HOST=storage.googleapis.com/iwami-mastodon -a iwami-mastodon
とりあえず、安定して使えるようにはなったから良かった良かった。
あとは、のんびりインスタンス管理しながら色々試してみようかと思う。
以下、参考記事など