Docker compose file for deploying a Bluesky PDS (reference impl: https://github.com/bluesky-social/pds) through Coolify
coolify_pds_compose.yaml edited
69 lines 2.7 kB view raw
1# Note: Coolify now has an official template for quick deployment of a Bluesky PDS 2# (see here: https://bsky.app/profile/indexx.dev/post/3lxdcz7aat22r) 3 4services: 5 pds: 6 image: ghcr.io/bluesky-social/pds:0.4 7 volumes: 8 - pds-data:/pds 9 environment: 10 # Service Configuration 11 - SERVICE_FQDN_PDS_3000 12 - PDS_HOSTNAME=${SERVICE_URL_PDS} 13 - PDS_DATA_DIRECTORY=${PDS_DATA_DIRECTORY:-/pds} 14 15 # Authentication & Security 16 - PDS_JWT_SECRET=${SERVICE_BASE64_PDS} 17 - PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_PDS} 18 - PDS_ADMIN_EMAIL=${PDS_ADMIN_EMAIL} 19 - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${SERVICE_HEX_32_ROTATIONKEY} 20 21 # Storage Configuration 22 - PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks 23 - PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-104857600} 24 25 # External Services 26 - PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory} 27 - PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.pop1.bsky.app} 28 - PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app} 29 - PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app} 30 - PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac} 31 - PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network} 32 33 # Email Configuration 34 - PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL} 35 - PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS} 36 - PDS_CONTACT_EMAIL_ADDRESS=${PDS_CONTACT_EMAIL_ADDRESS} 37 38 # Logging 39 - LOG_ENABLED=${LOG_ENABLED:-false} 40 command: | 41 sh -c ' 42 set -euo pipefail 43 44 echo "Installing required packages and pdsadmin..." 45 apk add --no-cache openssl curl bash jq coreutils gnupg util-linux-misc >/dev/null 46 47 echo "Downloading pdsadmin..." 48 curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh 49 chmod 700 /usr/local/bin/pdsadmin.sh 50 ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin 51 52 echo "Generating pds.env with all specified Coolify environment variables..." 53 env | awk -F "=" " 54 /^(PDS|LOG|SERVICE)_[A-Z0-9_]+/ { 55 gsub(/\\x27/, \"\\\"\", \$2); 56 print \$1 \"=\\\"\" \$2 \"\\\"\" 57 }" > ${PDS_DATA_DIRECTORY}/pds.env 58 59 echo "Launching PDS..." 60 exec node --enable-source-maps index.js 61 ' 62 healthcheck: 63 test: ["CMD", "wget", "--spider", "http://127.0.0.1:3000/xrpc/_health"] 64 interval: 2s 65 timeout: 10s 66 retries: 10 67 68volumes: 69 pds-data: