Environment Variables
Core backend
PROXY_ENCRYPTION_KEY: required encryption key for stored proxy secrets.JWT_SECRET: required JWT signing key.JWT_TTL_MINUTES(default10080, allowed15..10080): access token lifetime.LOG_LEVEL(defaultinfo): backend logger level (debug,info,warn,error,fatal).BACKEND_PORT(default5656): API listen port.backend-port: legacy fallback env for API listen port.
Runtime mode and strict validation
Production mode can be inferred from any of:
APP_ENVENVIRONMENTGO_ENVMAGPIE_ENV
Values prod or production are treated as production.
STRICT_SECRET_VALIDATION: override strict startup validation forJWT_SECRETandPROXY_ENCRYPTION_KEY.
API hardening
CORS_ALLOWED_ORIGINS(defaulthttp://localhost:5050,http://127.0.0.1:5050,http://localhost:4200,http://127.0.0.1:4200): comma-separated CORS origin allowlist. Use*only in trusted environments.SERVER_READ_TIMEOUT_SECONDS(default30)SERVER_READ_HEADER_TIMEOUT_SECONDS(default10)SERVER_WRITE_TIMEOUT_SECONDS(default30)SERVER_IDLE_TIMEOUT_SECONDS(default120)SERVER_SHUTDOWN_TIMEOUT_SECONDS(default20): graceful shutdown timeout used by the API server.API_UPLOAD_MAX_BODY_BYTES(default10485760, 10 MiB): max request size for multipart upload endpoints.API_JSON_MAX_BODY_BYTES(default1048576, 1 MiB): max request size for JSON endpoints.API_MULTIPART_MEMORY_BYTES(default1048576, 1 MiB): in-memory budget used by multipart parsing before temp-file spillover.SECURITY_HEADERS_ENABLED(defaulttrue): enables base response security headers.
Trusted proxy and outbound safety
TRUSTED_PROXY_CIDRS: comma-separated trusted reverse-proxy CIDRs used forX-Forwarded-For/X-Real-IPparsing.ALLOW_PRIVATE_NETWORK_EGRESS(defaultfalse): allows outbound HTTP targets in private/loopback/reserved ranges (disabled by default for safety).
Auth and registration controls
DISABLE_PUBLIC_REGISTRATION: disable public/api/register.ENABLE_PUBLIC_FIRST_ADMIN_BOOTSTRAP: allow first-admin creation through public registration.ALLOW_INSECURE_REGISTRATION_DEFAULTS: local-only helper for relaxed registration defaults.AUTH_REVOCATION_FAIL_OPEN(defaulttrue): when Redis revocation store is unavailable, allow already-signed/non-expired JWTs.
Auth route rate limiting:
AUTH_REQUEST_RATE_LIMIT_WINDOW_SECONDS(default60)AUTH_LOGIN_RATE_LIMIT_PER_WINDOW(default60)AUTH_REGISTER_RATE_LIMIT_PER_WINDOW(default20)AUTH_LOGIN_FAILURE_WINDOW_SECONDS(default900)AUTH_LOGIN_FAILURE_LIMIT_PER_IP(default30)AUTH_LOGIN_FAILURE_LIMIT_PER_EMAIL(default10)AUTH_RATE_LIMIT_LOCAL_FALLBACK_MAX_KEYS(default10000)
Observability and health
ALLOW_PUBLIC_OBSERVABILITY_ENDPOINTS(default non-productiontrue, productionfalse): controls public access to/healthz,/readyz,/metrics.OBSERVABILITY_TOKEN: token accepted viaX-Observability-Tokenwhen public observability access is disabled.READYZ_ALLOW_REDIS_DEGRADED(defaultfalse): allowsreadyzto return degraded-ready status when Redis is unavailable.
GraphQL guards
GRAPHQL_MAX_DEPTH(default12)GRAPHQL_MAX_FIELDS(default250)GRAPHQL_MAX_QUERY_BYTES(default16384)GRAPHQL_ALLOW_INTROSPECTION(defaultfalse)
Redis
REDIS_MODE(defaultsingle):singleorsentinel.REDIS_URL(defaultredis://localhost:8946): Redis URL for single mode.redisUrl: legacyREDIS_URLfallback.REDIS_PASSWORD: optional Redis password.REDIS_CONNECT_RETRY_BACKOFF_MS(default5000): reconnect defer/backoff duration.
Sentinel mode:
REDIS_MASTER_NAMEREDIS_SENTINEL_ADDRSREDIS_SENTINEL_PASSWORD
In default Docker Compose single-mode deployment, backend points to redis://redis:6379.
Database
DB_HOST(defaultlocalhost)DB_PORT(default5434)DB_NAME(defaultmagpie)DB_USERNAME(defaultmagpie_userin Docker Compose): PostgreSQL username.DB_PASSWORD(defaultChangeMeToAStrongDbPasswordin Docker Compose): PostgreSQL password.DB_SSLMODE(defaultrequire): PostgreSQL TLS mode (disable,allow,prefer,require,verify-ca,verify-full).DB_AUTO_MIGRATE(default localtrue, production-oriented deployments often setfalse)DB_MAX_OPEN_CONNS(default32)DB_MAX_IDLE_CONNS(defaultDB_MAX_OPEN_CONNS)DB_CONN_MAX_LIFETIMEseconds (default300)DB_CONN_MAX_IDLE_TIMEseconds (default60)
Rotating proxy listeners
ROTATING_PROXY_PORT_START(default20000)ROTATING_PROXY_PORT_END(default20100)ROTATING_PROXY_SYNC_INTERVAL_SECONDS(default10): interval used by each backend instance to reconcile local rotating listeners.ROTATING_PROXY_UPSTREAM_TIMEOUT_MSROTATING_PROXY_HANDSHAKE_TIMEOUT_MSROTATING_PROXY_MAX_REQUEST_BODY_BYTESROTATING_PROXY_SOCKS_MAX_CONCURRENT_CONNECTIONS
Multi-instance identity:
MAGPIE_INSTANCE_ID(default hostname): stable identifier for backend instance ownership.MAGPIE_INSTANCE_ID_FILE: optional file path fallback source for instance id.MAGPIE_INSTANCE_NAME(defaultMAGPIE_INSTANCE_ID): human-readable instance label.MAGPIE_INSTANCE_REGION(defaultUnknown): region label.MAGPIE_INSTANCE_SCOPE: optional scope label.
Optional HTTP/3 TLS files for rotating listeners:
ROTATING_PROXY_HTTP3_TLS_CERT_FILEROTATING_PROXY_HTTP3_TLS_KEY_FILE
Queue and startup toggles
PROXY_QUEUE_SHARDSSCRAPE_QUEUE_SHARDSSTARTUP_QUEUE_BOOTSTRAP_ASYNC
Proxy statistics and timeline maintenance
Statistics ingestion/stream/retention controls include:
PROXY_STATISTICS_RETENTION_DAYSPROXY_STATISTICS_RESPONSE_RETENTION_DAYSPROXY_STATISTICS_RETENTION_INTERVALPROXY_STATISTICS_RETENTION_INTERVAL_MINUTESPROXY_STATISTICS_RETENTION_BATCH_SIZEPROXY_STATISTICS_RETENTION_MAX_BATCHESPROXY_STATISTICS_RETENTION_WORKERSPROXY_STATISTICS_RETENTION_MAX_RUN_DURATIONPROXY_STATISTICS_RETENTION_DROP_PARTITIONSPROXY_STATISTICS_RETENTION_MAX_PARTITION_DROPSPROXY_STATISTICS_AUTO_PARTITION_MIGRATIONPROXY_STATISTICS_PARTITION_PRECREATE_MONTHSPROXY_STATISTICS_PARTITION_PAST_MONTHSPROXY_STATISTICS_INGEST_WORKERSPROXY_STATISTICS_REDIS_STREAM_ENABLEDPROXY_STATISTICS_REDIS_STREAM_KEYPROXY_STATISTICS_REDIS_STREAM_GROUPPROXY_STATISTICS_REDIS_STREAM_MAXLENPROXY_STATISTICS_REDIS_STREAM_OVERLOAD_POLICYPROXY_STATISTICS_TENANT_OVERLOAD_POLICIESPROXY_STATISTICS_PRODUCER_BLOCK_TIMEOUT_MS
History/snapshot retention controls:
PROXY_HISTORY_RETENTION_DAYSPROXY_SNAPSHOT_RETENTION_DAYSPROXY_TIMELINE_RETENTION_INTERVALPROXY_TIMELINE_RETENTION_INTERVAL_MINUTESPROXY_TIMELINE_RETENTION_BATCH_SIZEPROXY_TIMELINE_RETENTION_MAX_BATCHESPROXY_TIMELINE_RETENTION_MAX_RUN_DURATION
Orphan cleanup controls:
PROXY_ORPHAN_CLEAN_INTERVALduration string (example30m)PROXY_ORPHAN_CLEAN_INTERVAL_MINUTESinteger fallback (default60)
Worker/tuning envs
SCRAPER_PAGE_POOL_MIN_CAPACITYSCRAPER_PAGE_POOL_MAX_CAPACITYSCRAPER_POST_PROCESS_QUEUE_CAPACITYSCRAPER_POST_PROCESS_WORKERSSCRAPER_CAPTURED_MAX_RESPONSE_BODY_BYTESSCRAPER_FALLBACK_MAX_RESPONSE_BODY_BYTESCHECKER_DEFAULT_REQUEST_TIMEOUT_MSCHECKER_MAX_RESPONSE_BODY_BYTES
Releases endpoint
GITHUB_TOKEN: optional token for higher GitHub API quota on/api/releases.
Docker Compose resources
BACKEND_CPU_LIMIT(default2.00)BACKEND_MEMORY_LIMIT(default1G)BACKEND_CPU_RESERVATION(default0.50)BACKEND_MEMORY_RESERVATION(default256M)FRONTEND_CPU_LIMIT(default1.00)FRONTEND_MEMORY_LIMIT(default512M)FRONTEND_CPU_RESERVATION(default0.25)FRONTEND_MEMORY_RESERVATION(default128M)POSTGRES_CPU_LIMIT(default1.50)POSTGRES_MEMORY_LIMIT(default1G)POSTGRES_CPU_RESERVATION(default0.50)POSTGRES_MEMORY_RESERVATION(default256M)REDIS_CPU_LIMIT(default1.00)REDIS_MEMORY_LIMIT(default512M)REDIS_CPU_RESERVATION(default0.25)REDIS_MEMORY_RESERVATION(default128M)
Installer/updater script envs
MAGPIE_INSTALL_DIRMAGPIE_IMAGE_TAGMAGPIE_REPO_OWNERMAGPIE_REPO_NAMEMAGPIE_REPO_REFMAGPIE_COMPOSE_URLMAGPIE_ENV_EXAMPLE_URLMAGPIE_FORCE