インターネット上にたくさん情報があり、特に説明は不要かと思いますが流行に乗って構築します。
以下の構築手順を参考にさせていただきました。
DockerでMastodonをローカルで動かしてみた! ので、その方法をご紹介
mastodonのソースコード
https://github.com/tootsuite/mastodon
mastodonの構築手順(Docker)
https://github.com/tootsuite/documentation/tree/master/Running-Mastodon
→Docker-Guide.md
ソースコードの取得
まっさらな状態から構築していきます。
まずは以下の方が書かれた記事を参考にDockerのパッケージを導入しておきます。
CentOS7にdockerとdocker-composeの最新版をインストールする
ソースコードの取得
# adduser mastodon
# gpasswd -a mastodon docker
# su - mastodon
$ git clone https://github.com/tootsuite/mastodon.git
// URLは上記の「mastodonのソースコード」より最新を確認してください
$ ls -l /home/mastodon/
drwxrwxr-x 15 mastodon mastodon 4096 Apr 23 19:01 mastodon
WEBアプリの設定変更
取得したソースコードを動かすために設定ファイルを準備する。
設定ファイルの変更
$ cd /home/mastodon/mastodon
$ ls -a
.env.production.sample
$ cp .env.production.sample .env.production
// あらかじめdockerを動かしておく
$ docker-compose build
中略
Successfully
.env.productionの編集
私が保持しているnotebook.yokohamaドメインで動かします。
修正した箇所だけ抜粋。事前にSparkPostなどの外部サービスや、PostfixなどMTAを利用可能な状態にしておきます。今回はPostfixを利用します。
LOCAL_DOMAIN=notebook.yokohama
LOCAL_HTTPS=false
DEFAULT_LOCALE=ja
SMTP_SERVER=DockerとホストPCのブリッジNWのIPを指定する
SMTP_PORT=25
SMTP_FROM_ADDRESS=info@notebook.yokohama
$ docker-compose run --rm web rake secret
→上記コマンドを3回実行して、以下にそれぞれ設定
PAPERCLIP_SECRET=省略
SECRET_KEY_BASE=省略
OTP_SECRET=省略
メールの送信に関して、少し手間取ったので以下メモ
参考記事:Dockerコンテナ内部からホストのSMTPを利用したい
Docker上のmastodonからホスト上のPostfixを経由してメール送信を試みましたが、メール送信が失敗しました。原因はSMTP_SERVERにはlocalhostを指定していたためで、Docker上のコンテナから見た場合ホストサーバはネットワーク上別のサーバとなっています。そのためlocalhostはコンテナ自身となり、うまく動いていませんでした。コンテナとホストをブリッジしているNWのIPをSMTP_SERVERに指定すれば問題なく利用できました。
ブリッジNWのIP
ブリッジNWはdocker0というIF名らしい。
$ ip addr
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:d4:1c:63:e8 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
DBの初期化
DockerにおけるDB(おそらくPostgreSQL)の初期化
$ docker-compose run --rm web rails db:migrate
CSSや、JSなど静的ファイルのプリコンパイル
Railsのassets以下ファイルをコンパイルする
$ docker-compose run --rm web rails assets:precompile
mastodonの起動
準備ができたので、Dockerを起動する
$ docker-compose up
https://notebook.yokohama
※サーバのリソースが不足したので、プロセスを落としています。
動きました。もともとこのドメインはSSLサーバ証明書を導入したNginxを使っていたので、前面のNginxにhttpsでアクセスして、mastodonにhttpで転送する形としました。
独自構築Postfixのため、スパムフィルタで止まる可能性があります。。。gmailや、yahooメールは問題なく受信できましたが、携帯電話のキャリアメールだと届きません。