この記事はFirefishアドベントカレンダーの20日目の記事です。
みなさん、Firefishサーバーは持っていますか?持っていますよね?
…はい、FreeBSDとMisskeyのはなしからのコピペです。以下略。
さて、FirefishはMisskeyのフォークですから、基本的にはMisskeyでもFirefishでも動かすのに必要なものはさほど変わりません。しかし、FirefishはMisskey v12のフォークなので、v13以降にMisskey側に加えられた変更は取り入れられていないものも少なからずあります。これにより、少しだけ、本当に少しだけですが、Misskeyを動かす際と異なる点が存在します。この記事ではそんな話を…しようと思ったのですが、それだけではあまりに短かくなってしまったため余談マシマシでお送りします。
そのまえに小話
わたしが主催したしょぼねこアドベントカレンダーにて、Firefish on NetBSDに成功したという記事が上がりました。正直無理だと思ってた。FirefishがいけるのならMisskeyもいけると思います。夢が膨らむ。
TL;DR
Misskey同様、npm-nodeをインストールしておくこと
Misskey同様、vipsをインストールしておくこと
Firefishのルートディレクトリで
sed -i '' -e '/cypress/d' package.json packages/client/package.json sed -i '' -e 's%swc/core".*$%&"@swc/core-freebsd-x64":"1.3.11",%' packages/*/package.json
を実行すること
おわりです。後はFirefishのREADME.mdに従えば問題なくインストールすることができます。
ファイアウォールなどの設定についてはFreeBSDとMisskeyのはなしをご覧ください。
そのsedはなに
Firefishには、Misskey v12の名残とも言える部分がところどころに存在しています。
そのなかでも、FreeBSDで動かす上で最も大きいのが依存関係です。
具体的に言うと、Firefishの依存にはMisskeyと比較したとき、Cypressが存在し(MisskeyもCypressに依存していますが、NODE_ENV=production
により無視されます。Firefishでは依存関係のインストール時にNODE_ENV=production
をする指示はなく、またたしかにNODE_ENV=production
では必要な依存の一部がインストールされなかった記憶があります)、FreeBSD用のswcバイナリが存在しません。
CypressはFreeBSDをサポートしておらずこのままでは動かないため、依存関係から除外する必要があります。Cypressはただの開発用の依存であってランタイム依存ではないため、除外しても問題はありません。
swcに関しては「FreeBSDとMisskeyのはなし」で述べた通りです。
この二点を処理するのがあのsedコマンドというわけです。
-i ''
ってなに
FreeBSDのユーザランドは、Linuxで一般的に使用されるGNUのものと仕様が異なることがあります(GNUのものが*BSDと異なる、という表現の方がおそらく正確)。
sedもその一つで、GNU sedでは-i
の引数は省略可能ですが、FreeBSD sedではそうではありません。-i
は「与えられた引数を末尾に付けたファイル名でバックアップを取り、ファイルを直接編集する」というオプションですので、引数に空文字を与えることでバックアップを作成せずファイルを直接編集できるわけです。
余談
はい。MisskeyとFirefishの違いはこれだけです。書くことがなくなってしまったので、ちょっと違う話を。
私はこの一年で、Misskey(mi.syobon.net)→Firefish(ff.syobon.net)→Pleroma(syo.bar)と二度の引っ越しをしました。
というわけで、そのあたりの話を。
わたしがFirefishに引っ越したわけ
- ちょうどN100機を購入したため、マシンの移行のついでに違うソフトウェアを試してみたかったこと
- 一度フォローの整理をしたかったこと
- Misskeyの「統計機能の削除」というアップデートが個人的にあまり喜ばしいことではなく、移住を検討していたこと
- 移行先候補として他に挙げていたAkkomaに対する「やや不安定である」という評価を耳にしたこと
- 当時はPleromaがまだカスタム絵文字リアクションに非対応だったこと
- バックエンドのRustへの置き換えが進んでおり、おもしろそうだったこと
- ちょうどCalckeyから名称が変更され、Firefish v1.0が出るタイミングだったこと
などが主な理由です。
結果としてはかなり満足のいく移行でした。当時のMisskeyとの大きな違いは「Misskey Playがない」「ロール機能がない」ことでしたが、おひとりさまだったためどちらもほぼ影響はありませんでした。強いていえば「レートリミットの解除手段が(UIに)無い」あたりが移行後にやや不便でした。
わたしがFirefishをやめたわけ
- おひとりさまではないサーバーを建ててみたかったこと
- サーバーの使いわけはしない、というかできない人間なので、新しくサーバーを建てるなら古いものは閉鎖したかったこと
- 複数人がログインすることを考えると、FirefishよりもPleromaの方が軽量そうであったこと
- ちょうどPleromaがv2.6.0にて投稿の引用とカスタム絵文字リアクションに対応するタイミングだったこと
などが主な理由です。ようするにMisskeyをやめたときとほぼ一緒です。なんならMisskeyサーバーを建てたときも「ちょうどMisskey v13が出るから」だったのでほぼ同じ。
こちらも概ね満足のいく移行でしたが、フォーク関係であるMisskeyとFirefishとは違い全くの別物であるため、使い勝手の違いに困惑する場面は多少ありました。特にPleromaにはジョブキューを閲覧する手段がないのがかなり大きいです。保守・管理のしやすさという点ではPleromaに軍配が上がりますが、監視・運営の点ではFirefishの方が優れていると感じます。
Firefishのいいところ
開発方針が一貫している、という点だと思います。Misskeyには、今でもsyuiloさんによる新技術のテストの場としての一面があり、破壊的変更や方針の転換がたびたび発生します(決して悪いこととは思いませんが)。その点ではFirefishの方がより安定しており、運営者としてはより安心して運営ができるのではないかと思っています。一方でMisskeyのような「アップデートでこんな機能が増えた!すごい!」みたいな感動は少ないでしょう。かなり大胆に例えるのなら、MisskeyがFedoraでFirefishがDebian、みたいな感じでしょうか。好みはかなり分かれるところだと思います。
FreeBSDユーザーから見たFirefish
前述の理由から、MisskeyにはいつFreeBSD非対応の依存が増えるかわかりません。slaccのときも、私が関与しなかった場合今でもFreeBSDに対応していなかった可能性だってあります。その点でFirefishは比較的信頼できると言ってよいと思っています。この記事も、Firefishの主要開発者の一人であるなすきゃさんに「BSDと絡めた記事を」というような内容のリクエストを受けて書いたものですので、開発側の理解も少なからず得られている感覚があります(ちなみにMisskeyの場合は硫酸鶏さんがある程度そのあたりの対応をされている印象があります)。
現状ではまだMisskeyの方が手間なく動かすことができますが、今後を考えるならFirefish、といったところでしょうか。
いや、そもそもFreeBSDでFediverseノードを建てようとする人間はほぼいないのでどうでもよい話なのですが…。
おわり
「手順はMisskeyとほぼ一緒だから書くことないよどうしよう」と言っていたら登録日の前日になっていました。結果ちょっと変な記事になってしまいましたがまあ良いこととします。
では、Firefishユーザーの皆様、よいお年を。