⌨️
MastodonをDockerでsetupする
本記事について
- MastodonをDockerを使ってSetupする方法に関するメモ
参考にしたサイト
- 全般: https://gist.github.com/TrillCyborg/84939cd4013ace9960031b803a0590c4
- DBのセットアップ関係: https://toys.poppo-ya.com/1670/
- GmailをSMTPサーバとして使う設定
- その他設定関係
構成
- PostgreSQL Database, Redis(Cache), mastodon Frontサーバ1(Web), mastodon frontサーバ(userstream), バックグラウンドサーバ(sidekiq)はDockerコンテナで構成
- ユーザアクセスの受付はnginxプロセスに担わせる
gitからソースコードの取得
cd $HOME
git clone https://github.com/mastodon/mastodon.git
cd mastocon
git checkout v4.1.0
.env.productionの修正
サンプルをコピー
cp .env.production.sample .env.production
Domainを設定
LOCAL_DOMAIN=example.com
DB設定
DB_HOST=db
DB_USER=user
DB_NAME=db
DB_PASS=password
DB_PORT=5432
Secret生成
docker-compose run --rm web bundle exec rake secret
Secretを設定ファイルにコピー
SECRET_KEY_BASE=xxx
OTP_SECRET=xxx
Web Push用の鍵の生成
docker-compose run --rm web bundle exec rake mastodon:webpush:generate_vapid_key
Web Push用の鍵を設定ファイルにコピー
VAPID_PRIVATE_KEY=xxx
VAPID_PUBLIC_KEY=xxx
データベースの作成
database用コンテナを起動してログイン
docker-compose up -d db
docker-compose exec db bash
databaseを作成
psql -U postgres
postgres=# CREATE USER mastodon_user;
CREATE ROLE
postgres=# alter role mastodon_user with password 'password';
ALTER ROLE
postgres=# create database mastodon_db with owner=mastodon_user;
CREATE DATABASE
databaseにテーブル等をセットアップ
docker compose run --rm web bundle exec rake db:migrate
SMTPサーバの設定
gmailのSMTPサーバを設定する。まずgoogle accountにログインし、アプリパスワードを生成する。
- google accountにアクセス
- セキュリティ設定にアクセス
- アプリパスワードを生成
生成したアプリパスワード
を設定ファイル.env.production
に設定する。
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_LOGIN=xxx@gmail.com
SMTP_PASSWORD=アプリパスワード
SMTP_FROM_ADDRESS=notifications@example.com
ファイルアクセスパーミッション設定
mastodonソースに含まれるdocker-compose.yml
を利用する場合、以下のマウント設定がある。
...
volumes:
- ./public/system:/mastodon/public/system
...
mastodonサーバ経由での書き込みを許可する。
sudo chown -R 991:991 public/system
起動
docker-compose up -d
nginxのインストール
sudo apt install nginx
let's encryptの設定
sudo apt install certbot
sudo systemctl stop nginx
certbot certonly --standalone -d example.com
sudo systemctl start nginx
certbot certonly --webroot -d example.com -w $HOME/mastodon/live/public/
nginxの設定
こちらを参考にnginxに設定を施す。
ファイアウォール設定
mastodonサーバアクセスのためのポートのみ解放する。
タイプ | プロトコール | ポート | IPアドレス |
---|---|---|---|
HTTP | TCP | 80 | 0.0.0.0/0 |
HTTPS | TCP | 443 | 0.0.0.0/0 |
その他設定
Adminアカウントの生成
docker-compose exec web bash
tootctl accounts create --role Admin --email EMAIL --confirmed USERNAME
Adminアカウントへの変更
docker-compose exec web bash
tootctl accounts modify USERNAME --role Admin
Registrationルールの設定。いずれかを選択・設定
tootctl settings registrations open
tootctl settings registrations close
tootctl settings registrations approved
Discussion