Mastodon を Docker で起動する方法

Mastodon を Docker で起動する

ご存知 Mastodon です。以下は Windows の Vagrant 上の Ubuntu 16.04 LTS での内容ですが、おそらくどの環境でも通じると思います。

Docker と Docker Compose を入れる

Docker を入れた直後にCannot connect to the Docker daemon. Is the docker daemon running on this host?みたいに怒られるときは再起動です。

また、Docker Composeはバージョンが古いとエラーで実行できないので、手動で入れるのがいいでしょう。コピペでコマンドを2つ叩くだけです。

git clone する

/optあたりでgit cloneしましょう。

# cd /opt
# git clone https://github.com/tootsuite/mastodon.git

ドキュメントにしたがってファイルを編集する

ドキュメントは以下にあります(これでもかって言うくらいに親切です)。念のため具体的な手順を次に書いていきます。 https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Docker-Guide.md

ドキュメントにしたがってファイルを編集する(具体的な手順)

1. データを永続化する場合はdocker-compose.ymlを編集する

デフォルトのdocker-compose.ymlだとPostgreSQLRedisのデータが永続化されておらず、まさにお試し状態ですので、これらのコメントアウト部分を有効化してデータを永続化しましょう。もちろん「お試し」の場合はそのままでもいいです。

該当箇所は以下です。

  db:
    restart: always
    image: postgres:alpine
### Uncomment to enable DB persistance
#    volumes:
#      - ./postgres:/var/lib/postgresql/data

  redis:
    restart: always
    image: redis:alpine
### Uncomment to enable REDIS persistance
#    volumes:
#      - ./redis:/data

2. .env.productionファイルを編集する

.env.productionを編集します。git cloneした直後の状態では.env.productionが存在しませんので、ひな形をコピーします。

# cp .env.production.sample .env.production

その後に内容を編集します。ドキュメントでは以下の項目を設定する(書き加える、書き直す)必要があるだろうと書かれています。

  • LOCAL_DOMAIN
  • LOCAL_HTTPS
  • the SMTP_*

以下も書き加える必要がありますが、Docker を用いる場合は後ほど取得することになるのでとりあず空欄でいいです。

  • PAPERCLIP_SECRET
  • SECRET_KEY_BASE
  • OTP_SECRET

一方で、以下の部分はそのままにしておかなければいけない、とあります。

  • REDIS_*
  • DB_*

編集し終えたら保存しましょう。

3. ビルドする

ビルドしましょう。

# docker-compose build

4. SECRET を取得する

SECRET を取得します。取得できた SECRET を.env.productionに書き込みます。お試し実行をした際にdocker-compose downするなどしてコンテナを削除した場合は再取得します。

# docker-compose run --rm web rake secret

こんな感じで SECRET が出力されると思います。

Creating mastodon_db_1
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

.env.productionファイルに書き加える場所は以下の項目です。以下の3つにxxxx...xxxを書き加えましょう。

  • PAPERCLIP_SECRET
  • SECRET_KEY_BASE
  • OTP_SECRET

5. migrate する

DB をmigrateします。

# docker-compose run --rm web rails db:migrate

6. assets をコンパイルする

以下のとおりです。ご存知のように少し時間がかかります。

# docker-compose run --rm web rails assets:precompile

7. 起動する

ようやく起動です。バックグラウンドで起動するために-dオプションを追加しています。

# docker-compose up -d

8. アクセスする

デフォルトの 3000番 ポートに Webブラウザ でアクセスして画面が表示されれば OK です。ここまでできたならば後はいろいろいじって試せると思います。 f:id:gregminster:20170415121852p:plain

X. 注意点とか

  • docker-compose.ymlを見ると分かりますが、rails sしてますので、もし本格的に運用したいならば専用サーバやunicornを考えるべきかなと思います
  • ビルド中に怒られることが少々ありますが気にしないでも大丈夫です(気にすべきところも場合によってはありますが)
  • インターネットに公開する場合は https 必須でしょう
  • ユーザ認証メール中のリンク先アドレスはポート番号を考慮してくれません(見ていませんがこれはプルリク出されてそう)
  • ソースを書き換えたとするとその度にビルドしなければいけないので大変です*1

*1:コンテナの中に入って書き換えればいいかもですが

Powered by はてなブログ