a playbook of PDS migration steps for a manual move
pds-migration-playbook.txt
61 lines 2.5 kB view raw
1* Migration 2** Blank env 3export INVITECODE= 4export ACCOUNTDID=did:plc:XXX 5export OLDPDSHOST=https://bsky.social 6export OLDPDSSERVICEDID=did:web:bsky.social 7export OLDHANDLE= 8export OLDPASSWORD="" 9export NEWPDSHOST=https://pds.merklehost.xyz 10export NEWPDSSERVICEDID=did:web:pds.merklehost.xyz 11export NEWHANDLE= 12export NEWPASSWORD="" 13export NEWEMAIL= 14 15# these come later in the process 16export SERVICEAUTH= 17export PLCTOKEN= 18export ROTATIONKEY= 19 20** Prep 21- [X] create a empty directory to store everything 22- [X] `touch env` and add template from above 23- [X] pdsadmin create-invite-code # for use in account creation (if `inviteCodeRequired`) 24- [X] add INVITECODE to env, save, and source 25- [X] echo $ACCOUNTDID # to make sure new vars have loaded 26- [X] goat account login -u $OLDHANDLE -p $OLDPASSWORD 27- [X] goat account service-auth --lxm com.atproto.server.createAccount --aud $NEWPDSSERVICEDID --duration-sec 3600 | pbcopy 28- [X] add SERVICEAUTH to env, save, and source 29- [X] goat account plc request-token 30- [X] add PLCTOKEN to env, save, and source 31 32** Export/Import 33- [X] goat account status # note count of records/blobs and repoCommit 34- [X] goat repo export $ACCOUNTDID 35- [X] goat blob export $ACCOUNTDID 36- [X] goat bsky prefs export > prefs.json 37- [X] goat account logout 38- [X] goat account create --pds-host $NEWPDSHOST --existing-did $ACCOUNTDID --handle $NEWHANDLE --password $NEWPASSWORD --email $NEWEMAIL --invite-code $INVITECODE --service-auth $SERVICEAUTH 39- [X] goat account login --pds-host $NEWPDSHOST -u $ACCOUNTDID -p $NEWPASSWORD 40- [X] goat repo import ./${ACCOUNTDID}.*.car 41- [X] goat account status 42- [X] fd . ./${ACCOUNTDID}_blobs/ | parallel -j1 goat blob upload {} 43- [X] goat bsky prefs import prefs.json 44- [X] goat account status 45 46** PLC 47- [X] goat account plc recommended > plc_unsigned.json 48- [X] goat crypto generate -t secp256k1 | pbcopy 49- [X] add ROTATIONKEY to env, save, and source 50- [X] goat crypto inspect $ROTATIONKEY 51- [X] (add DID Key to `rotationKeys`, if setting a rotation key) 52- [X] goat account login -u $OLDHANDLE -p $OLDPASSWORD 53- [X] goat account plc sign --token $PLCTOKEN ./plc_unsigned.json > plc_signed.json 54- [X] goat account login --pds-host $NEWPDSHOST -u $ACCOUNTDID -p $NEWPASSWORD 55- [X] goat account plc submit ./plc_signed.json 56 57** Cutover 58- [X] goat account status 59- [X] goat account activate 60- [X] goat account login --pds-host $OLDPDSHOST -u $ACCOUNTDID -p $OLDPASSWORD 61- [X] goat account deactivate