# plyr.fm configuration # app DEBUG=false PORT=8001 FRONTEND_URL=http://localhost:5173 # FRONTEND_CORS_ORIGIN_REGEX= # optional regex pattern for CORS (defaults to plyr.fm + localhost) # branding (optional) # backend branding settings # APP_NAME=plyr.fm # APP_TAGLINE=music streaming on atproto # CANONICAL_HOST=plyr.fm # CANONICAL_URL_OVERRIDE= # BROADCAST_CHANNEL_PREFIX=plyr # frontend branding (requires VITE_ prefix for SvelteKit) # VITE_APP_NAME=plyr.fm # VITE_APP_TAGLINE=music streaming on atproto # VITE_APP_CANONICAL_HOST=plyr.fm # VITE_APP_CANONICAL_URL= # VITE_APP_BROADCAST_PREFIX=plyr # database DATABASE_URL=postgresql+asyncpg://localhost/plyr # storage (cloudflare r2) AWS_ACCESS_KEY_ID=your_r2_access_key_id AWS_SECRET_ACCESS_KEY=your_r2_secret_access_key R2_BUCKET=audio-dev R2_IMAGE_BUCKET=images-dev R2_ENDPOINT_URL=https://8feb33b5fb57ce2bc093bc6f4141f40a.r2.cloudflarestorage.com R2_PUBLIC_BUCKET_URL=https://pub-154b70b3121149eda0cf1ccbae78cb33.r2.dev R2_PUBLIC_IMAGE_BUCKET_URL=https://pub-154b70b3121149eda0cf1ccbae78cb33.r2.dev R2_PRIVATE_BUCKET=audio-private-dev # private bucket for supporter-gated audio MAX_UPLOAD_SIZE_MB=1536 # max audio upload size (default: 1536MB / 1.5GB - supports 2-hour WAV) # atproto ATPROTO_PDS_URL=https://bsky.social ATPROTO_CLIENT_ID= ATPROTO_CLIENT_SECRET= ATPROTO_REDIRECT_URI=http://localhost:8000/auth/callback OAUTH_ENCRYPTION_KEY= # base64-encoded 32-byte key (required for production) # atproto namespace (optional - defaults to fm.plyr) # ATPROTO_APP_NAMESPACE=fm.plyr # ATPROTO_SCOPE_OVERRIDE= # override computed oauth scope if needed # observability (optional) # LOGFIRE_ENABLED=false # LOGFIRE_WRITE_TOKEN= # LOGFIRE_ENVIRONMENT=local # LOGFIRE_SUPPRESSED_LOGGERS=docket # comma-separated logger names to suppress # notifications (optional - bluesky DMs) # NOTIFY_ENABLED=false # NOTIFY_RECIPIENT_HANDLE= # NOTIFY_BOT_HANDLE= # NOTIFY_BOT_PASSWORD= # background tasks (optional - docket/redis) # DOCKET_URL=redis://localhost:6379 # enables docket; omit for asyncio fallback # DOCKET_NAME=plyr # queue namespace (default: plyr) # DOCKET_WORKER_CONCURRENCY=10 # concurrent task limit (default: 10)