Mirror from bluesky-social/pds

Compare changes

Choose any two refs to compare.

+1 -1
.github/workflows/build-and-push-ghcr.yaml
··· 3 3 push: 4 4 branches: 5 5 - main 6 - - pdsv2 6 + - next 7 7 tags: 8 8 - v* 9 9 env:
-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
··· 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
··· 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
··· 7 7 "main": "index.js", 8 8 "license": "MIT", 9 9 "dependencies": { 10 - "@atproto/pds": "0.4.158" 10 + "@atproto/pds": "0.4.166" 11 11 } 12 12 }
+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