Skip to main content

Environment variables

Most installations need only POSTGRES_PASSWORD, REDIS_PASSWORD, and ALLOWED_ORIGINS. Copy compose/.env.example to the repository-root .env; use compose/.env.full.example only as an override template. The standard production container reads that file directly, so supported optional values do not need matching entries in Compose.

Standard production values

VariableRequiredDefaultPurpose
POSTGRES_PASSWORDYesNonePassword shared by TimescaleDB and the app's generated internal connection URL. Any dotenv-safe value is URL-encoded by the app.
REDIS_PASSWORDYesNonePassword shared by Redis and the app's generated internal connection URL.
ALLOWED_ORIGINSYesNone in productionComma-separated exact HTTPS browser origins. Paths, queries, fragments, and HTTP origins are rejected in production.
POSTGRES_USERNoriviamigoDatabase role used by production Compose.
DATABASE_URLNoBuilt from POSTGRES_USER and POSTGRES_PASSWORDComplete PostgreSQL URL. Overrides the standard Compose-derived URL and is required for direct API runs without POSTGRES_PASSWORD.
REDIS_URLNoBuilt from REDIS_PASSWORDComplete Redis URL using the Redis ACL default user. Overrides the standard Compose-derived URL and is required for direct API runs without REDIS_PASSWORD.

Image and Compose values

VariableDefaultPurpose
RIVIAMIGO_IMAGE_REGISTRYghcr.io/bballdavisRegistry namespace containing the unified riviamigo image.
IMAGE_TAGlatestImage tag; use a Calendar Version for repeatable deployments.
RIVIAMIGO_ORIGIN_PORT8080Host port mapped to the unified app container. Protect it with host firewall rules when using a remote gateway.
RIVIAMIGO_ENV_FILE../.env relative to compose/docker-compose.ymlAlternate dotenv file injected into the app container. Restore and verification scripts set this automatically.

Application security and runtime

VariableDefaultPurpose
JWT_SECRETGenerated and stored in PostgreSQLRSA private signing key. If overridden, the public and age keys must also be supplied.
JWT_PUBLIC_KEYGenerated and stored in PostgreSQLRSA public verification key. Supply only as part of the complete three-key override.
AGE_ENCRYPTION_KEYGenerated and stored in PostgreSQLage X25519 identity used to encrypt provider credentials. Supply only as part of the complete three-key override.
RIVIAMIGO_ENVproductionEnables production configuration validation. Use development only for local development.
PORT3001Internal API listener port. The unified production nginx expects 3001.
RUST_LOGriviamigo_api=debug,tower_http=infoRust tracing filter. Structured [riviamigo][LEVEL] key-value logs are written to stdout.
TZUTCDocker/container timezone used by nginx and other runtime processes. This does not control Riviamigo’s user-facing application timezone, which is configured in Settings → Units.
COOKIE_INSECUREUnsetAllows non-Secure cookies for local development. Any value enables it; production rejects it.
VEHICLE_IMAGE_CACHE_DIRPlatform cache directory; /data/cache/riviamigo/vehicle-images in the production imagePersistent local artwork mirror. Standard Compose does not need to set it.
RIVIAMIGO_DATA_DIR../data relative to compose/docker-compose.ymlOverrides the host directory used for PostgreSQL, Redis, backups, and cache data. Primarily useful for isolated verification stacks.
BACKUP_DRIVERpg_dumpRecovery-package database exporter. Other values are rejected for full recovery packages.
BACKUP_ARTIFACT_DIR/backupsDirectory containing generated, imported, safety, and restore-job recovery artifacts. Keep it on persistent storage with capacity for the uploaded package plus a required safety backup.
BACKUP_POLL_INTERVAL_SECONDS60Number of seconds between backup-scheduler checks.
RESTORE_AGENT_URLhttp://127.0.0.1:3002Internal unified-container restore supervisor URL. Do not expose it as a public service.
RESTORE_AGENT_KEY_FILE/backups/.restore-agent-keyInternal capability key generated by the production entrypoint. Keep it inside the persistent backup volume.
S3_ENDPOINTUnsetOptional fallback endpoint when the saved S3 endpoint is empty. Custom endpoints use path-style addressing.
S3_ACCESS_KEYUnsetOptional fallback access key used only when a complete saved credential pair is unavailable.
S3_SECRET_KEYUnsetOptional fallback secret key paired with S3_ACCESS_KEY; never returned by the API or stored in recovery packages.

Generated keys are part of the PostgreSQL backup and therefore survive restore. Supplying a new explicit age key to an existing database can make stored encrypted credentials unreadable; treat key changes as a migration.

Rivian telemetry behavior

VariableDefaultPurpose
RIVIAN_GRAPHQL_GATEWAY_URLRivian production GraphQL gatewayDiagnostic upstream override. Normal installations should not set it.
RIVIAN_WS_RECONNECT_INITIAL_SECONDS10Initial websocket reconnect delay.
RIVIAN_WS_RECONNECT_MAX_SECONDS900Maximum websocket reconnect delay.
RIVIAN_RAW_EVENT_RETENTION_DAYS7Raw telemetry retention window in days.
RIVIAN_PERSIST_RAW_EVENTStruePersists raw Rivian events for diagnostics and repair.
RIVIAN_SUPPRESS_DUPLICATE_TELEMETRYtrueAvoids storing unchanged duplicate telemetry samples.

API rate limits

All values must be positive integers. Per-minute settings control sustained traffic; burst settings control short spikes.

VariableDefault
RATE_LIMIT_AUTH_PUBLIC_PER_MINUTE30
RATE_LIMIT_AUTH_PUBLIC_BURST10
RATE_LIMIT_AUTH_METADATA_PER_MINUTE1200
RATE_LIMIT_AUTH_METADATA_BURST120
RATE_LIMIT_AUTH_READ_PER_MINUTE900
RATE_LIMIT_AUTH_READ_BURST180
RATE_LIMIT_AUTH_WRITE_PER_MINUTE240
RATE_LIMIT_AUTH_WRITE_BURST60
RATE_LIMIT_HEAVY_READ_PER_MINUTE300
RATE_LIMIT_HEAVY_READ_BURST90

Development and frontend values

These values do not change the standard production topology.

VariableDefaultScope
DEV_API_PORTAutomatically selected near 3001Host-run API port for pnpm dev:stack.
DEV_WEB_PORTAutomatically selected near 5173Vite development port.
DEV_POSTGRES_PORTAutomatically selected near 5432Development TimescaleDB host port.
DEV_REDIS_PORTAutomatically selected near 6379Development Redis host port.
DEV_GARAGE_PORTAutomatically selected near 3900Development Garage S3 API port.
DEV_GARAGE_ADMIN_PORTAutomatically selected near 3903Development Garage administration port.
DEV_WEB_ORIGINSActive Vite originDevelopment CORS origins.
DEV_COMPOSE_PROJECT_NAMECheckout-derivedDevelopment Compose isolation name.
DEV_DATABASE_READY_TIMEOUT_SECONDS600Maximum wait for TimescaleDB startup or crash recovery before pnpm dev:stack fails. Minimum 60.
DEV_CARGO_BUILD_JOBS4 on Windows; unused elsewhereMaximum concurrent Cargo jobs while Windows pnpm dev:stack builds the API and restore supervisor. Set a positive integer to override.
COMPOSE_PROJECT_NAMECompose-derivedOptional general Compose project-name override.
VITE_RIVIAMIGO_API_BASE_URLCurrent browser origin in productionPreferred frontend API base URL override.
VITE_RIVIAMIGO_DEV_API_KEYUnsetDevelopment-only integration key used by supported local tooling.
VITE_RIVIAMIGO_RUN_LIVE_CONTRACT0Enables explicitly requested live frontend contract tests.
VITE_API_URLUnsetLegacy frontend API URL compatibility override.
VITE_WS_URLUnsetLegacy frontend websocket URL compatibility override.