Skip to content

Instantly share code, notes, and snippets.

@edavis
Created December 24, 2024 23:02
Show Gist options
  • Save edavis/9744cab891f0a0878618f278502c3ba8 to your computer and use it in GitHub Desktop.
Save edavis/9744cab891f0a0878618f278502c3ba8 to your computer and use it in GitHub Desktop.
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment