Skip to content

Instantly share code, notes, and snippets.

@yswallow
Last active August 25, 2022 15:25
Show Gist options
  • Save yswallow/d3f1a8e100cae6dc1bbacf482ed7debf to your computer and use it in GitHub Desktop.
Save yswallow/d3f1a8e100cae6dc1bbacf482ed7debf to your computer and use it in GitHub Desktop.
2022年にMastodonインスタンスをHerokuに建てた話

Herokuに建てたMastodon鯖を閉じるとき

目標

月額料金がかからないようにする

はじめ

$ heroku pg

Data Size:             99.6 MB/10.00 GB (In compliance)
Tables:                84
Rows:                  202914/10000000 (In compliance)

したこと

heroku run tootctl media remove

(19min)

7822/7822 |=====================================================| Time: 00:18:23
Removed 7822 media attachments (approx. 4.35GB) 

heroku run tootctl cache clear

(53sec)

heroku maintenance:on

heroku ps:scale worker=0 web=0

heroku pg:backups:capture

(17s)

heroku pg:backups:url

(10MB)

heroku pg:backups:download でもいいらしい

heroku addons:destroy PG_HOBBY_BASIC

(危ない操作なのでアプリ名の入力が必要)

復元

PG バックアップでダンプファイルにアクセスしてインポートするには、それを HTTP でアクセス可能な URL の場所にアップロードする必要があります。 署名済みの URL​ で Amazon S3 を使用することをお勧めします​。

https://devcenter.heroku.com/ja/articles/heroku-postgres-import-export#import-to-heroku-postgres

今後

Starting November 28th, 2022, free Heroku Dynos, free Heroku Postgres, and free Heroku Data for Redis® will no longer be available.

???

やり方

ほぼ下のまんまです

https://github.com/zunda/mastodon/wiki/CreateInstanceOnHeroku

変更点・引っかかったところ

アカウント作成を承認制にする

インスタンスを稼働したあとにadminのWeb設定画面からできる

アカウント作成時の「意気込み」欄のテキストを変更する

翻訳ファイルを書き換える

最初からPostgresをHobby-basicにしておく

実のところはDBリセットになったんですが

  1. アドオンのPostgres/Hobby-devがアタッチされた状態だとDATABASE_URLを変更できないので外す
  2. Postgres/Hobby-basicをアタッチする
  3. Hobby-basicのデータベースのURLをDATABASE_URLとして設定

連合のインスタンスと通信できない

症状

  • 外部からフォローできない(フォローしてリロードすると承認待ちと表示される)
  • 外部のユーザーを検索できない

サーバーログを見るとRSAErrorが出ていた

"RSAError"で検索するとまんまのissueが立ってた → mastodon/mastodon#17525

直し方(予防法)

db:migrateする前に

  1. heroku run rake db:schema:load
  2. heroku run rake db:seed

する。

db:createはなんかエラーになった。(何もわかっていない)

S3の権限が変わっている

publicアクセスをえらく警告するようになった?

  • ACLによるアクセスが効くようにする
  • PublicからのReadアクセスを許可する
  • CORSの記述がJSONになった
  • ap-northeast-1だとS3_HOSTNAME:=s3.ap-northeast-1.amazonaws.com

カスタムドメインを利用する

heroku domains:add don.keyboardon.club して、Route53でCNAMEレコードが DNS Targetとして表示された ***.herokudns.com に向くようにする。 勝手にLet's Encryptの証明書を当ててくれて便利! このとき(app name).herokuapp.comに向けると don.keyboardon.clubにアクセスしても*.herokuapp.comの証明書が降ってきてエラーになる。

ガイドにはheroku domains:add keyboardon.clubするよう書いてあるが、 設定してしばらくすると「レコードが向いてないぞ」と怒られたので外した。 動いているのでヨシ!何もわからん

メモリ消費量を減らす

常にweb dynoが600MBくらい食っててHobby-basicの500MBを超過していたので

WEB_CONCURRENCY=1
MAX_THREADS=3
MAGICK_MEMORY_LIMIT=200000000

で400MBくらいに落ち着いた

Mailgunを使う

ユーザー登録を開放すると必要なので

  • sandbox*のアカウントではMailgunのコンソールで登録した人にしか送信できない
  • heroku addonのアカウントだと重課金しないと外部に送信できなかったので既存のアカウントを利用した。月5000通送信まで無料?
  • mail.keyboardon.clubと署名用のドメインにTXTレコードやMXレコードを設定する

何円かかるの

ドメイン$16/年 + dyno $7/月*2 + Postgres $10/月

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment