タイトルは釣りです。Dockerが入っている環境前提での作業環境構築の備忘録です。
参考: Vagrant や Docker を使わずに macOS でマストドンの開発環境を構築する – Qiita
Docker使わない版も用意しました!
Docker使わない環境構築はこちら
まずは開発ガイドラインを読もう
マストドン公式 開発ガイドライン
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Development-guide.md
.env.productionの修正
マストドンのソースが手元にある状態にしてまず最初にやるのがこのファイルの編集です。
下記の部分を変更していきます。
LOCAL_DOMAIN
localhost:3000
SECRET_KEY_BASE と OTP_SECRET
docker-compose run --rm -e RAILS_ENV=production web bundle exec rake secret
を二回叩いてちゃちゃっと設定します。
VAPID_PRIVATE_KEY と VAPID_PUBLIC_KEY
docker-compose run --rm web rake mastodon:webpush:generate_vapid_key
を一度だけ実行してコピペして貼り付けます。
SINGLE_USER_MODE
おひとりさまインスタンスにしたいときは
SINGLE_USER_MODE=true
複数アカウント作りたいときは
SINGLE_USER_MODE=false
にします。
アカウント新規作成画面やログイン画面にアクセスしようとするとID1番のユーザーのページに飛ぶ挙動になります。
DEFAULT_LOCALE
ja
日本語を使うので日本にします。
SMTP関係
SMTP_SERVER=localhost
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=notifications@example.com
使わないのでこうします。
docker-compose.ymlの編集
web
command: tail -f /mastodon/README.md
volumes: - ./:/mastodon
ports: - "127.0.0.1:3000:3000"
commandの行を書き換えておきます。
こうすることで、コンテナが落ちなくなります。
volumesはソースファイルをコンテナ内外から直接編集できるようにするためです。
ここまできたら
docker-compose up -d
で起動します。
コンテナに入るには、
docker-compose exec web bash
これで入ります。
rootで入りたい場合は、
docker-compose exec --user root web bash
で入ります。
migrate
dbのセットアップをします。
docker-compose run -e RAILS_ENV=development --rm web rake db:migrate
これだけでOK。
[webコンテナ内] yarn
yarn
yarn install --dependencies
yarn add webpack-dev-server --dependencies
基本的にはyarnだけでOKですが、トラブルシュート的に3行
[webコンテナ内] development許可
sed -i 's|BUNDLE_WITHOUT: "test:development"||g' /usr/local/bundle/config
[webコンテナ内] Rails側でアセットのコンパイルをしない
sed -i 's/compile: true/compile: false/' config/webpacker.yml
[webコンテナ内] bundle install
bundle install
[webコンテナ内] webpacker:install
RAILS_ENV=development rails webpacker:install
不要かもしれませんが念の為・・・。
全てnで解答します。
[webコンテナ内] 環境設定
echo 'export RAILS_ENV=development' >> ~/.bashrc
echo 'export NODE_ENV=development' >> ~/.bashrc
source ~/.bashrc
[webコンテナ内] rails起動
RAILS_ENV=development bundle exec rails server
[webコンテナ内] webpack –watch起動
vim config/webpack/development.js
してから、
watchOptions: { poll: 1000
}
を追加、これで1秒ごとにファイルの変更を監視します。
NODE_ENV=development RAILS_ENV=development yarn build:development --watch
こちらで監視のスタートとアセットのコンパイルをするようになります。
差分変更に対応しているのでファイル変更時はコンパイルが早いです。
localhost:3000にアクセス
http://localhost:3000 にアクセスして起動していることを確認します。
[webコンテナ内] admin作成
まずはじめに、管理画面からアカウントを作成します。
RAILS_ENV=development rails mastodon:confirm_email USER_EMAIL=admin@example.com
RAILS_ENV=development rails mastodon:make_admin USERNAME=admin
[webコンテナ内] alpine linuxの環境改善
docker-compose exec --user root web bash
でrootでログイン後、
apk update
apk add --update alpine-sdk
apk add vim tmux wget curl lsof tree sudo
を実行しておくと使いやすくなると思います。
LiveReload
コンテナの外での作業です。ファイルが変更されたら、自動的にブラウザをリロードします。
LiveReload というChrome拡張をインストールします。
livereload本体は、下記URLの手順でインストールします。
Winの場合: http://livereload.com/
Macの場合: http://macappstore.org/livereload/
Mac版は App Storeでは有料ですが、それ以外のインストール手段では無料です。npm版もあります。
アセットコンパイルに時間がかかるので3秒後にブラウザをリロードするようにしてlivereloadを起動します。
livereload . --wait 3000