PDS MOOver Info

Cartoon milk cow
Made by @pds.dad
Buy Me a Coffee at ko-fi.com

This page is to help you decide if you want to use PDS MOOver to move your ATProto(Bluesky) account to a new PDS. TLDR (You should still read the whole thing), at least read and follow the precautions section.

Info

PDS MOOver is a tool to help you migrate to a new PDS. The creator or host of this tool will not be able to help you recover your account if something goes wrong. So be advised you and your PDS admin may be on your own besides helpful answers and understand the risk you take in doing an account movement.

Precautions

Migrations can be a potentially dangerous operation. It is recommended to follow these few steps to protect your account and identity.

  • During migration make sure to do not leave the page
  • It is recommended to use a desktop computer for this process due to the amount of time it can take.
  • Your account is not actually fully moved over to the new PDS till you receive a code in your email and enter it on PDS MOOver, this is the final step.
  • Your data will not be deleted from Bluesky(or your previous PDS) during migration. If you find you are missing any pictures or videos after the move you can use the Missing Blobs tool to recover those from your previous PDS.

At the end of your migration and before you move you will be asked if you'd like to add a rotation key. This is recommended and secures your identity if your PDS ever goes down, allowing for account recovery.

Sign the papers

Why does it ask me to sign in on my PDS? (OAuth)

This version of PDS MOOver never sees the password of your current account. Instead you are sent to your own PDS to sign in, and your PDS asks you to approve exactly the permissions a migration needs. That is the same atproto OAuth flow other apps use, and you can revoke it any time from your PDS's account page (https://your-pds.com/account).

What it asks for, and why:

  • Read your email address so the new-account form can be prefilled.
  • Request a service token for createAccount: this is how the new PDS knows you really control the identity it is creating an account for.
  • Read your Bluesky preferences so they can be copied to the new PDS. Because this is a granular permission, your birth date preference is not visible and is not copied; set it again in the app if you use it.
  • Manage your identity (identity:*): request the emailed PLC token and sign the PLC operation that points your identity at the new PDS. This is the big one and it is what a migration fundamentally is.

Reading your repo and blobs from the old PDS uses public endpoints, so no extra permission is needed for that. The new account still needs a password because it does not exist yet; you pick it in the form and it is only ever sent to the new PDS.

The one thing an OAuth sign-in is not allowed to do is deactivate an account, which is why you have to turn off the old account yourself.

Turning off your old account

After the PLC operation your identity points at the new PDS and the network follows it. Your old PDS still has the account switched on though, and PDS MOOver can not switch it off for you (OAuth sessions are not allowed to). Leaving it on is not dangerous, but apps may show a stale copy of your profile and your old PDS keeps emitting events for it, so tidy up:

  1. Open https://<your old pds>/account (for Bluesky that is bsky.social/account) and sign in with your old handle and your old password.
  2. Choose Deactivate account. Deactivate, not delete: deactivated keeps your data around in case you ever want to move back.

Or from the Bluesky application settings -> account -> Deactivate account

Rotation keys

A rotation key is a key you hold that is allowed to update your did:plc identity. Normally only your PDS holds one. If your PDS disappears or goes rogue, a rotation key of your own lets you point your identity at a new PDS without the old one's cooperation, following the steps in Adversarial ATProto PDS Migration or the atproto account recovery guide. You can add one at the end of a migration, or any time from the Rotation Key page. The private key is shown once; save it somewhere safe.

I'm here for Blacksky, Is there a video guide?

@sharpiepls.com has made an amazing video guide on how to use PDS MOOver to move your bluesky account to blacksky.app. It shows the older password login, but the rest of the flow is the same.

Can I move back to bsky.social?

Yes, if you originally signed up for your account with Bluesky you can now move back to their PDS. You can use this link to move your account back bsky.social migration page.

A couple of things to know. You need the password your old bsky.social account had, if you do not remember it you can reset the password on Bluesky's login page. Your handle and email stay as they originally were before you migrated away from Bluesky. You can change them after the migration is completed on the Bluesky app/website.

I can't log in?/Says my account is deactivated?

When you move to a non Bluesky PDS you have to do an extra step on login.

  1. On the Sign in screen for bsky.app or on the app click the top input titled "Hosting provider" and has a globe icon and says Bluesky Social"
  2. Click the tab labeled custom
  3. In the input for server address you put the same URL you used for the new PDS URL with the https:// like so https://example.com
  4. Click done and enter your new handle(or email) and password

My account says Invalid Handle?

It's a bit of a bug sometimes. I'm not sure what causes it, but usually mentioning your handle in a post or reply fixes it. Like @fullhandle.newpds.com, may or may not highlight it blue and autofill it but make sure you have the full handle and the @ like that. Can also check your handle with the Bluesky Debug Page. If you see green, and it says one of them pass you should be fine and just may take a while to update.

!!!!!HELP!!!!!

If you're having issues with PDS MOOver first of all, I'm very sorry. I have tested this to the best of my ability, but PDS migrations do come with risks. I would recommend getting with the owner of the PDS and seeing where the account stands with tools like pdsls.

The tool is designed to be able to be re ran IF you set the Advance Options flags. For example, lets say if it created the account, repo is there but some blobs are missing. You can uncheck everything but "Migrate Missing Blobs", "Migrate Prefs", and "Migrate PLC record" and it will pick up after the account repo migration. If you don't ever see the "Please enter your PLC Token" and enter the token sent to your email, you can just forget about it and call it a day if it's too much. Your old account is still active and working.

Why doesn't PDS MOOver have xyz for migrations?

PDS MOOver was designed to pretty much be the goat account migration with a UI. Like in this post. Keeping it simple and hard fails if anything goes wrong to hopefully cover most use cases.

Alright account migrated, now what?

Welcome to your new PDS! You can login to your new PDS on Bluesky's login screen by selecting "Hosting provider" and entering your PDS url. Turn off your old account, and make sure you have a rotation key that you control in case your PDS disappears overnight so you can regain your account.

Why is it so SLOW?

Everything happens client side, and the blob uploads take a while. Nothing runs in parallel. Blob uploads happen one at a time; once one is done, the next goes. This is done just to keep it as simple as possible and to hopefully limit the chance of failures on uploads. My personal account takes about 20-30ish mins to move with 1,700ish blobs at 800mb on a 1gig internet connection.

Can I check out the code anywhere?

Yep! PDS MOOver is 100% open source and can find the code on tangled.org.