概要
本記事では、通常の環境なら出遭わないかもしれないMastodonセットアップ(インスタンスを自分のサーバーで立ち上げる)時のエラーを紹介しよう。
ちなみに、いずれも私の個人的Mastodonインスタンス(Mastodon.YOCKOW.jp)をセットアップしている時に出遭ったエラーである。同じようなエラーに遭遇した方の一助となれば幸いなのだ(語尾が安定しない)。
※OSはUbuntu 22.04。セットアップ方法はUbuntu 22.04, Mastodon
で検索して出てくるページ1とかを参照にしたりしなかったり。
⛔️ エラー1: charlock_holmes.soの動的リンクに失敗する
▶︎ 原因: Swiftコンパイラがインストールされていたから
先に原因を言われても意味が分からないかもしれない。まぁ、最後まで聞いてくれたまえ。
ひとまず、rbenvだの何だのをインストールして最後に唱える呪文は
RAILS_ENV=production bundle exec rake mastodon:setup
である。こうすることで、bundlerが良きにはからってセットアップしてくれるはずなのである。
しかし、Mastodonが依存するライブラリの一つであるcharlock_holmesの動的ライブラリのリンクに失敗。
なぜ?
それは/usr/local
下にSwiftのコンパイラ(ツールチェーン)がインストールされていたからなのである。現在のLinux版SwiftはSwift用にコンパイルされたICUが同梱されている。そしてcharlock_holmesはICUを利用している。
なぜか、charlock_holmes.soはMastodonセットアップ時にSwift用ICUを用いてコンパイルされてしまうのである。でも、動的ライブラリ検索時のディレクトリ(ldconfig
で設定されたアレ)にSwift用ICUのディレクトリは含まれていない。結果的に、charlock_holmes.soが使えないとエラーが出るのである2。
✅ 解決策
Swiftを削除すれば解決するけど、我がサーバーではCGIにSwiftを使っているのでそんなことはできない。というわけで、/usr/local
下に最新のICUをインストールして解決したのでした。
⛔️ エラー2: Too Many Redirects
▶︎ 原因: ポートが被った。
そんなこんなで最新のICUをインストールして、立ち上げ。mastodon-web, mastodon-streaming, mastodon-sidekiqのステータスもオールグリーン。
これで自分のサーバのURLにアクセスすれば、あのゾウさんに出逢えるはず。
…と思ったら、リダイレクトが多すぎます
というエラー。なんで?
まさかと思いつつ
sudo ss -lntp
と打ってみると…3。
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.1:3000 0.0.0.0:* users:(("nghttpx",pid=927,fd=5),("nghttpx",pid=920,fd=5))
※他省略
…nghttpx
というHTTP/2リバースプロキシがポート3000
を先に使っていた。Mastodonのプログラムもデフォルトの設定だと3000
を使うことになっている。でも、nghttpx
に先に3000
を取られているため、Mastodonはそのポートを使えない。結果として、https://Mastodon.YOCKOW.jp/ にアクセスすると https://Mastodon.YOCKOW.jp/ にリダイレクトされて…という無限リダイレクトに🥺
✅ 解決策
Mastodonが使うポートを別のポートにしたよ4。
⛔️ エラー3: 画像がアップロードできない
▶︎ 原因: ImageMagickがインストールされていなかった。
いや、まさかね。ImageMagickをインストールしていないとはね。
…setupの段階で警告してよ。
✅ 解決策
言わずもがな。
⛔️ エラー4: アニメーションGIFがアップロードできない
▶︎ 原因: ffmpegがインストールされていなかった。
前述のエラー3を解決して安心していたら…なぜかアニメーションGIFだけアップロードできない…。
何度確認してもImageMagickはインストールされているし、コマンドラインからconvert
を使えば問題なくローカルのアニメーションGIFを他の画像形式に変換することもできる。
一旦、手元のmacOSで立ち上げた開発環境のMastodonで試してみると…、問題なくアニメーションGIFがアップロードできるではないか。そこで、そのログを漁っていたら驚愕の事実が!(大袈裟)
MastodonはアニメーションGIFをMP4に変換して保存する仕様になっているのです。なぜ?
というわけで、ffmpegが無いとMP4への変換ができず、結果アニメーションGIFをアップロードできないという…。
✅ 解決策
ffmpegをインストール。
-
たとえば、https://www.howtoforge.com/how-to-install-mastodon-social-network-on-ubuntu-22-04/ ↩
-
具体的には
icu_65_swift::ByteSink::GetAppendBuffer
というC++関数(をマングリングしたsymbol)が見つからないというエラーが出た。 ↩ -
ss
コマンドについて → https://atmarkit.itmedia.co.jp/ait/articles/1710/06/news014.html ↩ -
/etc/systemd/system/mastodon-web.service の
Environment="PORT=3000"
を弄る。 ↩