* Migration ** Blank env export INVITECODE= export ACCOUNTDID=did:plc:XXX export OLDPDSHOST=https://bsky.social export OLDPDSSERVICEDID=did:web:bsky.social export OLDHANDLE= export OLDPASSWORD="" export NEWPDSHOST=https://pds.merklehost.xyz export NEWPDSSERVICEDID=did:web:pds.merklehost.xyz export NEWHANDLE= export NEWPASSWORD="" export NEWEMAIL= # these come later in the process export 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