feat: add Bluesky PDS template (#542)

* feat: Bluesky PDS template

* chore: add bluesky pds svg

* chore: metadata for bluesky pds

* yaml > yml

* pnpm lock

* fix: correct rotation key config

* fix volumes

* fix: volumes in the pds compose

* define volumes in compose

* fix: 32 bit rotation key

* create pds.env correctly

* some extra fixes

* more extra fixes

* a blank line

* update pnpm lock
This commit is contained in:
Scan
2025-12-14 20:08:22 -09:00
committed by GitHub
parent 4367e2a42a
commit 40aa695a73
4 changed files with 105 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
<svg width="600" height="530" xmlns="http://www.w3.org/2000/svg">
<path d="M135.72 44.03C202.216 93.951 273.74 195.17 300 249.49c26.262-54.316 97.782-155.54 164.28-205.46C512.26 8.009 590-19.862 590 68.825c0 17.712-10.155 148.79-16.111 170.07-20.703 73.984-96.144 92.854-163.25 81.433 117.3 19.964 147.14 86.092 82.697 152.22-122.39 125.59-175.91-31.511-189.63-71.766-2.514-7.38-3.69-10.832-3.708-7.896-.017-2.936-1.193.516-3.707 7.896-13.714 40.255-67.233 197.36-189.63 71.766-64.444-66.128-34.605-132.26 82.697-152.22-67.108 11.421-142.55-7.45-163.25-81.433C20.15 217.613 9.997 86.535 9.997 68.825c0-88.687 77.742-60.816 125.72-24.795z" fill="#1185fe"/>
</svg>

After

Width:  |  Height:  |  Size: 665 B

View File

@@ -0,0 +1,48 @@
services:
pds:
image: 'ghcr.io/bluesky-social/pds:0.4.182'
volumes:
- pds-data:/pds
environment:
- SERVICE_URL_PDS_3000
- PDS_HOSTNAME
- PDS_JWT_SECRET
- PDS_ADMIN_PASSWORD
- 'PDS_ADMIN_EMAIL=${PDS_ADMIN_EMAIL}'
- 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:-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_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 '
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/pds.env
echo "Launching PDS, enjoy!..."
exec node --enable-source-maps index.js
'
healthcheck:
test:
- CMD
- wget
- '--spider'
- 'http://127.0.0.1:3000/xrpc/_health'
interval: 5s
timeout: 10s
retries: 10
volumes:
pds-data:

View File

@@ -0,0 +1,36 @@
[variables]
main_domain = "${domain}"
admin_password = "${password:32}"
jwt_secret = "${jwt:32}"
rotation_key = "${jwt:32}"
data_directory = "/pds"
blob_upload_limit = "104857600"
log_enabled = "true"
[config]
mounts = []
env = [
"PDS_ADMIN_PASSWORD=${admin_password}",
"PDS_HOSTNAME=${main_domain}",
"PDS_JWT_SECRET=${jwt_secret}",
"PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${rotation_key}",
"PDS_ADMIN_EMAIL=",
"PDS_EMAIL_FROM_ADDRESS=",
"PDS_EMAIL_SMTP_URL=",
"PDS_DATA_DIRECTORY=${data_directory}",
"PDS_BLOBSTORE_DISK_LOCATION=${data_directory}/blocks",
"PDS_BLOB_UPLOAD_LIMIT=${blob_upload_limit}",
"PDS_DID_PLC_URL=https://plc.directory",
"PDS_BSKY_APP_VIEW_URL=https://api.bsky.app",
"PDS_BSKY_APP_VIEW_DID=did:web:api.bsky.app",
"PDS_REPORT_SERVICE_URL=https://mod.bsky.app/xrpc/com.atproto.moderation.createReport",
"PDS_REPORT_SERVICE_DID=did:plc:ar7c4by46qjdydhdevvrndac",
"PDS_CRAWLERS=https://bsky.network",
"LOG_ENABLED=${log_enabled}"
]
[[config.domains]]
serviceName = "pds"
port = 3000
host = "${main_domain}"
path = "/"

View File

@@ -750,6 +750,24 @@
"nextjs"
]
},
{
"id": "bluesky-pds",
"name": "Bluesky PDS",
"version": "0.4.182",
"description": "Bluesky PDS is a personal data server for Bluesky.",
"logo": "bluesky-pds.svg",
"links": {
"github": "https://github.com/bluesky-social/pds",
"website": "https://bsky.social/about",
"docs": "https://github.com/bluesky-social/pds"
},
"tags": [
"bluesky",
"pds",
"data",
"server"
]
},
{
"id": "bolt.diy",
"name": "bolt.diy",