From 7b00a8519779f12c3e761d72d6b50f65cef514a4 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Tue, 16 Sep 2025 20:43:17 -0400 Subject: [PATCH 01/18] fix: Bluesky PDS template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If it works, it works, don't touch it 😭 --- templates/compose/bluesky-pds.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 371e67878..f03e20dcc 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -9,9 +9,9 @@ services: pds: image: 'ghcr.io/bluesky-social/pds:latest' volumes: - - ./pds-data:/pds + - /root/pds-data:/pds environment: - - SERVICE_URL_PDS_3000 + - SERVICE_FQDN_PDS_3000 - PDS_HOSTNAME=${SERVICE_URL_PDS} - PDS_JWT_SECRET=${SERVICE_PASSWORD_JWT_SECRET} - PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN} @@ -27,11 +27,11 @@ services: - PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac} - PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network} - LOG_ENABLED=${LOG_ENABLED:-true} - + command: > sh -c ' - echo "Installing curl, bash, and pdsadmin..." - apk add --no-cache curl bash && \ + echo "Installing required packages and pdsadmin..." + apk add --no-cache curl bash jq coreutils && \ curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \ chmod +x /usr/local/bin/pdsadmin.sh && \ ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin From a9ad8ed824f43e2e736ddb9e4a84497197ea13ab Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Tue, 16 Sep 2025 21:08:11 -0400 Subject: [PATCH 02/18] fix: Bluesky PDS template finally works normally --- templates/compose/bluesky-pds.yaml | 54 +++++++++++++----------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index f03e20dcc..65176e5f7 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -1,44 +1,35 @@ -# documentation: https://github.com/bluesky-social/pds -# slogan: Bluesky PDS (Personal Data Server) -# category: backend -# tags: bluesky, pds, platform -# logo: svgs/bluesky.svg -# port: 3000 - services: pds: image: 'ghcr.io/bluesky-social/pds:latest' volumes: - - /root/pds-data:/pds + - './pds-data:/pds' environment: - SERVICE_FQDN_PDS_3000 - - PDS_HOSTNAME=${SERVICE_URL_PDS} - - PDS_JWT_SECRET=${SERVICE_PASSWORD_JWT_SECRET} - - PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN} - - PDS_ADMIN_EMAIL=${SERVICE_EMAIL_ADMIN} - - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX} - - PDS_DATA_DIRECTORY=${PDS_DATA_DIRECTORY:-/pds} - - PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks - - PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-52428800} - - PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory} - - PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app} - - PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app} - - PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport} - - PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac} - - PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network} - - LOG_ENABLED=${LOG_ENABLED:-true} - - command: > + - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}' + - 'PDS_JWT_SECRET=${SERVICE_PASSWORD_JWT_SECRET}' + - 'PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}' + - 'PDS_ADMIN_EMAIL=${SERVICE_EMAIL_ADMIN}' + - 'PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}' + - 'PDS_DATA_DIRECTORY=${PDS_DATA_DIRECTORY:-/pds}' + - 'PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks' + - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-52428800}' + - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' + - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' + - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' + - 'PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport}' + - 'PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac}' + - 'PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network}' + - 'LOG_ENABLED=${LOG_ENABLED:-true}' + command: | sh -c ' - echo "Installing required packages and pdsadmin..." - apk add --no-cache curl bash jq coreutils && \ + set -euo pipefail; echo "Installing required packages and pdsadmin..." + apk add --no-cache curl bash jq coreutils >/dev/null && \ curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \ chmod +x /usr/local/bin/pdsadmin.sh && \ ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin echo "Generating /pds/pds.env..." printf "%s\n" \ - "SERVICE_FQDN_PDS_3000=$${SERVICE_FQDN_PDS_3000}" \ "PDS_HOSTNAME=$${PDS_HOSTNAME}" \ "PDS_JWT_SECRET=$${PDS_JWT_SECRET}" \ "PDS_ADMIN_PASSWORD=$${PDS_ADMIN_PASSWORD}" \ @@ -59,9 +50,12 @@ services: echo "Launching PDS..." exec node --enable-source-maps index.js ' - healthcheck: - test: ["CMD", "wget", "--spider", "http://127.0.0.1:3000/xrpc/_health"] + test: + - CMD + - wget + - '--spider' + - 'http://127.0.0.1:3000/xrpc/_health' interval: 2s timeout: 10s retries: 10 From d83a5763c63b8716521a0649cebd94d1653ab525 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Tue, 16 Sep 2025 21:09:21 -0400 Subject: [PATCH 03/18] fix: add back template info --- templates/compose/bluesky-pds.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 65176e5f7..a42d6c551 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -1,3 +1,10 @@ +# documentation: https://github.com/bluesky-social/pds +# slogan: Bluesky PDS (Personal Data Server) +# category: backend +# tags: bluesky, pds, platform +# logo: svgs/bluesky.svg +# port: 3000 + services: pds: image: 'ghcr.io/bluesky-social/pds:latest' From adb46ed0303d65774fdb54c2c7bbf9462c458795 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Tue, 16 Sep 2025 21:36:09 -0400 Subject: [PATCH 04/18] fix: now it automatically generates the JWT secret and the PLC rotation key --- templates/compose/bluesky-pds.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index a42d6c551..bff450334 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -13,13 +13,13 @@ services: environment: - SERVICE_FQDN_PDS_3000 - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}' - - 'PDS_JWT_SECRET=${SERVICE_PASSWORD_JWT_SECRET}' + - 'PDS_JWT_SECRET=${SERVICE_HEX_32_JWTSECRET}' - 'PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}' - 'PDS_ADMIN_EMAIL=${SERVICE_EMAIL_ADMIN}' - - 'PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}' + - 'PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${SERVICE_HEX_32_ROTATIONKEY}' - 'PDS_DATA_DIRECTORY=${PDS_DATA_DIRECTORY:-/pds}' - 'PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks' - - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-52428800}' + - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' @@ -30,7 +30,7 @@ services: command: | sh -c ' set -euo pipefail; echo "Installing required packages and pdsadmin..." - apk add --no-cache curl bash jq coreutils >/dev/null && \ + apk add --no-cache openssl curl bash jq coreutils >/dev/null && \ curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \ chmod +x /usr/local/bin/pdsadmin.sh && \ ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin From 3fc3058439390609661ecac19757d02bc49cad7a Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Wed, 17 Sep 2025 13:32:32 -0400 Subject: [PATCH 05/18] feat: Add Email Envs, Install more required packages by pdsadmin --- templates/compose/bluesky-pds.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index bff450334..57d515f41 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -21,6 +21,8 @@ services: - 'PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks' - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' + - 'PDS_EMAIL_FROM_ADDRESS=${SERVICE_EMAIL_ADMIN}' + - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' - 'PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport}' @@ -30,7 +32,7 @@ services: command: | sh -c ' set -euo pipefail; echo "Installing required packages and pdsadmin..." - apk add --no-cache openssl curl bash jq coreutils >/dev/null && \ + apk add --no-cache openssl curl bash jq coreutils gnupg util-linux-misc >/dev/null && \ curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \ chmod +x /usr/local/bin/pdsadmin.sh && \ ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin @@ -46,6 +48,8 @@ services: "PDS_BLOBSTORE_DISK_LOCATION=$${PDS_DATA_DIRECTORY}/blocks" \ "PDS_BLOB_UPLOAD_LIMIT=$${PDS_BLOB_UPLOAD_LIMIT}" \ "PDS_DID_PLC_URL=$${PDS_DID_PLC_URL}" \ + "PDS_EMAIL_FROM_ADDRESS=$${PDS_EMAIL_FROM_ADDRESS}"\ + "PDS_EMAIL_SMTP_URL=$${PDS_EMAIL_SMTP_URL"}\ "PDS_BSKY_APP_VIEW_URL=$${PDS_BSKY_APP_VIEW_URL}" \ "PDS_BSKY_APP_VIEW_DID=$${PDS_BSKY_APP_VIEW_DID}" \ "PDS_REPORT_SERVICE_URL=$${PDS_REPORT_SERVICE_URL}" \ From 1d85177ce6acb407ec2274f45b66ca77b139d55b Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Fri, 19 Sep 2025 08:33:23 -0400 Subject: [PATCH 06/18] fix: syntax error on vars Co-authored-by: Mario Neuhold --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 57d515f41..f59d20181 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -49,7 +49,7 @@ services: "PDS_BLOB_UPLOAD_LIMIT=$${PDS_BLOB_UPLOAD_LIMIT}" \ "PDS_DID_PLC_URL=$${PDS_DID_PLC_URL}" \ "PDS_EMAIL_FROM_ADDRESS=$${PDS_EMAIL_FROM_ADDRESS}"\ - "PDS_EMAIL_SMTP_URL=$${PDS_EMAIL_SMTP_URL"}\ + "PDS_EMAIL_SMTP_URL=$${PDS_EMAIL_SMTP_URL}"\ "PDS_BSKY_APP_VIEW_URL=$${PDS_BSKY_APP_VIEW_URL}" \ "PDS_BSKY_APP_VIEW_DID=$${PDS_BSKY_APP_VIEW_DID}" \ "PDS_REPORT_SERVICE_URL=$${PDS_REPORT_SERVICE_URL}" \ From 82df0b29fe9de988696180bd0b0f34b7996328cb Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 00:44:11 -0400 Subject: [PATCH 07/18] feat: make an empty pds.env file to trick pdsadmin into working correctly This way we don't need the very long command Credits: @madmalkav --- templates/compose/bluesky-pds.yaml | 32 +++++++----------------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index f59d20181..43e4c4078 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -29,38 +29,20 @@ services: - 'PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac}' - 'PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network}' - 'LOG_ENABLED=${LOG_ENABLED:-true}' - command: | + + command: > sh -c ' set -euo pipefail; echo "Installing required packages and pdsadmin..." apk add --no-cache openssl curl bash jq coreutils gnupg util-linux-misc >/dev/null && \ curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \ - chmod +x /usr/local/bin/pdsadmin.sh && \ + chmod 700 /usr/local/bin/pdsadmin.sh && \ ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin - - echo "Generating /pds/pds.env..." - printf "%s\n" \ - "PDS_HOSTNAME=$${PDS_HOSTNAME}" \ - "PDS_JWT_SECRET=$${PDS_JWT_SECRET}" \ - "PDS_ADMIN_PASSWORD=$${PDS_ADMIN_PASSWORD}" \ - "PDS_ADMIN_EMAIL=$${PDS_ADMIN_EMAIL}" \ - "PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=$${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}" \ - "PDS_DATA_DIRECTORY=$${PDS_DATA_DIRECTORY}" \ - "PDS_BLOBSTORE_DISK_LOCATION=$${PDS_DATA_DIRECTORY}/blocks" \ - "PDS_BLOB_UPLOAD_LIMIT=$${PDS_BLOB_UPLOAD_LIMIT}" \ - "PDS_DID_PLC_URL=$${PDS_DID_PLC_URL}" \ - "PDS_EMAIL_FROM_ADDRESS=$${PDS_EMAIL_FROM_ADDRESS}"\ - "PDS_EMAIL_SMTP_URL=$${PDS_EMAIL_SMTP_URL}"\ - "PDS_BSKY_APP_VIEW_URL=$${PDS_BSKY_APP_VIEW_URL}" \ - "PDS_BSKY_APP_VIEW_DID=$${PDS_BSKY_APP_VIEW_DID}" \ - "PDS_REPORT_SERVICE_URL=$${PDS_REPORT_SERVICE_URL}" \ - "PDS_REPORT_SERVICE_DID=$${PDS_REPORT_SERVICE_DID}" \ - "PDS_CRAWLERS=$${PDS_CRAWLERS}" \ - "LOG_ENABLED=$${LOG_ENABLED}" \ - > /pds/pds.env - - echo "Launching PDS..." + echo "Creating an empty pds.env file so pdsadmin works..." + touch ${PDS_DATA_DIRECTORY}/pds.env + echo "Launching PDS, enjoy!..." exec node --enable-source-maps index.js ' + healthcheck: test: - CMD From 2250c4a6936f48b6c26b964ecff956093e5d1102 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 00:52:54 -0400 Subject: [PATCH 08/18] fix: remove the SERVICE_EMAIL_ADMIN and make it normal --- templates/compose/bluesky-pds.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 43e4c4078..4d622074d 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -15,13 +15,13 @@ services: - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}' - 'PDS_JWT_SECRET=${SERVICE_HEX_32_JWTSECRET}' - 'PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}' - - 'PDS_ADMIN_EMAIL=${SERVICE_EMAIL_ADMIN}' + - 'PDS_ADMIN_EMAIL=${PDS_ADMIN_EMAIL}' - 'PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${SERVICE_HEX_32_ROTATIONKEY}' - 'PDS_DATA_DIRECTORY=${PDS_DATA_DIRECTORY:-/pds}' - 'PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks' - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' - - 'PDS_EMAIL_FROM_ADDRESS=${SERVICE_EMAIL_ADMIN}' + - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS}' - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' From 5b1485a04ba61baad2cecf4d5b2f77d3161694ed Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 00:57:56 -0400 Subject: [PATCH 09/18] feat: not many know how to setup this without reading pds docs --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 4d622074d..74e3bb1e4 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -22,7 +22,7 @@ services: - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS}' - - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL}' + - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL:-smtps://username:password@smtp.example.com/}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' - 'PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport}' From 0225c486ffb987ddc6373f09d985091c66766278 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 01:10:00 -0400 Subject: [PATCH 10/18] fix: both email envs are needed in order for the PDS to start, so set the other one as required --- templates/compose/bluesky-pds.yaml | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 74e3bb1e4..da3dcfb65 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -1,15 +1,8 @@ -# documentation: https://github.com/bluesky-social/pds -# slogan: Bluesky PDS (Personal Data Server) -# category: backend -# tags: bluesky, pds, platform -# logo: svgs/bluesky.svg -# port: 3000 - services: pds: image: 'ghcr.io/bluesky-social/pds:latest' volumes: - - './pds-data:/pds' + - 'pds-data:/pds' environment: - SERVICE_FQDN_PDS_3000 - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}' @@ -21,7 +14,7 @@ services: - 'PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks' - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' - - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS}' + - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS:?}' - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL:-smtps://username:password@smtp.example.com/}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' @@ -29,20 +22,19 @@ services: - 'PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac}' - 'PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network}' - 'LOG_ENABLED=${LOG_ENABLED:-true}' - - command: > + command: | sh -c ' - set -euo pipefail; echo "Installing required packages and pdsadmin..." - apk add --no-cache openssl curl bash jq coreutils gnupg util-linux-misc >/dev/null && \ - curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \ - chmod 700 /usr/local/bin/pdsadmin.sh && \ + set -euo pipefail + echo "Installing required packages and pdsadmin..." + apk add --no-cache openssl curl bash jq coreutils gnupg util-linux-misc >/dev/null + curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh + chmod 700 /usr/local/bin/pdsadmin.sh ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin echo "Creating an empty pds.env file so pdsadmin works..." touch ${PDS_DATA_DIRECTORY}/pds.env echo "Launching PDS, enjoy!..." exec node --enable-source-maps index.js ' - healthcheck: test: - CMD @@ -52,3 +44,5 @@ services: interval: 2s timeout: 10s retries: 10 +volumes: + pds-data: From a33a753e5f1278c9abd560f324876d15d2817072 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 01:10:42 -0400 Subject: [PATCH 11/18] fix: add back template info --- templates/compose/bluesky-pds.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index da3dcfb65..45a00ba31 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -1,3 +1,10 @@ +# documentation: https://github.com/bluesky-social/pds +# slogan: Bluesky PDS (Personal Data Server) +# category: backend +# tags: bluesky, pds, platform +# logo: svgs/bluesky.svg +# port: 3000 + services: pds: image: 'ghcr.io/bluesky-social/pds:latest' From 3a51b5e908ebadcaacda068269e4cdc034dc9301 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 01:19:33 -0400 Subject: [PATCH 12/18] feat: make the other email env also required --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 45a00ba31..ade8efbfb 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -22,7 +22,7 @@ services: - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS:?}' - - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL:-smtps://username:password@smtp.example.com/}' + - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL:?smtps://username:password@smtp.example.com/}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' - 'PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport}' From 1f8b24a11d12dd3a7e9a0a121af989c85d77fb2d Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 10:22:56 -0400 Subject: [PATCH 13/18] =?UTF-8?q?fix:=20healthcheck=20doesn=E2=80=99t=20ne?= =?UTF-8?q?ed=20to=20be=205s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index ade8efbfb..aa5398480 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -48,7 +48,7 @@ services: - wget - '--spider' - 'http://127.0.0.1:3000/xrpc/_health' - interval: 2s + interval: 5s timeout: 10s retries: 10 volumes: From ecf575e781ac6d4ed835e4e911ce5d4ce38d738d Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 11:27:03 -0400 Subject: [PATCH 14/18] fix: make email envs not required --- templates/compose/bluesky-pds.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index aa5398480..7fabec624 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -21,8 +21,8 @@ services: - 'PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks' - 'PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600}' - 'PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}' - - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS:?}' - - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL:?smtps://username:password@smtp.example.com/}' + - 'PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS}' + - 'PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL}' - 'PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}' - 'PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}' - 'PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport}' From 58668203852d87c2b95363dce0916d8c398767f5 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Sat, 20 Sep 2025 11:32:56 -0400 Subject: [PATCH 15/18] fix: domain on coolify --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 7fabec624..0528ce30b 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -11,7 +11,7 @@ services: volumes: - 'pds-data:/pds' environment: - - SERVICE_FQDN_PDS_3000 + - SERVICE_URL_PDS_3000 - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}' - 'PDS_JWT_SECRET=${SERVICE_HEX_32_JWTSECRET}' - 'PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}' From 0dc67ffd3dfac3098431578e094105e2ce20f56c Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Mon, 22 Sep 2025 01:44:55 -0400 Subject: [PATCH 16/18] refactor: volumes set back to ./pds-data:/pds --- templates/compose/bluesky-pds.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 0528ce30b..067d2628b 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -9,7 +9,7 @@ services: pds: image: 'ghcr.io/bluesky-social/pds:latest' volumes: - - 'pds-data:/pds' + - './pds-data:/pds' environment: - SERVICE_URL_PDS_3000 - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}' @@ -51,5 +51,3 @@ services: interval: 5s timeout: 10s retries: 10 -volumes: - pds-data: From 58d4bdf1c35e832bf119262b9011e5860b1fecbb Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Tue, 7 Oct 2025 11:46:37 -0800 Subject: [PATCH 17/18] Static version for pds --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index 067d2628b..d7ede0b83 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -7,7 +7,7 @@ services: pds: - image: 'ghcr.io/bluesky-social/pds:latest' + image: 'ghcr.io/bluesky-social/pds:0.4.182' volumes: - './pds-data:/pds' environment: From 318f092e7ce3f11a932b5e1c2c5bbdca240f1c78 Mon Sep 17 00:00:00 2001 From: Scan <103391616+scanash00@users.noreply.github.com> Date: Wed, 8 Oct 2025 01:28:37 -0800 Subject: [PATCH 18/18] Update templates/compose/bluesky-pds.yaml Co-authored-by: Cynthia Ebert <54354036+Cinzya@users.noreply.github.com> --- templates/compose/bluesky-pds.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml index d7ede0b83..3ddc9d608 100644 --- a/templates/compose/bluesky-pds.yaml +++ b/templates/compose/bluesky-pds.yaml @@ -9,7 +9,7 @@ services: pds: image: 'ghcr.io/bluesky-social/pds:0.4.182' volumes: - - './pds-data:/pds' + - pds-data:/pds environment: - SERVICE_URL_PDS_3000 - 'PDS_HOSTNAME=${SERVICE_FQDN_PDS_3000}'