System Requirements
Overview
These are the minimum requirements for running Monospace in production. Sizing covers a single-node deployment — see Scaling for running multiple replicas.
Hardware
Sizing below assumes a single-node deployment and covers the Monospace application container alone. If you run PostgreSQL, RabbitMQ, and Redis on the same host — as in the reference compose file — allocate additional resources for those services.
The disk figure covers the container's own filesystem — the binary, logs, and temp files. It doesn't cover file storage: store assets on an S3-compatible bucket rather than the container's disk. See File / object storage below.
| Minimum | Recommended | |
|---|---|---|
| vCPU | 0.5 | 1 |
| RAM | 1 GB | 2 GB |
| Disk | 20 GB SSD | 50 GB SSD |
Service Dependencies
| Component | Required | Requirement |
|---|---|---|
| Deployment | Required | Docker / Docker Compose. The image is Linux-only, built for linux/amd64 and linux/arm64 — no Windows containers. See the reference compose file. |
| System database | Required | PostgreSQL 14–18, with backups enabled. |
| Event bus | Required | RabbitMQ 3.7.0+ — queues background email delivery (welcome, invite, and password-reset messages) and, in clustered mode, broadcasts metadata changes between replicas. |
| File / object storage | Required | S3-compatible bucket for asset storage — the expected choice for production. Local disk works for single-node use, but the container's disk is ephemeral unless you mount a persistent volume. |
| Email / SMTP | Required | Needed for password-reset and invite emails. |
| TLS / proxy | Required | Monospace doesn't terminate TLS itself. Recommend TLS 1.2+ at the proxy. |
| Secrets / key material | Required | JWT signing keys (Ed25519) and a KMS master key, generated once by the keygen init container into a persistent /keys volume. |
| Cache | Required by default | Redis 7.2+ or Valkey 7.2+. CI tests Redis 7.4 and 8.10 and Valkey 7.2 and 9.1. To run without caching, set MONOSPACE_CACHE__ENABLED |
/keys volume. Losing it makes KMS-encrypted data unrecoverable — there's no restore path.Network & Connectivity
| Component | Direction | Requirement |
|---|---|---|
| Application traffic | Inbound | TCP 8100 by default (MONOSPACE_PORT) — single port serves both the API and Studio's static assets in the production image. |
| SMTP relay | Outbound | To whichever host you configure under MONOSPACE_SYSTEM_EMAILER__HOST |
| Object storage | Outbound | To S3, or an S3-compatible endpoint, if you're not using local disk. |
| Licensing API | Outbound | HTTPS to https://licensing.monospace.io — needed for licensed features to validate. Allowlist this if you're behind an egress firewall. |
| Anonymous usage telemetry | Outbound | HTTPS to https://telemetry.monospace.io/v2/events — sends an install ID, version, a configuration snapshot, and operation counts. Never credentials, connection details, or your data. Allowlist this if you're behind an egress firewall. |
Scaling
Monospace supports both vertical and horizontal scaling. Clustered mode is enabled by default, including on a single replica.
- Vertical — increase vCPU, RAM, or disk on the existing node, per the Hardware table above.
- Horizontal — run multiple replicas in clustered mode:
- Replicas coordinate metadata changes through PostgreSQL and RabbitMQ.
- Local disk file storage is rejected outright in clustered mode unless the path is a shared mount every replica can reach (e.g., NFS). Use S3-compatible object storage instead.
- A release with a destructive migration needs a full cluster restart — otherwise the first replica to pick up the new version migrates the database while the others keep querying a schema that no longer matches.
- Rolling back a release needs a database restore. A replica refuses to start against a system database with a migration newer than the one it knows.
See Horizontal Scaling for shared storage, replica configuration, health checks, and upgrades.
See Also
- Installation — set up Monospace with the reference Docker Compose stack
- Configuration — every environment variable, including the ones referenced above