May 31, 2023

What happens, when you have to move your Mastodon account to another instance?

They say, it doesn't matter which Mastodon instance you sign up with. You can still communicate with the entire Fediverse and when push comes to shove, you can also always move. Well, push came to shove for me and I had to move. So let's talk about the giant asterisk that belongs after both of those claims.

My (now previous) instance admin announced that home.social will be shutting down mid June, due to moderation efforts and instance wars getting out of hand. Let’s call that an opportunity to finally testdrive instance migration…

The good news is, you can move to a new instance fairly easily, the bad news are, some things will break in the process. It doesn’t work exactly as advertised. So, plan ahead to minimise the damage.

Things that can move and things that can’t

First things first: moving instances is not part of the ActivityPub protocol. In fact, not even the idea of hosting thousands of unrelated users, that might not get along with each other, is part of the concept. As far as the protocol is concerned, profiles are created once and exist forever on a self hosted server with an owned domain. Profile migration is a problem that arose with Mastodon and is really only implemented as an afterthought in the most basic way possible: leaving a forwarding address in the old place.

Once a forwarding address is configured, the profile is locked (won’t accept any new content) and you have the option of automatically migrating followers. This is done by the old instance sending each follower a Move notification, forcing him or her to unsubscribe from the current profile and follow the new profile instead. The process may fail for some followers. Reasons include:

  • The follower’s instance does not support the Move notification (it is not part of the ActivityPub protocol).
  • The follower (’s instance) no longer exists (or is otherwise not reachable).
  • The follower’s profile is locked because it got migrated as well.
  • The Move notification is ignored due to privacy settings.

When Move fails, the follower in question simply stays subscribed to the old profile and you have to resolve matters manually. Be prepared for some followers staying behind and most of them being dead accounts.

Hint

Log out of your new profile while migrating followers. Your new instance does not know that you are migrating. It just gets a lot of follow requests all of a sudden and sends a notification to the client for each of them. The client then, trying to show username and picture, will send a resolve request back to the instance. If you have several hundred followers, this will trigger an API rate limit and a lot of HTTP 500 errors being printed (this looks scary, but is otherwise harmless, albeit irritating).

Importing account settings is a straight forward process, that could partially be automated, but isn’t, as the ActivityPub protocol has no concept of accounts or settings, so everything has to be copied manually. This is the part that takes most of the time.

The thing that does not move is your content. It simply can’t. For two reasons:

  1. Every post has a unique ID that encodes the URL where it can be found and which is referenced in every reply to it. The ID can never change without breaking conversations.
  2. All posts are cryptographically signed to prove authenticity. The private key is never exported.

In other words, posts are inherently locked to the original profile on the original domain. There is no way of moving them. The archive, that can be downloaded from Mastodon is completely useless for the purpose of migrating to another instance. Your timeline starts fresh on the new instance.

Lessons learned

Moving between instances is a lossy, time consuming, but unavoidable process in the life of a Mastodon user. That’s ok though, if your main interest is just following people. For creators, however, there are a few extra things to consider:

  • Pay attention to how your instance is funded and how engaged its owner is.
  • Check if the admin team is qualified to run a server. A history of downtimes is a red flag.
  • Check the server rules and the moderation team. Elon Musk drove a lot of people off Twitter who subscribe to ideologies, not rooted in reality, and are eager to enforce their personal brand of freedom of speech.
  • There is no shortage of creationist level dimwits who will report you for disagreeing with them. There are also moderators who make it their mission to protect “vulnerable people” (be wary of people who want to police based on abstract terms). The two together form a dangerous mixture. If you happen to collect two strikes (you can’t appeal), don’t wait for the third one.
  • Check the local community, the instance caters to. Some might operate in a legally grey area that could get the instance seized by law enforcement.
  • Valuable content does not belong on Mastodon and Mastodon is not fit for being at the centre of your online presence (unless you self host).
  • Live in the moment. Do not rely on your old posts. There’s an account setting to configure an expiry date for posts. No matter what you set it to, assume it to be 6 months.
  • Don’t cherish old discussion threads. They break after a while when people start to abandon their accounts.
  • Don’t embed posts in your blog. They are not stable. Fedimeister has a render to image feature, use that instead with a good old fashioned link in the caption.
  • Sign up on multiple instances with the same username and leave those accounts dormant. If you have to migrate on short notice, this will save you some pains. More importantly, you stay recognisable, by sticking to the same handle.

The most important thing, however, to keep in mind about migration, is that nothing works without the cooperation of the old instance. If it shuts down, your account is banned or your admin doesn’t want to let you go, then you can’t move and have to start fresh. So best piece of advice: be ready to jump ship at any time; jump early.