Add custom did:plc setup guide

This commit is contained in:
Turtlepaw 2025-07-03 22:26:17 -04:00
parent cb2d5af6ab
commit c480b68f6b
Signed by untrusted user who does not match committer: turtlepaw
GPG key ID: EDB93688ECBE7AB9
6 changed files with 96 additions and 4 deletions

100
README.md
View file

@ -25,11 +25,11 @@ In case of anything significant affecting the PDS, we will do our best to tell y
## How to sign up
1. Get an invite code.
2. Go to [bsky.app](https://bsky.app) and select "Create Account".
2. Go to [bsky.app](https://bsky.app) or [deer.social](https://https://deer.social/) and select "Create Account".
3. Click on "You are creating an account on Bluesky Social", and set a custom provider URL to `https://pds.witchcraft.systems`.
4. Enter your invite code and the rest of the required information.
5. Congratulations! You now have a PDS account. You may want to subscribe to [@announcements.pds.witchcraft.systems](https://deer.social/profile/announcements.pds.witchcraft.systems) to get updates about the PDS.
6. **Recommended!** Set up a custom did:plc key for your account. You can use [boat](https://boat.kelinci.net/) to both generate a key pair (store it somewhere safe!) and to add the public key to your account. This will allow you to point your DID to a different PDS without using our PDS's key.
6. **Recommended!** [Set up a custom did:plc key](#setting-up-a-custom-didplc) for your account. You can use [boat](https://boat.kelinci.net/) to both generate a key pair (store it somewhere safe!) and to add the public key to your account. This will allow you to point your DID to a different PDS without using our PDS's key.
## How to move an existing account to our PDS
@ -37,13 +37,105 @@ In case of anything significant affecting the PDS, we will do our best to tell y
1. Get an invite code.
2. Follow [this guide](https://whtwnd.com/bnewbold.net/entries/Migrating%20PDS%20Account%20with%20%60goat%60) to migrate using the `goat` tool. Otherwise, you can use the [ATP INTERNECTIONAL AIRPORT](https://atpairport.com/) for a more user-friendly experience, but it is currently in alpha and may not work as expected. Keep in mind that those tools are made for did:plc; If you have a did:web - good luck, you figured it out when you created the account, so surely you'll figure it out now too :^)
3. Done!
4. **Recommended if using did:plc!** Set up a custom did:plc key for your account. You can use [boat](https://boat.kelinci.net/) to both generate a key pair (store it somewhere safe!) and to add the public key to your account. This will allow you to point your DID to a different PDS without using our PDS's key.
4. **Recommended if using did:plc!** [Set up a custom did:plc key](#setting-up-a-custom-didplc) for your account. You can use [boat](https://boat.kelinci.net/) to both generate a key pair (store it somewhere safe!) and to add the public key to your account. This will allow you to point your DID to a different PDS without using our PDS's key.
### Setting up a custom did:plc
#### Obtain secret keys
1. Generate [secret keys using boat](https://boat.kelinci.net/crypto-generate)
<details>
<summary>📸 Image</summary>
![Image of using boat.kelinci.net to generate secret keys](/images/secret-keys.png)
</details>
2. Store these keys in a safe location! (and don't share your private keys with anyone!)
#### Add the new keys to your did:plc
1. Open the [PLC applicator](https://boat.kelinci.net/plc-applicator)
2. Enter your handle and login
<details>
<summary>📸 Image</summary>
![Image of logging into boat.kelinci.net's PLC applicator](/images/apply_plc_login.png)
</details>
3. Select "Append an operation"
<details>
<summary>📸 Image</summary>
![Image of selecting "Append an operation" into boat.kelinci.net's PLC applicator](/images/apply_plc_append.png)
</details>
4. Add your new generated public key (did:key) to the top of the `rotationKeys` array (with a following comma)
<details>
<summary>See example payload</summary>
```json
{
"alsoKnownAs": [
"at://placeholder.pds.witchcraft.systems"
],
"rotationKeys": [
"did:key:zQ3shcmcnHahf41czhQHUb4zCLDEaLyHznd1ENHmatUtw6vPn", // your new public key (did:key)
"did:key:zQ3shuT9p9qxyXwJaUPsegQ5GCp7fxyLsjDKS5nybPXSohght" // your old did:key
],
"services": {
"atproto_pds": {
"type": "AtprotoPersonalDataServer",
"endpoint": "https://pds.witchcraft.systems"
}
},
"verificationMethods": {
"atproto": "did:key:zQ3shrEaHqBf3PtN8r3PksRCRNpiB92czfEZWZUt8DcjExLam"
}
}
```
</details>
<details>
<summary>📸 Image</summary>
![Image of payload data in boat.kelinci.net's PLC applicator](/images/apply_plc_payload.png)
</details>
5. Request a verification code and enter it below, then press next.
</details>
<details>
<summary>📸 Image</summary>
![Image of entering a verification code in boat.kelinci.net's PLC applicator](/images/apply_plc_confirmation.png)
</details>
</details>
<details>
<summary>Not receiving the email?</summary>
- Check your junk mail
- Outlook emails don't seem to work, you can try Proton
</details>
6. Your did:plc should be updated, which means you can point your did:plc to a different PDS by yourself while keeping your identity!
## How to leave if we ever go down
We have no plans of shutting down the PDS, but for your benefit, here are the rough steps to migrate your data to another PDS if we ever do:
0. Have custom keys in your did:plc or use a did:web.
0. Have [custom keys in your did:plc](#setting-up-a-custom-didplc) or use a did:web.
1. Grab the files for your DID from the [nightly backups S3 bucket](https://link.storjshare.io/s/jufla747mctifdglkggg2jqhvddq/pds-witchcraft-systems/backups/).
2. Upload the CAR contents and the blobs to your new PDS.
3. Point your DID at the new PDS.

BIN
images/apply_plc_append.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
images/apply_plc_login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
images/secret-keys.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB