+1
-1
.github/workflows/build-and-push-ghcr.yaml
+1
-1
.github/workflows/build-and-push-ghcr.yaml
-2
ACCOUNT_MIGRATION.md
-2
ACCOUNT_MIGRATION.md
···
1
1
# Account Migration
2
2
3
-
**Update May 2025:** An updated guide to account migration is now [part of the atproto specifications](https://atproto.com/guides/account-migration). There is also [a blog post available](https://whtwnd.com/bnewbold.net/3l5ii332pf32u) which describes how to do an account migration using a command-line tool (`goat`).
4
-
5
3
### ⚠️ Warning ⚠️ ️
6
4
Account migration is a potentially destructive operation. Part of the operation involves signing away your old PDS's ability to make updates to your DID. If something goes wrong, you could be permanently locked out of your account, and Bluesky will not be able to help you recover it.
7
5
-8
README.md
-8
README.md
···
228
228
229
229
_Note: Your PDS will need to be restarted with those variables. This varies depending on your setup. If you followed this installation guide, run `systemctl restart pds`. You might need to restart the server or recreate the container, depending on what you are using._
230
230
231
-
#### Common SMTP issues
232
-
233
-
If you find that your test messages using cURL or other sources go out correctly, but you are not receiving emails from your PDS, you may need to URL encode your username and password on `/pds/pds.env` and restart the PDS service.
234
-
235
-
If the username and/or password contain special characters, the special characters will need to be [percent encoded](https://en.wikipedia.org/wiki/Percent-encoding). For some email services, the username will contain an extra `@` symbol that will also need to be percent encoded. For example, the URL `user&name@oci:p@ssword@smtphost:465` after percent encoding for the username and password fields would become `user%26name%40oci:p%40ssword@smtphost:465`.
236
-
237
-
If you are migrating an account, Bluesky's UI will ask you to confirm your email address. The confirmation code email is meant to come from your PDS. If you are encountering issues with SMTP and want to confirm the address before solving it, you can find the confirmation code on the `email_token` table on `accounts.sqlite`.
238
-
239
231
### Logging
240
232
241
233
By default, logs from the PDS are printed to `stdout` and end up in Docker's log. You can browse them by running:
+7
-1
installer.sh
+7
-1
installer.sh
···
31
31
openssl
32
32
sqlite3
33
33
xxd
34
-
jq
35
34
"
36
35
# Docker packages.
37
36
REQUIRED_DOCKER_PACKAGES="
···
215
214
fi
216
215
217
216
# Admin email
217
+
if [[ -z "${PDS_ADMIN_EMAIL}" ]]; then
218
+
read -p "Enter an admin email address (e.g. you@example.com): " PDS_ADMIN_EMAIL
219
+
fi
220
+
if [[ -z "${PDS_ADMIN_EMAIL}" ]]; then
221
+
usage "No admin email specified"
222
+
fi
223
+
218
224
if [[ -z "${PDS_ADMIN_EMAIL}" ]]; then
219
225
read -p "Enter an admin email address (e.g. you@example.com): " PDS_ADMIN_EMAIL
220
226
fi
+1
-1
service/package.json
+1
-1
service/package.json
+57
-51
service/pnpm-lock.yaml
+57
-51
service/pnpm-lock.yaml
···
6
6
7
7
dependencies:
8
8
'@atproto/pds':
9
-
specifier: 0.4.158
10
-
version: 0.4.158
9
+
specifier: 0.4.166
10
+
version: 0.4.166
11
11
12
12
packages:
13
13
···
42
42
resolution: {integrity: sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA==}
43
43
dev: false
44
44
45
-
/@atproto-labs/xrpc-utils@0.0.16:
46
-
resolution: {integrity: sha512-WvTQhGjIhFrd/0pMGecE7Xn8BtvvKAgVlNs8UaE6CVRifiCOIvIBwlx1vnslJAavK3FtwL1kKkUdxNtxHciZSQ==}
45
+
/@atproto-labs/xrpc-utils@0.0.18:
46
+
resolution: {integrity: sha512-Cwrlx2JcLe0jxCK8b3GCT3HRGaH3yPhyyt+3n4JykJapCaGBKqa6FHGs9hK2Fx6lOyPF7TnV5qUPUsJ1qGEUVA==}
47
47
dependencies:
48
-
'@atproto/xrpc': 0.7.0
49
-
'@atproto/xrpc-server': 0.8.0
48
+
'@atproto/xrpc': 0.7.1
49
+
'@atproto/xrpc-server': 0.9.1
50
50
transitivePeerDependencies:
51
51
- bufferutil
52
52
- supports-color
53
53
- utf-8-validate
54
54
dev: false
55
55
56
-
/@atproto/api@0.15.23:
57
-
resolution: {integrity: sha512-qrXMPDs8xUugQyNxU5jm5xlhfx60SzOIzmHkZkI7ExYQFjX6juCabR9t8LofIUSiZKRY1PcU4QUFyhQIsjFuVg==}
56
+
/@atproto/api@0.16.2:
57
+
resolution: {integrity: sha512-sSTg31J8ws8DNaoiizp+/uJideRxRaJsq+Nyl8rnSxGw0w3oCvoeRU19iRWh2t0jZEmiRJAGkveGu23NKmPYEQ==}
58
58
dependencies:
59
59
'@atproto/common-web': 0.4.2
60
-
'@atproto/lexicon': 0.4.11
60
+
'@atproto/lexicon': 0.4.12
61
61
'@atproto/syntax': 0.4.0
62
-
'@atproto/xrpc': 0.7.0
62
+
'@atproto/xrpc': 0.7.1
63
63
await-lock: 2.2.2
64
64
multiformats: 9.9.0
65
65
tlds: 1.250.0
66
66
zod: 3.23.8
67
67
dev: false
68
68
69
-
/@atproto/aws@0.2.24:
70
-
resolution: {integrity: sha512-4XZQGitPJR56tFt1bzPJKOqp3vTVcfVsEAFo9FGWp7Es+jj742aVgfWEe64O0VoZp3ZTiD7XhwsLJArz7NJTlQ==}
69
+
/@atproto/aws@0.2.25:
70
+
resolution: {integrity: sha512-LT4uuda2mjXz2WT4xo7g2aWmWKl+JWusGzscqQpOlD/RFGFXKDmUcVWLVPKY+9Pys2F7X6tyDlm2aUx+/dYdYA==}
71
71
engines: {node: '>=18.7.0'}
72
72
dependencies:
73
73
'@atproto/common': 0.4.11
74
74
'@atproto/crypto': 0.4.4
75
-
'@atproto/repo': 0.8.4
75
+
'@atproto/repo': 0.8.5
76
76
'@aws-sdk/client-cloudfront': 3.515.0
77
77
'@aws-sdk/client-kms': 3.515.0
78
78
'@aws-sdk/client-s3': 3.515.0
···
162
162
zod: 3.23.8
163
163
dev: false
164
164
165
-
/@atproto/lexicon@0.4.11:
166
-
resolution: {integrity: sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==}
165
+
/@atproto/lexicon@0.4.12:
166
+
resolution: {integrity: sha512-fcEvEQ1GpQYF5igZ4IZjPWEoWVpsEF22L9RexxLS3ptfySXLflEyH384e7HITzO/73McDeaJx3lqHIuqn9ulnw==}
167
167
dependencies:
168
168
'@atproto/common-web': 0.4.2
169
169
'@atproto/syntax': 0.4.0
···
172
172
zod: 3.23.8
173
173
dev: false
174
174
175
-
/@atproto/oauth-provider-api@0.1.6:
176
-
resolution: {integrity: sha512-4Q6ZCnTmmdiWiA+KMrfbZmqjxTSgMe+YE68+3RccwOCIgPt171TiDHGKIayep9n1RDnuucVQoqvVXOT4kmAsjw==}
175
+
/@atproto/oauth-provider-api@0.2.0:
176
+
resolution: {integrity: sha512-u18VRCDuz5BloUQKbvTISjQk7CgpDI1hf3leoJ7ADOAo8oW71QZD0tsWDX81R2uB66mKZHptjGSSVxxqpZFipQ==}
177
177
dependencies:
178
178
'@atproto/jwk': 0.4.0
179
179
'@atproto/oauth-types': 0.4.0
180
180
dev: false
181
181
182
-
/@atproto/oauth-provider-frontend@0.1.10:
183
-
resolution: {integrity: sha512-bOFpi5OIxWv4Q9ci1+PAXEzIZaiu5inepC7pRFYqgqgLoCO0MWH/5Qkn/f6jMpDwPdtBqAiPg9tjE7E3le6NJA==}
182
+
/@atproto/oauth-provider-frontend@0.1.11:
183
+
resolution: {integrity: sha512-MvPUI+vh8a8UWmpAV8VS2qrdJ/B6l75qDQX1z6vF1YkPR1d9SLEdOYx/O26g5ZyuN+Mk00OBdOSfjvON/UOxQA==}
184
184
engines: {node: '>=18.7.0'}
185
185
optionalDependencies:
186
-
'@atproto/oauth-provider-api': 0.1.6
186
+
'@atproto/oauth-provider-api': 0.2.0
187
187
dev: false
188
188
189
-
/@atproto/oauth-provider-ui@0.1.11:
190
-
resolution: {integrity: sha512-9fflyDt4Y3RDJIfbonxVeMbQtLLQrkQSDhWhPXp9xbZ/uYBddaAw+svBfFoMY7dxdlJbQeUPobsUctEm3qAILg==}
189
+
/@atproto/oauth-provider-ui@0.2.0:
190
+
resolution: {integrity: sha512-v4rzz3C8i2NBqxycWWDTeosHtv6B9+EW4ZCq9Il6thmHdtT2CmB07R5Ia7zQ1n7lylxI6mC9JqA9CLis0uLz+Q==}
191
191
engines: {node: '>=18.7.0'}
192
192
optionalDependencies:
193
-
'@atproto/oauth-provider-api': 0.1.6
193
+
'@atproto/oauth-provider-api': 0.2.0
194
194
dev: false
195
195
196
-
/@atproto/oauth-provider@0.9.3:
197
-
resolution: {integrity: sha512-TAhsCYDB/1twEA1vqjLAz7lxKI8W59eNs239MujE35Cc9l4lRHyMopoFv5JmgNnxDvloB5l6RxpTbXVC6wnKpQ==}
196
+
/@atproto/oauth-provider@0.10.0:
197
+
resolution: {integrity: sha512-WbDaMC/9Zd4oslA4pPvf7ozum0YAQRxNspYpEauXtJ/bjVxqViKgV158jnPhDbYfo62NkxSuSaUkTV116U/VBg==}
198
198
engines: {node: '>=18.7.0'}
199
199
dependencies:
200
200
'@atproto-labs/fetch': 0.2.3
···
206
206
'@atproto/did': 0.1.5
207
207
'@atproto/jwk': 0.4.0
208
208
'@atproto/jwk-jose': 0.1.9
209
-
'@atproto/oauth-provider-api': 0.1.6
210
-
'@atproto/oauth-provider-frontend': 0.1.10
211
-
'@atproto/oauth-provider-ui': 0.1.11
209
+
'@atproto/oauth-provider-api': 0.2.0
210
+
'@atproto/oauth-provider-frontend': 0.1.11
211
+
'@atproto/oauth-provider-ui': 0.2.0
212
+
'@atproto/oauth-scopes': 0.0.1
212
213
'@atproto/oauth-types': 0.4.0
213
214
'@atproto/syntax': 0.4.0
214
215
'@hapi/accept': 6.0.3
215
216
'@hapi/address': 5.1.1
216
217
'@hapi/bourne': 3.0.0
217
218
'@hapi/content': 6.0.0
218
-
cookie: 0.6.0
219
+
cookie: 0.7.2
219
220
disposable-email-domains-js: 1.5.0
220
221
forwarded: 0.2.0
221
222
http-errors: 2.0.0
···
226
227
- supports-color
227
228
dev: false
228
229
230
+
/@atproto/oauth-scopes@0.0.1:
231
+
resolution: {integrity: sha512-9IGgwM0KrWUwRTg02o4GKZaoKJLOkFwtkq2i39pYQxqJm18jvEvadxW/sR1A5f9f2vbTZtECgIziU5hdd01U5Q==}
232
+
dev: false
233
+
229
234
/@atproto/oauth-types@0.4.0:
230
235
resolution: {integrity: sha512-FrRH9JsPw9H4JxfPDrbrI+pB102tbHTygajfHay7xwz78HPOjSbWPRgWW2hYS4w8vDYdB3PYbBj1jPoKetW7LA==}
231
236
dependencies:
···
233
238
zod: 3.23.8
234
239
dev: false
235
240
236
-
/@atproto/pds@0.4.158:
237
-
resolution: {integrity: sha512-xSnYmyXNavS5QiXJprdgma2HVc9mRjFDdNeIkLg9jLU9K7uGhGnlIHje1eTXY4xutER/Cn8mmR8JDKcbR614lQ==}
241
+
/@atproto/pds@0.4.166:
242
+
resolution: {integrity: sha512-LwLiLQNOZsZ4LgD4qmtWf3W5FJEaTA3Bi3Y1x79TXrBfcvcmIoNYBUE0WOLmDFfLyp44caODqS6HCLvqc11T7g==}
238
243
engines: {node: '>=18.7.0'}
239
244
dependencies:
240
245
'@atproto-labs/fetch-node': 0.1.9
241
-
'@atproto-labs/xrpc-utils': 0.0.16
242
-
'@atproto/api': 0.15.23
243
-
'@atproto/aws': 0.2.24
246
+
'@atproto-labs/xrpc-utils': 0.0.18
247
+
'@atproto/api': 0.16.2
248
+
'@atproto/aws': 0.2.25
244
249
'@atproto/common': 0.4.11
245
250
'@atproto/crypto': 0.4.4
246
251
'@atproto/identity': 0.4.8
247
-
'@atproto/lexicon': 0.4.11
248
-
'@atproto/oauth-provider': 0.9.3
249
-
'@atproto/repo': 0.8.4
252
+
'@atproto/lexicon': 0.4.12
253
+
'@atproto/oauth-provider': 0.10.0
254
+
'@atproto/oauth-scopes': 0.0.1
255
+
'@atproto/repo': 0.8.5
250
256
'@atproto/syntax': 0.4.0
251
-
'@atproto/xrpc': 0.7.0
252
-
'@atproto/xrpc-server': 0.8.0
257
+
'@atproto/xrpc': 0.7.1
258
+
'@atproto/xrpc-server': 0.9.1
253
259
'@did-plc/lib': 0.0.4
254
260
'@hapi/address': 5.1.1
255
261
better-sqlite3: 10.1.0
···
286
292
- utf-8-validate
287
293
dev: false
288
294
289
-
/@atproto/repo@0.8.4:
290
-
resolution: {integrity: sha512-WgyARo6UcOnhbRsRVuNjXOH5MPTTHVDsaIavPeQl5erq5foE/pQKC7B7FLTJmhpC6GPZHJ5M2doAyXRXv5UHGA==}
295
+
/@atproto/repo@0.8.5:
296
+
resolution: {integrity: sha512-QZ4UWBWDyPMXgPhktmaRYRyCXIw7lIEAyGtaFy7UmCPpJ5TtFKw3GhGrEiNz/fY3/6lrkdDj44/Tzkud/eP/VQ==}
291
297
engines: {node: '>=18.7.0'}
292
298
dependencies:
293
299
'@atproto/common': 0.4.11
294
300
'@atproto/common-web': 0.4.2
295
301
'@atproto/crypto': 0.4.4
296
-
'@atproto/lexicon': 0.4.11
302
+
'@atproto/lexicon': 0.4.12
297
303
'@ipld/dag-cbor': 7.0.3
298
304
multiformats: 9.9.0
299
305
uint8arrays: 3.0.0
···
305
311
resolution: {integrity: sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==}
306
312
dev: false
307
313
308
-
/@atproto/xrpc-server@0.8.0:
309
-
resolution: {integrity: sha512-jDAEVHVhM4IvC0y491gXBuD4b1D9/XrM3HaEronRneAdNZ0qE0nsiJNqiHfQ6r4BvFdHnABM9KyHV9EQTvmxfg==}
314
+
/@atproto/xrpc-server@0.9.1:
315
+
resolution: {integrity: sha512-AJfxsKrZgKL/5362Rc0oUEjlgpDCmY/soeyLHHjid8J6clbErAdJVCuFwW4T40aHGFY1J13a29ucwbSfOROx6w==}
310
316
engines: {node: '>=18.7.0'}
311
317
dependencies:
312
318
'@atproto/common': 0.4.11
313
319
'@atproto/crypto': 0.4.4
314
-
'@atproto/lexicon': 0.4.11
315
-
'@atproto/xrpc': 0.7.0
320
+
'@atproto/lexicon': 0.4.12
321
+
'@atproto/xrpc': 0.7.1
316
322
cbor-x: 1.5.8
317
323
express: 4.18.2
318
324
http-errors: 2.0.0
···
327
333
- utf-8-validate
328
334
dev: false
329
335
330
-
/@atproto/xrpc@0.7.0:
331
-
resolution: {integrity: sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==}
336
+
/@atproto/xrpc@0.7.1:
337
+
resolution: {integrity: sha512-ANHEzlskYlMEdH18m+Itp3a8d0pEJao2qoDybDoMupTnoeNkya4VKIaOgAi6ERQnqatBBZyn9asW+7rJmSt/8g==}
332
338
dependencies:
333
-
'@atproto/lexicon': 0.4.11
339
+
'@atproto/lexicon': 0.4.12
334
340
zod: 3.23.8
335
341
dev: false
336
342
···
2193
2199
engines: {node: '>= 0.6'}
2194
2200
dev: false
2195
2201
2196
-
/cookie@0.6.0:
2197
-
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
2202
+
/cookie@0.7.2:
2203
+
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
2198
2204
engines: {node: '>= 0.6'}
2199
2205
dev: false
2200
2206