Edited at

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メールは問題なく受信できましたが、携帯電話のキャリアメールだと届きません。