CentOS
docker
mastodon

mastodonをCentOS7.3に構築する(Docker利用版)

More than 1 year has passed since last update.

インターネット上にたくさん情報があり、特に説明は不要かと思いますが流行に乗って構築します。
以下の構築手順を参考にさせていただきました。
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を利用します。

.env.production
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
※サーバのリソースが不足したので、プロセスを落としています。
mast.png

動きました。もともとこのドメインはSSLサーバ証明書を導入したNginxを使っていたので、前面のNginxにhttpsでアクセスして、mastodonにhttpで転送する形としました。

独自構築Postfixのため、スパムフィルタで止まる可能性があります。。。gmailや、yahooメールは問題なく受信できましたが、携帯電話のキャリアメールだと届きません。