<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Misskey on Arch使いの日記</title>
    <link>https://blog.grainrigi.net/tags/misskey/</link>
    <description>Recent content in Misskey on Arch使いの日記</description>
    <generator>Hugo -- gohugo.io</generator>
    <copyright>Copyright © 2022, grainrigi; all rights reserved.</copyright>
    <lastBuildDate>Tue, 22 Nov 2022 19:47:21 +0900</lastBuildDate><atom:link href="https://blog.grainrigi.net/tags/misskey/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Misskeyを32bit環境(Debian i386)で動かしてみる</title>
      <link>https://blog.grainrigi.net/post/misskey-on-i386/</link>
      <pubDate>Tue, 22 Nov 2022 19:47:21 +0900</pubDate>
      
      <guid>https://blog.grainrigi.net/post/misskey-on-i386/</guid>
      <description>
        
          
            昨今のTwitterに関する騒動の影響で、「ポストTwitter」になりうるプラットフォームが俄に注目を集めているらしい。 その一つがセルフホスト型のプラットフォームのMisskeyであり、Twitterを踏襲したタイムラインをサポートしつつ、 Slackライクなリアクションを投稿につけることが出来たり、UIの高度なカスタマイズが出来たりするなどいくつかのユニークな特徴を有している。 また、ActivityPubによる他インスタンスとの連携に対応しており、 他のMisskeyインスタンスだけでなく、Mastodon等とも連携可能な非中央集権型のプラットフォームとなっている。
MisskeyはNode.jsで書かれているため、本来はLinux x86環境で動かすことはできないのだが、 Node.jsの非公式ビルドを用いる等、様々な工夫をすることで32bit環境でも動かすことが出来た。 今回はその記録として構築手順を書いていこうと思う。
概要 今回用いる環境はDebian 11.5 (bullseye) i386である。(ArchLinuxは公式にはx86_64しか対応していない為。) また、検証に際してはVirtualBox上のVMにて作業を行っている。
Misskeyの構築手順としてDockerを使ったインストールが推奨されているため、今回はこれに従う。
Dockerを使ったMisskey構築 | Misskey Hub
やる必要のあること 32bit環境で動かすにあたって、以下の障壁をクリアする必要がある。
i386用のNode.js Dockerイメージの準備 prebuiltバイナリを用いるパッケージへの対処 @tensorflow/tfjs-nodeを使わないようにする sharpの依存ライブラリの手動ビルド 以下ではこれらの解決方法を解説する。
※ 構築手順のみを知りたい場合、完全な構築手順を参照
i386用のNode.js Dockerイメージの準備 Node.jsは公式でLinux x86をサポートしないため、Docker Hubの公式イメージにもlinux/386版は存在しない。 ただ、Node.jsの非公式ビルドでx86版が存在するため、 x86版Node.jsイメージを作ることは技術的には可能である。
この方法で作られたと思われる非公式のNode.jsイメージがBalena社から提供されているので、 今回はありがたくこれを使わせてもらうことにする。
balenalib/i386-node - Docker Image | Docker Hub
Misskeyの公式で使われている16.15.1-bullseyeもバッチリ存在している。 (ただし、slim版は無い模様)
@tensorflow/tfjs-nodeを使わないようにする Misskeyはオプション機能としてNSFW画像の自動判定機能が存在し、Tensorflowを用いて実装されている。 TensorflowのNode.js用ライブラリである@tensorflow/tfjs-nodeはネイティブのlibtensorflowに依存しているのだが、 このlibtensorflowはx86をサポートしていない。 このため、今回はNSFW機能の利用を諦めて@tensorflow/tfjs-nodeのインストールを回避するようにする。
なお、Misskey自体は既に@tensorflow/tfjs-nodeをoptionalDependenciesに移動しているため、 本来はパッケージのインストール時に--ignore-optionalを指定するのみで済む筈なのだが、 実際のnsfwjsのpeerDependenciesを正しく扱っていないためこのままだと依存関係エラーで起動しなくなってしまう。
nsfwjsのpeerDependenciesに含まれているのは@tensorflow/tfjsであり、 これ自体はlibtensorflowに依存していないため、単純にdependenciesに追加すれば解決する。
sharpの依存ライブラリの手動ビルド sharpはNode.js用の画像処理パッケージで、Misskeyではアップロードされた画像のリサイズ等に用いていると思われる。 このパッケージはネイティブのライブラリであるlibvipsに依存しており、 通常のインストールであればprebuiltバイナリが自動でダウンロード展開されるようになっているのだが、 x86の場合は手動でビルドした上でホスト上に直接インストールする必要がある。 (ビルド手順: Building libvips from source)
なお、Debianのリポジトリにもlibvips42というパッケージが存在するのだが、 こちらはバージョンが古く(これは8.10.5だが、sharpには8.11以降が必要)、 sharpのインストール時に必要なcmake関係のファイルも不足しているため、これを用いることは出来ない。
          
          
        
      </description>
    </item>
    
  </channel>
</rss>
