Something went wrong. Try again.
a playbook of PDS migration steps for a manual move
Something went wrong. Try again.
2.5 kB · 61 lines · Created 1y ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061* Migration** Blank envexport INVITECODE=export ACCOUNTDID=did:plc:XXXexport OLDPDSHOST=https://bsky.socialexport OLDPDSSERVICEDID=did:web:bsky.socialexport OLDHANDLE=export OLDPASSWORD=""export NEWPDSHOST=https://pds.merklehost.xyzexport NEWPDSSERVICEDID=did:web:pds.merklehost.xyzexport NEWHANDLE=export NEWPASSWORD=""export NEWEMAIL=
# these come later in the processexport SERVICEAUTH=export PLCTOKEN=export ROTATIONKEY=
** Prep- [X] create a empty directory to store everything- [X] `touch env` and add template from above- [X] pdsadmin create-invite-code # for use in account creation (if `inviteCodeRequired`)- [X] add INVITECODE to env, save, and source- [X] echo $ACCOUNTDID # to make sure new vars have loaded- [X] goat account login -u $OLDHANDLE -p $OLDPASSWORD- [X] goat account service-auth --lxm com.atproto.server.createAccount --aud $NEWPDSSERVICEDID --duration-sec 3600 | pbcopy- [X] add SERVICEAUTH to env, save, and source- [X] goat account plc request-token- [X] add PLCTOKEN to env, save, and source
** Export/Import- [X] goat account status # note count of records/blobs and repoCommit- [X] goat repo export $ACCOUNTDID- [X] goat blob export $ACCOUNTDID- [X] goat bsky prefs export > prefs.json- [X] goat account logout- [X] goat account create --pds-host $NEWPDSHOST --existing-did $ACCOUNTDID --handle $NEWHANDLE --password $NEWPASSWORD --email $NEWEMAIL --invite-code $INVITECODE --service-auth $SERVICEAUTH- [X] goat account login --pds-host $NEWPDSHOST -u $ACCOUNTDID -p $NEWPASSWORD- [X] goat repo import ./${ACCOUNTDID}.*.car- [X] goat account status- [X] fd . ./${ACCOUNTDID}_blobs/ | parallel -j1 goat blob upload {}- [X] goat bsky prefs import prefs.json- [X] goat account status
** PLC- [X] goat account plc recommended > plc_unsigned.json- [X] goat crypto generate -t secp256k1 | pbcopy- [X] add ROTATIONKEY to env, save, and source- [X] goat crypto inspect $ROTATIONKEY- [X] (add DID Key to `rotationKeys`, if setting a rotation key)- [X] goat account login -u $OLDHANDLE -p $OLDPASSWORD- [X] goat account plc sign --token $PLCTOKEN ./plc_unsigned.json > plc_signed.json- [X] goat account login --pds-host $NEWPDSHOST -u $ACCOUNTDID -p $NEWPASSWORD- [X] goat account plc submit ./plc_signed.json
** Cutover- [X] goat account status- [X] goat account activate- [X] goat account login --pds-host $OLDPDSHOST -u $ACCOUNTDID -p $OLDPASSWORD- [X] goat account deactivate