Creatodonで利用しているOSのバージョンを上げた話

はじめに

これは僕が運営・管理しているCreatodonというMastodonのサーバーでOSのアップデート対応をした時の備忘録になります。

普段通りにMastodonの最新のソースコードに追従したところ、ローカル環境でテストが落ちておりその余波で本番環境のOSをアップデートまでやった話になります。

背景

僕が管理しているCreatodonでは数日おきにMastodonの最新のソースコードに追従しています。 これは開発版を使うことでMasotodon本体の問題などを検知しやすくする意味合いと、単に僕が最新機能を使いたいというところからこういった対応をしています。

で、直近で入った以下のAVIF形式の画像を投稿できるようにした修正の影響でローカル環境でテストが落ちるという状況が発生していました。

github.com

修正自体は、Web UIなどからAVIF形式の画像を受け取り、それをサーバー側でPNG形式に変換するというもの。

テストが落ちていたのはこの変換部分の処理で呼び出されているImageMagickでAVIF形式の画像をサポートできていなかったためでした。

そこでImageMagickでのAVIF形式のサポートを調査し、対応を進めていた感じです。

またローカル環境としては

  • Ubuntu 20.04 LTS(WSL)
  • Ruby 3.3.0-dev
  • Node.js v20

を利用している状況でした。

また本番環境もローカルと同じものを利用している状況です。

ImageMagickでのAVIFサポートについて

現状ではImageMagick 7 と 6系列の一部ではAVIF形式の画像をサポートしているようです。

kmy.blueの鯖缶さんが書かれた以下の記事などでもわかるようにAVIF形式の画像をサポートできるのはImageMagick 7系列からのようです。

note.com

ただ上の記事中に言及されているように、Masotodon公式ではImageMagick 6系列を利用しており、CI上でもテストが落ちていませんでした。

そこで追加の調査を進めたところ、CI上などで利用されているUbuntu 22.04 LTSでインストールできるImageMagick 6は20.04のものとバージョンが異なっており、かつAVIF形式の画像をサポートしているということが分かりました。

そのため、Ubuntu 20.04を利用しているサーバーでAVIFへの対応する場合の方針としては

のどちらかになりそうでした。

最終的な対応について

結論から言うとCreatodonではUbuntu 22.04へとOSを上げる方向で対応しています。

というのも該当のバージョンでImageMagickをビルドしようとしたところlibheifなどの関連ライブラリがaptで取ってこれなかったんですよね。 なのでlibheifをソースコードからビルドしようとしたところ、さらにその依存先のライブラリがそのまますんなりビルドできなさそうな感じにもなっていたという......。

またいずれにしてもOSのアップデート対応をする必要は出てくるので、今回はOSを上げる方向で対応した感じです。

今後

一旦Ubuntu 22.04にあげる方向で対応できましたが、すべてのサーバーでそれをやるのは厳しいよなぁと思ってます。 なので、また別途ImageMagickをビルドする方向で対応できないか調査してみたいと思ってます。