🐘

Mastodonのサーバをdockerで建てる

2023/03/10に公開約2,600字

環境

OS: Ubuntu 22.04.2 LTS x86_64

前提条件

docker composeが入っている。

下準備

git clone https://github.com/mastodon/mastodon.git
cd mastodon
cp .env.production.sample .env.production
sudo docker compose pull

docker-compose.ymlの変更

  db:
    restart: always
    image: postgres:14-alpine
    shm_size: 256mb
    networks:
      - internal_network
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres']
    volumes:
      - ./postgres14:/var/lib/postgresql/data
    environment:
      - 'POSTGRES_HOST_AUTH_METHOD=trust'

となっているので、
['CMD', 'pg_isready', '-U', 'postgres']
['CMD', 'pg_isready', '-U', 'example-mastodon-user', '-d', 'mastodon_prpduction']に変えて、
'POSTGRES_HOST_AUTH_METHOD=trust'を消し、代わりに、POSTGRES_USER, POSTGRES_DB, POSTGRES_PASSWORDを追加します。以下のようになるはずです。

  db:
    restart: always
    env_file: .env.db
    image: postgres:14-alpine
    shm_size: 256mb
    networks:
      - internal_network
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'example-mastodon-user', '-d', 'mastodon_production']
    volumes:
      - ./postgres14:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: example-mastodon-user
      POSTGRES_PASSWORD: hogehoge
      POSTGRES_DB: mastodon_production

あと、portが他のものにかぶるようだったら変更します。

.env.productionの変更

続いて、.env.productionを変更していきます。以下をまず変更します。

LOCAL_DOMAIN=your_domain
REDIS_HOST=redis
DB_HOST=db
DB_PASS=your_passwd

また、ElasticSearchはいったんES_ENABLED=falseで無効化します。
そしたら、
docker run --rm tootsuite/mastodon bundle exec rake secretを2回行い、それぞれSECRET_KEY_BASEOTP_SECRETに入れます。
そして、docker run --rm --env-file ./.env.production tootsuite/mastodon bundle exec rake mastodon:webpush:generate_vapid_keyを行い、出力されたものに置き換えます。
あと、SMTPの設定をそれぞれ変えていきます(以下はsendgridの例)

SMTP_SERVER=smtp.sendgrid.net
SMTP_PORT=587
SMTP_LOGIN=apikey
SMTP_PASSWORD=generated_apikey
SMTP_FROM_ADDRESS=notifications@example.com
SMTP_AUTH_METHOD=plain
SMTP_ENABLE_STARTTLS_AUTO=true

今回はオブジェクトストレージは使いませんので、S3_ENABLED=falseにします。

初期設定

sudo docker compose run --rm web rails db:create
sudo docker compose run --rm web rails db:migrate 
sudo docker compose run --rm web rails assets:precompile 
sudo docker compose stop && sudo docker compose up -d

あとはcloudflareのtunnel等を用いて、LOCAL_DOMAINにアクセスできれば終わりです!
メール認証が終わった後に、

sudo docker compose exec web bin/tootctl accounts modify user_id --role Admin

user_idをadminにすることができます。

あとがき

今回は、dockerを用いてmastodonを構築しました。個人的には、公式のdocker構築ドキュメントがないので少し戸惑いました。
誤った点があればご指摘ください。

参照

https://blog.aoirint.com/entry/2020/mastodon_docker/

Discussion

ログインするとコメントできます