I recently migrated my single user Fediverse server from Misskey to Firefish. During the migration I encountered an issue that I did not find documented elsewhere. I thought I’d write down the solution I found, in case anyone would benefit from it and save some time in the future.

I decided to migrate to a new domain at the same time, so the easiest way was just to create a new server and migrate my account and not fuss about migrating the Misskey instance itself.

Being a single user instance, my account was also the "root" account of Misskey. Misskey does not allow migrating the root account, if trying to do so, you will just get an error along the lines of "root cannot migrate".

Solution

I took to the database to find out what I can do bypassing the UI, and lo and behold, I found an isRoot column in the user table. I didn’t want to end up without a root account on my old instance however, so I went to the Misskey control panel and created a new account, simply called "root".

Misskey seems to save all of it’s known users to the user table, not only the actual local accounts. To find the local accounts only, you can use the following query

misskey=# SELECT id, username, "isRoot" from "user" WHERE host IS NULL;
     id     |  username   | isRoot 
------------+-------------+--------
 98wzsyrur6 | relay.actor | f
 9n1njqolcd | root        | f
 9n342nasd3 | marko       | t

Now you can simply make your new root account’s isRoot column true and your actual user account false. After that, the migration will work.

misskey=# BEGIN;
UPDATE "user" SET "isRoot" = true WHERE id = '9n1njqolcd';
UPDATE "user" SET "isRoot" = false WHERE id = '9n342nasd3';
COMMIT;

You should probably check that you only modified 2 rows before committing the transaction.

I would imagine that this solution should work for the numerous Misskey forks around, but I have not tested it so your results may vary.

If you found this post useful, make sure to share, tweet, toot, bleep and bloop this on your social media service of choice. If you have any issues with this process, you can leave a comment below and I will try to help you out.