Our Personal Data Server from scratch!
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 626 lines 18 kB view raw
1[server] 2# Public hostname of the PDS, such as `pds.example.com`. 3# 4# Can also be specified via environment variable `PDS_HOSTNAME`. 5# 6# Required! This value must be specified. 7#hostname = 8 9# Address to bind the HTTP server to. 10# 11# Can also be specified via environment variable `SERVER_HOST`. 12# 13# Default value: "127.0.0.1" 14#host = "127.0.0.1" 15 16# Port to bind the HTTP server to. 17# 18# Can also be specified via environment variable `SERVER_PORT`. 19# 20# Default value: 3000 21#port = 3000 22 23# List of domains for user handles. 24# Defaults to the PDS hostname when not set. 25# 26# Can also be specified via environment variable `PDS_USER_HANDLE_DOMAINS`. 27#user_handle_domains = 28 29# Enable PDS-hosted did:web identities. Hosting did:web requires a 30# long-term commitment to serve DID documents; opt-in only. 31# 32# Can also be specified via environment variable `ENABLE_PDS_HOSTED_DID_WEB`. 33# 34# Default value: false 35#enable_pds_hosted_did_web = false 36 37# When set to true, skip age-assurance birthday prompt for all accounts. 38# 39# Can also be specified via environment variable `PDS_AGE_ASSURANCE_OVERRIDE`. 40# 41# Default value: false 42#age_assurance_override = false 43 44# Require an invite code for new account registration. 45# 46# Can also be specified via environment variable `INVITE_CODE_REQUIRED`. 47# 48# Default value: true 49#invite_code_required = true 50 51# Allow HTTP (non-TLS) proxy requests. Only useful during development. 52# 53# Can also be specified via environment variable `ALLOW_HTTP_PROXY`. 54# 55# Default value: false 56#allow_http_proxy = false 57 58# Disable all rate limiting. Should only be used in testing. 59# 60# Can also be specified via environment variable `DISABLE_RATE_LIMITING`. 61# 62# Default value: false 63#disable_rate_limiting = false 64 65# List of additional banned words for handle validation. 66# 67# Can also be specified via environment variable `PDS_BANNED_WORDS`. 68#banned_words = 69 70# URL to a privacy policy page. 71# 72# Can also be specified via environment variable `PRIVACY_POLICY_URL`. 73#privacy_policy_url = 74 75# URL to terms of service page. 76# 77# Can also be specified via environment variable `TERMS_OF_SERVICE_URL`. 78#terms_of_service_url = 79 80# Operator contact email address. 81# 82# Can also be specified via environment variable `CONTACT_EMAIL`. 83#contact_email = 84 85# Maximum allowed blob size in bytes (default 10 GiB). 86# 87# Can also be specified via environment variable `MAX_BLOB_SIZE`. 88# 89# Default value: 10737418240 90#max_blob_size = 10737418240 91 92# Maximum allowed number of preferences 93# 94# Can also be specified via environment variable `MAX_PREFERENCES_COUNT`. 95# 96# Default value: 1000 97#max_preferences_count = 1000 98 99[frontend] 100# Whether to enable the built in serving of the frontend. 101# 102# Can also be specified via environment variable `FRONTEND_ENABLED`. 103# 104# Default value: true 105#enabled = true 106 107# Directory to serve as the frontend. The oauth_client_metadata.json will have any references to 108# the frontend hostname replaced by the configured frontend hostname. 109# 110# Can also be specified via environment variable `FRONTEND_DIR`. 111# 112# Default value: "/var/lib/tranquil-pds/frontend" 113#dir = "/var/lib/tranquil-pds/frontend" 114 115[database] 116# PostgreSQL connection URL. 117# 118# Can also be specified via environment variable `DATABASE_URL`. 119# 120# Required! This value must be specified. 121#url = 122 123# Maximum number of connections in the pool. 124# 125# Can also be specified via environment variable `DATABASE_MAX_CONNECTIONS`. 126# 127# Default value: 100 128#max_connections = 100 129 130# Minimum number of idle connections kept in the pool. 131# 132# Can also be specified via environment variable `DATABASE_MIN_CONNECTIONS`. 133# 134# Default value: 10 135#min_connections = 10 136 137# Timeout in seconds when acquiring a connection from the pool. 138# 139# Can also be specified via environment variable `DATABASE_ACQUIRE_TIMEOUT_SECS`. 140# 141# Default value: 10 142#acquire_timeout_secs = 10 143 144[secrets] 145# Secret used for signing JWTs. Must be at least 32 characters in 146# production. 147# 148# Can also be specified via environment variable `JWT_SECRET`. 149#jwt_secret = 150 151# Secret used for DPoP proof validation. Must be at least 32 characters 152# in production. 153# 154# Can also be specified via environment variable `DPOP_SECRET`. 155#dpop_secret = 156 157# Master key used for key-encryption and HKDF derivation. Must be at 158# least 32 characters in production. 159# 160# Can also be specified via environment variable `MASTER_KEY`. 161#master_key = 162 163# PLC rotation key (DID key). If not set, user-level keys are used. 164# 165# Can also be specified via environment variable `PLC_ROTATION_KEY`. 166#plc_rotation_key = 167 168# Allow insecure/test secrets. NEVER enable in production. 169# 170# Can also be specified via environment variable `TRANQUIL_PDS_ALLOW_INSECURE_SECRETS`. 171# 172# Default value: false 173#allow_insecure = false 174 175[storage] 176# Storage backend: `filesystem` or `s3`. 177# 178# Can also be specified via environment variable `BLOB_STORAGE_BACKEND`. 179# 180# Default value: "filesystem" 181#backend = "filesystem" 182 183# Path on disk for the filesystem blob backend. 184# 185# Can also be specified via environment variable `BLOB_STORAGE_PATH`. 186# 187# Default value: "/var/lib/tranquil-pds/blobs" 188#path = "/var/lib/tranquil-pds/blobs" 189 190# S3 bucket name for blob storage. 191# 192# Can also be specified via environment variable `S3_BUCKET`. 193#s3_bucket = 194 195# Custom S3 endpoint URL. 196# 197# Can also be specified via environment variable `S3_ENDPOINT`. 198#s3_endpoint = 199 200# Repository backend: `postgres` by default, or `tranquil-store`, our embedded db. 201# tranquil-store is EXPERIMENTAL!!!! RISK OF TOTAL DATA LOSS. 202# 203# Can also be specified via environment variable `REPO_BACKEND`. 204# 205# Default value: "postgres" 206#repo_backend = "postgres" 207 208[tranquil_store] 209# Directory for tranquil-store data: the metastore, eventlog, and blockstore. 210# 211# Can also be specified via environment variable `TRANQUIL_STORE_DATA_DIR`. 212# 213# Default value: "/var/lib/tranquil-pds/store" 214#data_dir = "/var/lib/tranquil-pds/store" 215 216# Fjall block cache size in megabytes. Defaults to 20% of system RAM when unset. 217# 218# Can also be specified via environment variable `TRANQUIL_STORE_MEMORY_BUDGET_MB`. 219#memory_budget_mb = 220 221# Number of handler threads. Defaults to available_parallelism / 2. 222# 223# Can also be specified via environment variable `TRANQUIL_STORE_HANDLER_THREADS`. 224#handler_threads = 225 226# Maximum total bytes of pending (unsynced) eventlog payloads. Appenders block 227# once this budget is exhausted until in-flight events drain via fsync. Set to 228# 0 to disable backpressure. Default: 1 GiB. 229# 230# Can also be specified via environment variable `TRANQUIL_STORE_EVENTLOG_PENDING_BYTES_BUDGET`. 231# 232# Default value: 1073741824 233#eventlog_pending_bytes_budget = 1073741824 234 235# Maximum size of an individual eventlog payload in bytes. Single events 236# larger than this are rejected at append time. Default: 256 MiB. 237# 238# Can also be specified via environment variable `TRANQUIL_STORE_EVENTLOG_MAX_EVENT_PAYLOAD`. 239# 240# Default value: 268435456 241#eventlog_max_event_payload = 268435456 242 243# Maximum size of an individual blockstore data file in bytes. When the 244# active data file reaches this size it is rolled over and becomes 245# eligible for compaction. Default: 256 MiB. 246# 247# Can also be specified via environment variable `TRANQUIL_STORE_MAX_BLOCKSTORE_FILE_SIZE`. 248# 249# Default value: 268435456 250#max_blockstore_file_size = 268435456 251 252# Maximum size of an individual eventlog segment file in bytes. When the 253# active segment reaches this size it is sealed and a new one is created. 254# Safe to change on a running instance. Default: 256 MiB. 255# 256# Can also be specified via environment variable `TRANQUIL_STORE_MAX_EVENTLOG_SEGMENT_SIZE`. 257# 258# Default value: 268435456 259#max_eventlog_segment_size = 268435456 260 261[cache] 262# Cache backend: `ripple` by default, or `valkey`. 263# 264# Can also be specified via environment variable `CACHE_BACKEND`. 265# 266# Default value: "ripple" 267#backend = "ripple" 268 269# Valkey / Redis connection URL. Required when `backend = "valkey"`. 270# 271# Can also be specified via environment variable `VALKEY_URL`. 272#valkey_url = 273 274[cache.ripple] 275# Address to bind the Ripple gossip protocol listener. 276# 277# Can also be specified via environment variable `RIPPLE_BIND`. 278# 279# Default value: "0.0.0.0:0" 280#bind_addr = "0.0.0.0:0" 281 282# List of seed peer addresses. 283# 284# Can also be specified via environment variable `RIPPLE_PEERS`. 285#peers = 286 287# Unique machine identifier. Auto-derived from hostname when not set. 288# 289# Can also be specified via environment variable `RIPPLE_MACHINE_ID`. 290#machine_id = 291 292# Gossip protocol interval in milliseconds. 293# 294# Can also be specified via environment variable `RIPPLE_GOSSIP_INTERVAL_MS`. 295# 296# Default value: 200 297#gossip_interval_ms = 200 298 299# Maximum cache size in megabytes. 300# 301# Can also be specified via environment variable `RIPPLE_CACHE_MAX_MB`. 302# 303# Default value: 256 304#cache_max_mb = 256 305 306[plc] 307# Base URL of the PLC directory. 308# 309# Can also be specified via environment variable `PLC_DIRECTORY_URL`. 310# 311# Default value: "https://plc.directory" 312#directory_url = "https://plc.directory" 313 314# HTTP request timeout in seconds. 315# 316# Can also be specified via environment variable `PLC_TIMEOUT_SECS`. 317# 318# Default value: 10 319#timeout_secs = 10 320 321# TCP connect timeout in seconds. 322# 323# Can also be specified via environment variable `PLC_CONNECT_TIMEOUT_SECS`. 324# 325# Default value: 5 326#connect_timeout_secs = 5 327 328# Seconds to cache DID documents in memory. 329# 330# Can also be specified via environment variable `DID_CACHE_TTL_SECS`. 331# 332# Default value: 300 333#did_cache_ttl_secs = 300 334 335[firehose] 336# Size of the in-memory broadcast buffer for firehose events. 337# 338# Can also be specified via environment variable `FIREHOSE_BUFFER_SIZE`. 339# 340# Default value: 10000 341#buffer_size = 10000 342 343# How many hours of historical events to replay for cursor-based 344# firehose connections. 345# 346# Can also be specified via environment variable `FIREHOSE_BACKFILL_HOURS`. 347# 348# Default value: 72 349#backfill_hours = 72 350 351# Maximum concurrent full-repo exports, eg. getRepo without `since`. 352# 353# Can also be specified via environment variable `MAX_CONCURRENT_REPO_EXPORTS`. 354# 355# Default value: 4 356#max_concurrent_repo_exports = 4 357 358# List of relay / crawler notification URLs. 359# 360# Can also be specified via environment variable `CRAWLERS`. 361#crawlers = 362 363[email] 364# Sender email address. When unset, email sending is disabled. 365# 366# Can also be specified via environment variable `MAIL_FROM_ADDRESS`. 367#from_address = 368 369# Display name used in the `From` header. 370# 371# Can also be specified via environment variable `MAIL_FROM_NAME`. 372# 373# Default value: "Tranquil PDS" 374#from_name = "Tranquil PDS" 375 376# Path to the `sendmail` binary. 377# 378# Can also be specified via environment variable `SENDMAIL_PATH`. 379# 380# Default value: "/usr/sbin/sendmail" 381#sendmail_path = "/usr/sbin/sendmail" 382 383[discord] 384# Discord bot token. When unset, Discord integration is disabled. 385# 386# Can also be specified via environment variable `DISCORD_BOT_TOKEN`. 387#bot_token = 388 389[telegram] 390# Telegram bot token. When unset, Telegram integration is disabled. 391# 392# Can also be specified via environment variable `TELEGRAM_BOT_TOKEN`. 393#bot_token = 394 395# Secret token for incoming webhook verification. 396# 397# Can also be specified via environment variable `TELEGRAM_WEBHOOK_SECRET`. 398#webhook_secret = 399 400[signal] 401# Protocol state is stored in postgres' signal_* tables. 402# Link a device via the admin API before enabling. 403# 404# Can also be specified via environment variable `SIGNAL_ENABLED`. 405# 406# Default value: false 407#enabled = false 408 409[notifications] 410# Polling interval in milliseconds for the comms queue. 411# 412# Can also be specified via environment variable `NOTIFICATION_POLL_INTERVAL_MS`. 413# 414# Default value: 1000 415#poll_interval_ms = 1000 416 417# Number of notifications to process per batch. 418# 419# Can also be specified via environment variable `NOTIFICATION_BATCH_SIZE`. 420# 421# Default value: 100 422#batch_size = 100 423 424[sso] 425[sso.github] 426# Can also be specified via environment variable `SSO_GITHUB_ENABLED`. 427# Default value: false 428#enabled = false 429 430# Can also be specified via environment variable `SSO_GITHUB_CLIENT_ID`. 431#client_id = 432 433# Can also be specified via environment variable `SSO_GITHUB_CLIENT_SECRET`. 434#client_secret = 435 436# Can also be specified via environment variable `SSO_GITHUB_DISPLAY_NAME`. 437#display_name = 438 439[sso.discord] 440# Can also be specified via environment variable `SSO_DISCORD_ENABLED`. 441# Default value: false 442#enabled = false 443 444# Can also be specified via environment variable `SSO_DISCORD_CLIENT_ID`. 445#client_id = 446 447# Can also be specified via environment variable `SSO_DISCORD_CLIENT_SECRET`. 448#client_secret = 449 450# Can also be specified via environment variable `SSO_DISCORD_DISPLAY_NAME`. 451#display_name = 452 453[sso.google] 454# Can also be specified via environment variable `SSO_GOOGLE_ENABLED`. 455# Default value: false 456#enabled = false 457 458# Can also be specified via environment variable `SSO_GOOGLE_CLIENT_ID`. 459#client_id = 460 461# Can also be specified via environment variable `SSO_GOOGLE_CLIENT_SECRET`. 462#client_secret = 463 464# Can also be specified via environment variable `SSO_GOOGLE_DISPLAY_NAME`. 465#display_name = 466 467[sso.gitlab] 468# Can also be specified via environment variable `SSO_GITLAB_ENABLED`. 469# Default value: false 470#enabled = false 471 472# Can also be specified via environment variable `SSO_GITLAB_CLIENT_ID`. 473#client_id = 474 475# Can also be specified via environment variable `SSO_GITLAB_CLIENT_SECRET`. 476#client_secret = 477 478# Can also be specified via environment variable `SSO_GITLAB_ISSUER`. 479#issuer = 480 481# Can also be specified via environment variable `SSO_GITLAB_DISPLAY_NAME`. 482#display_name = 483 484[sso.oidc] 485# Can also be specified via environment variable `SSO_OIDC_ENABLED`. 486# Default value: false 487#enabled = false 488 489# Can also be specified via environment variable `SSO_OIDC_CLIENT_ID`. 490#client_id = 491 492# Can also be specified via environment variable `SSO_OIDC_CLIENT_SECRET`. 493#client_secret = 494 495# Can also be specified via environment variable `SSO_OIDC_ISSUER`. 496#issuer = 497 498# Can also be specified via environment variable `SSO_OIDC_DISPLAY_NAME`. 499#display_name = 500 501[sso.apple] 502# Can also be specified via environment variable `SSO_APPLE_ENABLED`. 503# Default value: false 504#enabled = false 505 506# Can also be specified via environment variable `SSO_APPLE_CLIENT_ID`. 507#client_id = 508 509# Can also be specified via environment variable `SSO_APPLE_TEAM_ID`. 510#team_id = 511 512# Can also be specified via environment variable `SSO_APPLE_KEY_ID`. 513#key_id = 514 515# Can also be specified via environment variable `SSO_APPLE_PRIVATE_KEY`. 516#private_key = 517 518[moderation] 519# External report-handling service URL. 520# 521# Can also be specified via environment variable `REPORT_SERVICE_URL`. 522#report_service_url = 523 524# DID of the external report-handling service. 525# 526# Can also be specified via environment variable `REPORT_SERVICE_DID`. 527#report_service_did = 528 529[import] 530# Whether the PDS accepts repo imports. 531# 532# Can also be specified via environment variable `ACCEPTING_REPO_IMPORTS`. 533# 534# Default value: true 535#accepting = true 536 537# Maximum allowed import archive size in bytes (default 1 GiB). 538# 539# Can also be specified via environment variable `MAX_IMPORT_SIZE`. 540# 541# Default value: 1073741824 542#max_size = 1073741824 543 544# Maximum number of blocks allowed in an import. 545# 546# Can also be specified via environment variable `MAX_IMPORT_BLOCKS`. 547# 548# Default value: 500000 549#max_blocks = 500000 550 551# Skip CAR verification during import. Only for development/debugging. 552# 553# Can also be specified via environment variable `SKIP_IMPORT_VERIFICATION`. 554# 555# Default value: false 556#skip_verification = false 557 558[scheduled] 559# Interval in seconds between scheduled delete checks. 560# 561# Can also be specified via environment variable `SCHEDULED_DELETE_CHECK_INTERVAL_SECS`. 562# 563# Default value: 3600 564#delete_check_interval_secs = 3600 565 566# Interval in seconds between data file compaction scans (tranquil-store only). 567# Set to 0 to disable. 568# 569# Can also be specified via environment variable `COMPACTION_INTERVAL_SECS`. 570# 571# Default value: 3600 572#compaction_interval_secs = 3600 573 574# Liveness ratio threshold below which a data file is compacted (0.0-1.0). 575# 576# Can also be specified via environment variable `COMPACTION_LIVENESS_THRESHOLD`. 577# 578# Default value: 0.7 579#compaction_liveness_threshold = 0.7 580 581# Grace period in milliseconds before a zero-refcount block can be removed by compaction. 582# 583# Can also be specified via environment variable `COMPACTION_GRACE_PERIOD_MS`. 584# 585# Default value: 600000 586#compaction_grace_period_ms = 600000 587 588# Interval in seconds between reachability walk runs (tranquil-store only). 589# Set to 0 to disable. Default: weekly. 590# 591# Can also be specified via environment variable `REACHABILITY_WALK_INTERVAL_SECS`. 592# 593# Default value: 604800 594#reachability_walk_interval_secs = 604800 595 596# Interval in seconds between continuous archival passes (tranquil-store only). 597# Sealed eventlog segments are copied to the archival destination each tick. 598# Set to 0 to disable. Default: 60 seconds. 599# 600# Can also be specified via environment variable `ARCHIVAL_INTERVAL_SECS`. 601# 602# Default value: 60 603#archival_interval_secs = 60 604 605# Archival destination directory for sealed eventlog segments. 606# If unset, archival is disabled. 607# 608# Can also be specified via environment variable `ARCHIVAL_DEST_DIR`. 609#archival_dest_dir = 610 611# Maximum age of events retained in the eventlog before pruning. 612# Per the atproto firehose spec, the relay backfill window only needs 613# to cover "hours or days". 614# 615# Can also be specified via environment variable `EVENT_RETENTION_MAX_AGE_SECS`. 616# 617# Default value: 604800 618#event_retention_max_age_secs = 604800 619 620# Interval in seconds between event retention prune passes. 621# Set to 0 to disable. 622# 623# Can also be specified via environment variable `EVENT_RETENTION_INTERVAL_SECS`. 624# 625# Default value: 3600 626#event_retention_interval_secs = 3600