Run It Anywhere
Spree ships as a standard Docker image, which means it runs wherever containers run:- Public cloud — AWS, Google Cloud, Azure, or any provider with container hosting
- Platform-as-a-Service — Render, Railway, Fly.io, and similar platforms; deploy from your repository with a Blueprint or a few clicks
- VPS or bare metal — a single machine with Docker installed is a complete production environment
- Kubernetes — the image is stateless and horizontally scalable, so it drops into any cluster
- On-premise and intranet — Spree has no phone-home dependencies, so it runs in private networks and air-gapped environments where SaaS commerce platforms simply can’t
Any Database
Spree runs on all major relational databases, including the managed and serverless flavors cloud providers offer:
See Database Configuration for details.
Web and Worker
A Spree deployment has two kinds of work: serving requests (the web process) and everything that happens in the background — sending emails, processing images, delivering webhooks, importing catalogs (the worker). You can run them in two modes:- Combined (the default) — the web container also processes background jobs. One container is the whole application. This is how every fresh deployment starts, and it comfortably serves most stores.
- Split — when job volume grows, move background processing into a dedicated worker service. It’s the same docker image with a different start command and one environment variable (
SOLID_QUEUE_IN_PUMA=falseon web) — no rebuild, no code changes. Recommended for high volume retailers, multi-tenant apps and marketplaces with a lot of vendors using our Shopify sync.
Single-Node vs Distributed
Spree is API-first, which gives you a real choice of shape: Single-node — one container serves the API, the admin dashboard, and background jobs, with one database behind it. Simplest to operate, cheapest to run, and what create-spree-app projects deploy by default. For headless setups with a mobile app or a custom frontend, this is often all the infrastructure you ever need. Distributed — because the storefront and admin talk to Spree exclusively through its APIs, each surface can be deployed and scaled on its own:- The API scales horizontally behind a load balancer
- The admin dashboard is a static React app that can be served from the API container or any static host
- Workers scale independently of web traffic
- The storefront (Next.js) deploys to Vercel or any Node.js host, rendering at the edge close to your customers
Storefront Deployment
The Next.js storefront is a separate application with its own deployment lifecycle — typically on Vercel, but any Node.js host or Docker environment works. It connects to your Spree API with a publishable key and can be redeployed independently of the backend. See Storefront Deployment for the full guide.Provider Guides
Step-by-step guides for specific platforms:AWS
A single EC2 instance + RDS to start, or ECS Fargate with CI/CD and auto-scaling — same image, either way.
Render
One-click Blueprint: a Docker web service and managed PostgreSQL, built straight from your repository.
Railway (coming soon)
A one-click Railway template is on the way.

