投稿日:
他のサーバーを見ていて、ウチでもMastodonに翻訳ボタンを生やして機能させたくなったのでやってみた結果のログ。
内容としてはDeepLのアカウントを作成し、APIキーを取得し、Mastodonの.env.productionに追記して反映するだけなので、5分くらいあればできる。
月50万文字まで翻訳できるので、たまに短文の翻訳に使う程度なら必要十分だろう。
確認環境
- Mastodon v4.5.4
やり方
- DeepL ProのAPIタブを開き、無料プランに登録する。クレジットカードが必要だが、意図的にProプランにしなければ課金されないらしいので、恐らく害はないだろう。


- 適当にDeepLのAPIキーを取得する。
xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx:fxみたいな形式のやつ - 以下のコマンドで疎通確認
export API_KEY={APIキー} curl -X POST https://api-free.deepl.com/v2/translate \ --header "Content-Type: application/json" \ --header "Authorization: DeepL-Auth-Key $API_KEY" \ --data '{ "text": ["Hello world!"], "target_lang": "JA" }'
- Mastodonの
.env.productionに下記を追記DEEPL_PLAN=free DEEPL_API_KEY=XXXXXX-XXXX-XXXXX:fx - リビルド
RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile - 再起動
sudo systemctl restart mastodon-web - 動作確認して動いていればOK


トラブルシューティング
クレカ登録時に「決済手段を認証できませんでした。別の決済手段を選択してやりなおしてください。 (Error Code: OFQUTG)」と言われる
ブラウザを変えるといける可能性がある。
これはWindows Edgeで試してこう言われ、何度試しても無理だったが、Android Edgeで試したら一発で行けたからだ。原因としては、StripeのSDKが以下のようなエラー吐いてたのが関係していたのではないかと思っている。
Applying inline style violates the following Content Security Policy directive 'style-src 'self''. Either the 'unsafe-inline' keyword, a hash ('sha256-XXXXXXXXXXXXXXXXXX='), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present. The action has been blocked.
あとがき
別にEdgeについてるBing翻訳機能でもいいのだが、こっちのほうが操作が楽だし、DeepL翻訳がうまくいかなければ、Bing翻訳という手も使えると思えばアリだろう。
2026-01-30追記
Misskeyをはじめとした互換性のないサーバーからの投稿配信すべてに翻訳ボタンが生えてきて邪魔なので結局取り去ることに…。翻訳ボタンが必要なケースは私のユースケースでは少ないので、この結果は微妙だった…。
参考にしたもの
自分の投稿にあるタグの使用回数を知りたかったのでMastodonの本番DBを見る方法を調べた記録。
確認環境
Mastodon v4.5.4
やり方
postgresになってmastodon_productionを開くと見れる。
sudo su - postgres
psql mastodon_production
テーブル一覧は恐らくhttps://mstdn.example.com/pghero/で見れるものがそれだと思う。
DBスキーマ
有志が公開しているMastodonのER図を参考にさせてもらった。
今回打ったクエリ
自分が投稿しているタグの総数が知りたかったので、こんな感じにしてみた。たぶん自インスタンスのdomainはnullと思われる。適当なので知らんけど。
SELECT
tags.name
,COUNT(*) as post_count
FROM statuses
INNER JOIN statuses_tags
ON statuses.id = statuses_tags.status_id
INNER JOIN tags
ON statuses_tags.tag_id = tags.id
WHERE
statuses.account_id = (SELECT id FROM accounts WHERE username = 'Lycolia' AND domain IS NULL)
GROUP BY
tags.name
ORDER BY
post_count DESC;
クエリの結果
ゾンビランドサガと三宮に対する言及がめちゃくちゃ多いことがよく分かった。
| タグ名 | 使用回数 |
|---|---|
| ゾンビランドサガ | 225 |
| 三宮 | 205 |
| 神戸 | 123 |
| 兵庫 | 101 |
| 自炊 | 93 |
| 兵庫食材 | 72 |
| 交通 | 64 |
| サイト運営 | 32 |
| 神戸食材 | 25 |
| 鉄道 | 22 |
| 映画 | 15 |
| 映画館 | 14 |
| 買い物 | 9 |
| 姫路 | 7 |
| 災害 | 5 |
| 夜景 | 4 |
| 経県値 | 4 |
| lastfm | 3 |
| markov | 3 |
| web | 3 |
| 御影 | 2 |
| 明石 | 2 |
| 尼崎 | 2 |
| カメラ | 2 |
| ai | 2 |
| ui | 2 |
| せちまなと打って性格がわかるらしい | 1 |
| しなちくシステム無料ガチャ | 1 |
| 加古川 | 1 |
| 回線 | 1 |
| 眼鏡っ娘を見るとストレスが減るらしい | 1 |
| 気動車 | 1 |
| このタグをみた人は好きな天ぷらを答える | 1 |
| 阪神 | 1 |
| 山歩しよう | 1 |
| 児島 | 1 |
| shindanmaker | 1 |
| page42 | 1 |
| notestocklogincode | 1 |
| notestock | 1 |
| 土産 | 1 |
| 飯屋 | 1 |
| last | 1 |
| fediverseプロフ帳 | 1 |
| 無事下山 | 1 |
| ガルクラ | 1 |
| ガジェット | 1 |
| ガルクラタイプ診断 | 1 |
| ガルクラ総集編 | 1 |
| ソンビランドサガ | 1 |
| インターネット | 1 |
| ネットワーク | 1 |
| プロフィール帳 | 1 |
| プロフ帳 | 1 |
| ライフハック | 1 |
参考
投稿日:
ハマったので残しておく。
前提条件
- 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 fetch mastodon - マージブランチにマージする
git merge mastodon/main - セットアップする
sudo su - mastodon # Rubyのアップデート用 cd ~/.rbenv/plugins/ruby-build git pull cd ~/live RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install # 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
If the version you need is missing, try upgrading ruby-build.といわれる場合
以下のコマンドを叩いてruby-buildを更新するといける
cd "$(rbenv root)"/plugins/ruby-build
git pull
投稿日:
なんか昔のやり方が使えなくなってたので調べたメモ。
確認環境
| 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環境が欲しくて作ってみたが昔と変わっていて地味にハマった…。
投稿日:
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で所有権を戻しておく。
文字が詰まって気持ち悪いのを直す
確認環境
Mastodon v4.5.0-alpha.2
内容
手順
app/javascript/styles/mastodon/basics.scssに以下の行を足す。html { &:lang(ja) { text-spacing-trim: space-all; } }資材のビルドを行い、Webを再起動
RAILS_ENV=production bundle exec rails assets:clobber RAILS_ENV=production bundle exec rails assets:precompile
ピン止めの上限を増やす
デフォルトは5つまでしかできないので…。
確認環境
Mastodon v4.5.0-alpha.2
手順
app/validators/status_pin_validator.rbを開くPIN_LIMITを増やすsudo service mastodon-web restartで再起動

