Docker for Windows で結果も確認せず Mastodon を建ててみた
そこに Docker for Windows と Mastodon があったので。
Dockerで雑にMastodonを起動する方法を参考に作業したのだが、 Mastodon 自体のバージョン差異やOSの違いでところどころ躓いたのでメモを残してみる。
ベースとして参照したドキュメントは上記ページと 公式の Docker 用インストールガイド。
Docker for Windows のインストールと設定
公式より随意にダウンロードとインストールを行う。わたしが使ったのは Version 18.06.0-ce-win70 (19075) 。
データを永続化してみようと思うので、タスクトレイアイコンの右クリックから出てくるメニューで Settings を選ぶ。表示されたダイアログの Shared Devices タブにて、共有したいドライブへチェックを入れる。Windows アカウントのパスワードを聞かれるので答える。
リポジトリのクローン
任意のディレクトリで https://github.com/tootsuite/mastodon.git を git clone する。
わたしが作業した時点での最新コミットは Update to Node 8.x · tootsuite/documentation@f92195c · GitHub かな。
docker-compose.yml の書き換え
まず、ファイルを開く。
特に my own image をビルドする必要はないので、 web, streaming, sidekiq の build: .
行はコメントアウトする。
今回はデータの永続化を目指すので、コメントで記載されている通り、以下の行のコメントアウトを外す。
# volumes: # - ./postgres:/var/lib/postgresql/data
# volumes: # - ./redis:/data
Docker for Windows には postgres のマウント周りにコツがあるようなので、 GitHub のコメントを参考に以下の行を末尾へ追加する。 networks のさらに下でよい。
volumes: postgres: external: true
GitHub のコメントを参考に、 db へ environment を追記する。 user や password はセットアップ時のウィザードで聞かれるので、ここへ書く必要はなさそう。
volumes: - ./postgres:/var/lib/postgresql/data environment: PGDATA: /tmp
PGDATA を記載しないと、 db の起動が失敗したり、セットアップ時のウィザードで db へ繋がらないって怒られる。
.env.production の書き換え
.env.production.sample をベースに .env.production を作成する。
作成した .env.production の Application secrets を設定する。ファイル内コメントに従い、 docker-compose run --rm web rake secret
の結果を SECRET_KEY_BASE と OTP_SECRET へ設定する。
default language を設定する。
# DEFAULT_LOCALE=de
この行のコメントアウトを外し、日本語へ書き換える。
DEFAULT_LOCALE=ja
build を行う
docker-compose build
を実行する。
次に docker-compose run --rm web bundle exec rake mastodon:setup
を実行する。いろいろ質問されるので、任意に答える。 db と redis の設定は、ただ Enter キーを叩けばいいだろう。うまく質問に答えられれば、DBの初期化とアセットのコンパイルが始まる。
All done! You can now power on the Mastodon server
と表示されれば成功だ。成功だろう。だって All done! だぞ。 You can now power on the Mastodon server だぞ。
Mastodon を立ち上げる
docker-compose up -d
を実行する。
接続に失敗する
ブラウザのアドレスバーへ https://localhost:3000/ と入力し、 Enter キーを押下してみよう。 Firefox では SSL_ERROR_RX_RECORD_TOO_LONG 、 Google Chrome では ERR_SSL_PROTOCOL_ERROR といった文字列が見られるのではないだろうか。
さて、ここで公式のドキュメントへ戻ってみよう。
Prerequisites
- Working basic (Linux) server with Nginx (or Apache2; not officially supported).
そうだ。 Nginx か Apache2 が必要なのだ。
.env.production にも Changing LOCAL_HTTPS in production is no longer supported. (Mastodon will always serve https:// links)
とコメントされている通り、もはや non SSL ではアクセスできないらしいので、良い子のみんなは前提条件を整えようね。
ぶっちゃけメール送信用の設定もしてないしね。これだけで Mastodon が動くってわけではない。ただ、とりあえず All done! までは持っていけたので、備忘録として。