chadtmiller.com/pds.js
An atproto PDS in JavaScript, for Cloudflare Workers and Node
0
0
name = "atproto-pds"
main = "packages/cloudflare/src/index.js"
compatibility_date = "2024-09-23"
compatibility_flags = ["nodejs_compat"]
[[durable_objects.bindings]]
name = "PDS"
class_name = "PDSDurableObject"
[[migrations]]
tag = "v1"
new_sqlite_classes = [ "PersonalDataServer" ]
[[migrations]]
tag = "v2"
renamed_classes = [ { from = "PersonalDataServer", to = "PDSDurableObject" } ]
[[r2_buckets]]
binding = "BLOBS"
bucket_name = "pds-blobs"
# Account verification mail. The From address defaults to no-reply@HOSTNAME;
# its domain must be onboarded for Email Sending:
# npx wrangler email sending enable pds.example.com
# To send as a different address, set PDS_EMAIL_FROM after onboarding its
# domain, in [vars] below. It is not a secret, just an address.
[[send_email]]
name = "EMAIL"
# Scheduled backups land here. A separate bucket from BLOBS on purpose: the
# retention policy deletes freely inside it. Remove to run without backups.
# [[r2_buckets]]
# binding = "BACKUPS"
# bucket_name = "pds-backups"
#
# Better: back up OUTSIDE Cloudflare, to any S3-compatible bucket (Bunny,
# Backblaze B2, MinIO, AWS). When set, this wins over the BACKUPS binding.
# Endpoint/bucket/region go in [vars]; the two keys are secrets:
# wrangler secret put BACKUP_S3_ACCESS_KEY
# wrangler secret put BACKUP_S3_SECRET_KEY
# [vars]
# BACKUP_S3_ENDPOINT = "https://ny.storage.bunnycdn.com"
# BACKUP_S3_BUCKET = "my-pds-backups"
# BACKUP_S3_REGION = "us-east-1"
[observability]
enabled = true
[observability.logs]
invocation_logs = true
head_sampling_rate = 1
# Permissioned data (proposal 0016), experimental. Remove to disable; with it
# off the space endpoints do not exist. PLC_URL is left unset so identity
# resolution uses the production directory.
[vars]
PDS_ENABLE_SPACES = "true"
# PDS_EMAIL_FROM = "no-reply@example.com"