Single-host Docker production
Applies toAlpha
This path runs OpenRUM and its four data services on one Linux host. It uses a separate Compose file from the one used for local development: no Demo seeding, APP_ENV=production, required private credentials, no published database ports, and Caddy for automatic HTTPS. Kubernetes/Helm remains the recommended path when you need multiple application nodes or planned scaling.
-
Prepare the host and domain
Section titled “Prepare the host and domain”Use a Linux server with Docker Engine, Compose v2 and enough CPU, RAM and SSD space for your measured event rate and retention. Use capacity planning rather than treating one example machine size as a guarantee. Point a public DNS name at the server and allow inbound TCP
80/443and UDP443. Caddy obtains and renews the certificate; no Traefik installation is involved. Keep SSH limited to administrators, and arrange an encrypted off-host backup destination.Check:
docker info,docker compose versionand DNS resolution succeed. Ports80and443are not already occupied. Caddy needs public reachability for certificate issuance; see its HTTPS requirements. -
Get a pinned OpenRUM revision and configure secrets
Section titled “Get a pinned OpenRUM revision and configure secrets”Clone the repository and check out a reviewed release tag or commit. Do not deploy a moving branch tip. From the repository root:
Terminal window # Copy the environment template; edit only this private file from now oncp deploy/compose/.env.production.example deploy/compose/.env.production# Readable by your user only, because it holds passwordschmod 600 deploy/compose/.env.production# Generate one random secret; run this three times, one result per variableopenssl rand -hex 24Run the last command three times and put the independent results into
POSTGRES_PASSWORD,CLICKHOUSE_PASSWORDandBOOTSTRAP_TOKENin.env.production. SetOPENRUM_DOMAINto the public DNS name. SetOPENRUM_IMAGEto a tag identifying the checked-out revision, for exampleopenrum-production:0.1.0. The passwords use hex so they can be embedded safely in the internal database DSNs. Never commit or send this file; preserve an encrypted copy separately from the Docker volumes.If
172.30.77.0/24overlaps your host network, changeOPENRUM_EDGE_SUBNETand the containedOPENRUM_EDGE_IPtogether. Ingest trusts only that Caddy address for client-IP rate limiting.Every other variable has a default. The Docker configuration page lists them all, including the optional Source Map storage and disk-pressure settings.
-
Build and validate before opening the site
Section titled “Build and validate before opening the site”Terminal window # Validate the Compose file and variables; an empty required value fails here, and success prints nothingdocker compose --env-file deploy/compose/.env.production \-f deploy/compose/production.compose.yml config --quiet# Build the application image that API, Ingest, Consumer, Worker, Web and migrations sharedocker compose --env-file deploy/compose/.env.production \-f deploy/compose/production.compose.yml build migrateThe build tags one application image for API, Ingest, Consumer, Worker, Web and migrations. Other services never pull an unknown application image implicitly. Check available disk space before building; for a registry-based workflow, load or pull a reviewed image under the exact tag in
OPENRUM_IMAGEfirst. -
Start and verify
Section titled “Start and verify”Terminal window # Start the whole stack in the background and wait until every service is healthydocker compose --env-file deploy/compose/.env.production \-f deploy/compose/production.compose.yml up -d --wait# Check readiness through your public domain; replace the example domain with yourscurl --fail https://rum.example.com/health/readyReplace the example domain with your own. The one-time
migrateandkafka-initservices should complete successfully; the application and four data services should be healthy. Only Caddy publishes host ports. If the TLS check fails, inspectedgelogs and confirm DNS and ports80/443before using a browser warning bypass. -
Create the first administrator and send a test event
Section titled “Create the first administrator and send a test event”Open
https://<your-domain>/setup. Enter your organization, administrator details and theBOOTSTRAP_TOKENfrom the private env file. After the first user is created, setup closes. Create a project, allow your application’s Origin, install the SDK using its DSN and verify one event in the Console. There is no Demo account or synthetic production data.Before real traffic, run the backup and restore procedure on a replacement host and set up monitoring for disk pressure and Kafka lag.
Release Alpha · commit local