Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@S_H_

島根県石見地方特化マストドン:いわみどんを無料で作った話

More than 3 years have passed since last update.

作るまでの経緯

元記事:島根県石見地方特化マストドン:いわみどんを無料で作った話

先日、Heokuを使ってのMastodonインスタンス作成できるという記事を書いた(はてなブログで)。

スクリプト少女のべるちゃんインスタンスを Heroku + Mastodon で作ってみた

このときは、AWSアカウントなどを使っての画像やアイコン、ヘッダーの保存ができなかった。

保存できなかった原因としては、Heoku CLI コマンドやらMastodon内部の挙動で把握できていない部分があったため
(それと、個人的にAWSアカウントを作りたくなかった&渋々作ろうとしたら電話認証でコケたのも原因の一部)
 
で、その後も色々調べていると下記の記事を発見

マストドンのバックエンドに Google Cloud Storage を使う方法 #mastodon - Qiita 

どうやら、Google Cloud Storage を使ってMastodonにアップロードした画像データなどを保存できるそうな。

「よし、面白そうだ!実験的にインスタンス作ってみよう」
と思い、Mastodonインスタンスを作ってみた。
 

というわけで今回立ち上げたインスタンス:いわみどん

いわみどん 

いわみどんは島根県石見地方に特化したインスタンスとして運営しています。
 

以下、ざっくりとしたインスタンス:いわみどん立ち上げまでの流れ

1.まずHeokuにデプロイ

2.デプロイ実行中にGoogle Cloud Storage に登録し必要なアクセスキーなどを取得

3.デプロイ後、Heroku CLI を使って環境変数を設定する。

基本的には、1~3までの流れで基本的なMastodonの機能(TooTや画像のアップロード、アイコンやヘッダーの変更など)が使えるようになる。

より、詳細な流れとしては下記にある。

より細かいインスタンス制作の流れ

使用環境
Heroku
Gmail
Google Cloud Storage

1.Herokuにデプロイ

下記より「Deploy to Heroku」を押して、Herokuへのデプロイを行う

tootsuite/documentation 

で、デプロイ欄の「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 にアクセス

Cloud Storage - オンライン データ ストレージ | Google Cloud Platform

Googleアカウントを持っている場合であれば、アカウント名とパスワードを入力するだけ。ない場合は、アカウントを作る必要がある。

ログイン後、コンソール画面内にある「ストレージ」から「Storage」という項目をクリック。

「バケットを作成」というボタンがあるので、それをクリックして「iwami-mastodon」というバケットを作成する。このとき、「デフォルトのストレージクラス」は「Multi-Regional」にすること

バケットを作成した後は、画面左側にある設定をクリック。画面が切り替わった後、画面内に「相互運用性」という項目がある。

その中の「デフォルトプロジェクトにする」と「新しいキーを作成」をクリックする。

このとき、生成されたアクセスキーとシークレットアクセスキーは後で使うのでわかるようにしておくこと

これで、Google Cloud Storage での設定は終了

3.Gmailによるメール認証の前準備

いわみどんはGmailでのメール認証を使っており、その前準備としてGoogleアカウントで2段認証を行うように設定を変えておく。

Googleアカウントのアカウント情報内にある「ログインとセキュリティ」を選択。

その中にある2段認証プロセスを選択し、認証を行う。

その後、「ログインとセキュリティ」内の「アプリ パスワード」という項目を選択してパスワードを生成する。

このとき生成したパスワードは後で使うのでわかるようにしておくこと

これでメール認証の前準備は終了。

4.Heroku CLI を使って各種環境変数を設定。

Heroku CLI 自体のインストールに関してはこちらの記事を参考にしてください。

コマンドでHerokuを操作する Heroku CLI のインストール
 
インストール後、コマンドプロンプト(多分、PowerShellでも可)を起動して以下のコマンドを入力

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でのメール認証
Google Cloud Storage に保存された画像などをMastodonインスタンスから参照するところ
Gmailでのメール認証は2段認証とアプリパスワードを使うことで比較的簡単に突破できたねー。

一番詰まったのがMastodonインスタンスから Google Cloud Storage に保存された画像データを参照するところだね。

Images cannot be viewed using Google Storage · Issue #5165 · tootsuite/mastodon

この GitHubのIssue を参考にして下記のコマンドで解決できた。


heroku config:set S3_CLOUDFRONT_HOST=storage.googleapis.com/iwami-mastodon -a iwami-mastodon

 

その後

とりあえず、安定して使えるようにはなったから良かった良かった。

あとは、のんびりインスタンス管理しながら色々試してみようかと思う。

以下、参考記事など

Herokuをつかって無料でマストドンインスタンスを立ててみた(独自ドメインなしで)
zunda/mastodon
今流行りの #mastodon on Google Container Engine
マストドンのバックエンドに Google Cloud Storage を使う方法 #mastodon - Qiita
Migrating from Amazon S3 to Google Cloud Storage | Cloud Storage Documentation | Google Cloud Platform
[Heroku] 無料で Mastodon を動かす(~v1.3.3未満) [マスト丼] - Qiita
Images cannot be viewed using Google Storage · Issue #5165 · tootsuite/mastodon
SSLで運用しているmastodonとS3の連携のハマりどころ - Qiita
コマンドでHerokuを操作する Heroku CLI のインストール

5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
S_H_

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?