1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

細かすぎて伝わらないMastodonセットアップ時のエラー

Last updated at Posted at 2022-12-07

概要

本記事では、通常の環境なら出遭わないかもしれない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をインストール。

  1. たとえば、https://www.howtoforge.com/how-to-install-mastodon-social-network-on-ubuntu-22-04/

  2. 具体的にはicu_65_swift::ByteSink::GetAppendBufferというC++関数(をマングリングしたsymbol)が見つからないというエラーが出た。

  3. ssコマンドについて → https://atmarkit.itmedia.co.jp/ait/articles/1710/06/news014.html

  4. /etc/systemd/system/mastodon-web.service の Environment="PORT=3000" を弄る。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?