ハマったので残しておく。
前提条件
- GitHubにMastodon本家をForkしたリポジトリがあり、そこをベースに運用している。
git remote -v
の状態が以下の通りで、origin/mainが本番運用ブランチ。mastodon https://github.com/mastodon/mastodon.git (fetch) mastodon https://github.com/mastodon/mastodon.git (push) origin https://github.com/Lycolia/lycodon.git (fetch) origin https://github.com/Lycolia/lycodon.git (push)
やり方
- マージブランチを作る
git checkout -b merge-latest
- 本家を取ってくる
git fech mastodon
- マージブランチにマージする
git merge mastodon/main
- セットアップする
# swich user sudo su - mastodon # install bundle install yarn install # DBがアカンことがあるので叩いておく RAILS_ENV=production bundle exec rails db:migrate # いつものリビルド RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile exit # 再起動 sudo systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming
- 動作確認OKなら
git push
してGitHub上で自分のところのmainにマージする。デフォルトでは本家に向くので注意 - もう一度、前述4番のセットアップコマンド一式を流し、問題なければ終わり
トラブルシュート
正常に動いていない場合
ジャーナルを見てエラー原因を特定する。新規要素がらみのパラメーターが出てたらDBが怪しいのでRAILS_ENV=production bundle exec rails db:migrate
で直る可能性がある。
sudo journalctl -u mastodon-web -f
なんか昔のやり方が使えなくなってたので調べたメモ。
確認環境
Env | Ver |
---|---|
OS | Ubuntu 24.04.3 LTS |
Docker | version 28.1.1, build 4eba377 |
Docker Compose | v2.35.1 |
Mastodonのバージョン | v4.5.0-alpha.2 |
Mastodonのコミットハッシュ | 06803422da3794538cd9cd5c7ccd61a0694ef921 |
手順
DEVELOPMENT.md#dockerの手順通りにやると行ける。
docker compose -f .devcontainer/compose.yaml up -d
docker compose -f .devcontainer/compose.yaml exec app bin/setup
docker compose -f .devcontainer/compose.yaml exec app bin/dev
コンテナへのアタッチ方法
# 方法1
docker compose -f .devcontainer/compose.yaml exec app zsh
# 方法2
cd .devcontainer
docker compose exec app zsh
VSCodeがあるならDockerやRemoteほげほげ系の拡張を使い、devcontainer-appにAttach Shellしてもよい。
検証ユーザーの作成
- 次のコマンドでユーザーを作る
./bin/tootctl accounts create hoge --email hoge@example.com --confirmed
- ユーザーの承認を行い、必要に応じてパスワードを使いやすいものに変更する
rails console user = Account.find_by(username: 'hoge').user user.approve! # PW変更ここから user.password = 'password' user.skip_confirmation! # PW変更ここまで user.save! quit
フロントエンドのビルドとサーバー起動
bin/rails assets:precompile
bin/dev
トラブルシューティング
localhostではアクセスできるが、マシンのホスト名やhoge.testのようなローカルドメインでアクセスできない
.env.development
にALTERNATE_DOMAINS=hoge.test
の行を追加することで他のドメインでもアクセスできる。
この設定があるとMastodonを別環境で動かしててリモートからドメインアクセスする場合に便利。
ActiveRecord::PendingMigrationErrorなど、ActiveRecord関係のエラーが出る
コンテナの中でrails db:setup
を叩くことで解決する。
Unable to load application: NameError: uninitialized constant LetterOpenerWebというエラーが出る
リポジトリルートにあるdocker-compose.yml
を使うと発生するので、.devcontainer/compose.yaml
を使う事で解決する。
あとがき
検証用にバニラなMastodon環境が欲しくて作ってみたが昔と変わっていて地味にハマった…。
adiaryの痒い所をちょこちょこ直している。上の画像にはないがCtrl + Vでクリップボードの画像をアップロードできる機能も付けている。
変更差分はもっぱらGitHubで管理していて、今日も最新版に追従させたところだ。
最近はOGPを強制出力するようにしたり、今日はSyntax HighlightをPrism.jsに置き換えるなどしていた。
adiaryはDiscordのようにChromeに詐称してくるBOT相手だとOGPが出ないし、標準のSyntax Highlightはしょっぱい。
比較用に元のやつを撮っておくのを忘れてしまったが、正直かなり良くなったと思う。
スマホで見たときに行折れせずスクロールできるようになったのも良い。
Mastodonの最大アップロードサイズを変更する
確認環境
Env | Ver |
---|---|
Mastodon | v4.5.0-alpha.2 |
nginx | 1.26.1 |
手順
- Mastodonのapp/models/media_attachment.rbの
IMAGE_LIMIT
,VIDEO_LIMIT
,MAX_VIDEO_MATRIX_LIMIT
,MAX_VIDEO_FRAME_RATE
,MAX_VIDEO_FRAMES
辺りをいい感じに直す - nginxのmastodon用設定を開き、
client_max_body_size 100m;
をいい感じに直す - mastodonとnginxを再起動する
- 適当にデカいファイルをあげて確認する
- 確認用ファイルを消したい場合は、
public/system/media_attachments/files/
にあるので消す
Mastodonの最大投稿文字数を増やす
確認環境
Mastodon v4.5.0-alpha.2
手順
投稿可能な文字数を増やすを参照。
注目タブを固定した投稿に変更する
確認環境
Mastodon v4.5.0-alpha.2
やり方
割と力押してやったのでイケていない。
- 変更時の差分を参考に改造
資材のビルドを行い、Webを再起動
RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile
必要に応じてsudo chown -R mastodon /home/mastodon
で所有権を戻しておく。
TL周りのCSSをいじる
確認環境
Mastodon v4.5.0-alpha.2
手順
app/javascript/styles/mastodon/components.scss
を適当に編集資材のビルドを行い、Webを再起動
RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile
必要に応じてsudo chown -R mastodon /home/mastodon
で所有権を戻しておく。