Misskey系のお一人様サーバーを建てたはいいものの、なんらかの理由でサーバーを閉鎖し、他のサーバーへ引っ越したい場合があります。
その時、サーバー構築後に最初に作成し、使用している管理者アカウントをメインで使っていることが多いかと思いますが、通常はそのままだと引っ越し機能(正式名称: アカウントの移行)を使うことができません(サーバーの管理者であるため)。
これをどうにかする方法をnaskyaさんに教わって実行、そして成功したのでおおまかに方法をここに書き残しておきます。
なお、Misskey系とは書きましたが、Firefish(旧Calckey)やその他Misskeyのフォークでも、読み替えていけば同様の作業が可能と思われます(未検証なので断言はしかねます)。
引っ越し機能に関するファイルを編集する
では実際の手順です。 まずはSSH接続するかコンソールを開くなどして、Misskeyを実行しているユーザーに切り替えます。
sudo su misskey
続いて、引っ越し機能に関するファイル(パス: misskey/packages/backend/src/server/api/endpoints/i/move.ts
)をテキストエディター(nanoとかviとか……)で開きます(参考)。
nano misskey/packages/backend/src/server/api/endpoints/i/move.ts
91行目あたりの
if (me.isRoot) throw new ApiError(meta.errors.rootForbidden);
を探します。 そして行頭に//を書き加えてコメントアウトし、保存します。
// if (me.isRoot) throw new ApiError(meta.errors.rootForbidden);
↑こんな感じです。
▼Firefishの場合(クリック/タップで展開)
まず、Misskeyと同じくFirefishの実行ユーザーに切り替えた上で、move.tsというファイルをテキストエディターで開きます。
nano firefish/packages/backend/src/server/api/endpoints/i/move.ts
かみまさんによればコード内容がMisskeyと若干異なるとのことなので、95行目付近の
if (user.isAdmin) throw new ApiError(meta.errors.adminForbidden);
とある箇所を、
// if (user.isAdmin) throw new ApiError(meta.errors.adinForbidden);
のように行頭に//を書き加えてコメントアウトし、保存すればこの作業はOKのはずです。
続いて、Misskeyのインストールディレクトリへcdコマンドを使って移動します。 自分の場合であれば/home/misskey/misskeyにインストールしていたので、
cd /home/misskey/misskey
です。
移動したら、以下のコマンドを入力し、ビルド作業を行います。
NODE_ENV=production pnpm run build
ビルド作業が終わったら、念のためサーバーを再起動し、引っ越し作業をしてみましょう。 おそらく管理者アカウントでも引っ越しができるはずです!
引っ越し……もとい、アカウントの移行の項でも注意書きがされているとおり、引越し後は引越し元のアカウントは使用不可になること、フォローに関してはバックアップしたフォローリストを手動インポートすることで移すこと、引っ越しに非対応のフォロワーは置いてけぼりになること……などは考慮すべき事項でしょう。
バックアップしておくべきものは全て、あらかじめどこかしらに退避させてから実行しましょう。