Raspberry Piのターミナルで動かしたhtopの画面。Misskey、Redis、nginx、PostgreSQLのプロセスが動いていて、メモリ使用量は1.33G / 3.70G

ConoHa VPS上にあるMisskeyをRaspberry Piに移行する

ちょっとしたつまずきがあったので備忘録として書いておく。

弊環境

移行前:ConoHa VPS 4GB 「まとめトク」12ヶ月プラン(OS:Ubuntu 24.04)
移行後:Raspberry Pi 4 Model B 4GB (OS:DietPi v9.13.2)
インターネット回線:So-net au ひかり(固定グローバルIP)
ドメイン:ConoHa WING 契約特典で取得した2つ目の無料ドメイン「mosslawn.space」
DNS・オブジェクトストレージ:Cloudflare

手順

基本的にはこちらのサイトのとおりにやっていく。

公式ドキュメントはこちら。

私が気をつけたところ、つまずいたところだけ抜粋して書く。

DNS設定を変更する

  • CloudflareのDNSにてタイプ:Aの名前「@」「www」に自宅のグローバルIPアドレスを入力

  • インターネット回線業者からレンタルしているルータのポートマッピング設定で、Raspberry Pi 4のローカルIPアドレスに向けてポート番号「80」「443」を開ける

自宅の回線が固定グローバルIPでない場合はトンネリングツールやダイナミックDNSサービスを使う必要がある。私がCloudflare Tunnelを使おうとやってみたところうまくいかなかったため、固定IPであることを活かして直に入力した。

必要パッケージのセットアップ

nginxのセットアップは、UbuntuとDebian(DietPi)ではやり方が異なるので注意。Debianでのやり方は下のリンクから。

※「If you would like to use mainline nginx packages, ~」に書かれているコマンドは飛ばす。安定版ではないため。

postgresqlのリストア

どういうわけか私の環境ではMisskeyのデータベース名が「misskey」になっていた。リストアしたあとで例のとおり「mk1」に名前を変えておく。

$ sudo -u postgres psql

postgres=# ALTER DATABASE misskey RENAME TO mk1;
postgres=# \q

「database has a collation version mismatch」が出た場合は以下のリンクの対処法を行う。

Misskeyをビルド→起動

Raspberry PiでMisskey v2025.5.0を起動しようとすると次のエラーで止まってしまう。

[ELIFECYCLE] command failed with exit code 129.

Raspberry Piでは無効なモジュールを読み込もうとしているのが原因らしい。

/home/misskey/misskey/packages/backend/src/misc/gen-identicon.ts にある11行目のimport文をコメントアウトする。

/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

/**
 * Identicon generator
 * https://en.wikipedia.org/wiki/Identicon
 */

// import { createCanvas } from '@napi-rs/canvas';
import gen from 'random-seed';

const size = 128; // px
const n = 5; // resolution
const margin = (size / 4);
const colors = [

~~~~

修正が終わったら上書き保存して、ビルド・実行。

$ sudo su - misskey
$ cd misskey
$ NODE_ENV=production pnpm run build
$ pnpm run init
$ NODE_ENV=production pnpm run start

結論

メモリ4GBでクアッドコアCPUのRaspberry Pi 4を持っているのに有効活用しないのはもったいなかったというお話だった。