docs/developer/deployment/render.mdx
The fastest way to get Spree running on Render:
This creates all required services automatically:
The database is seeded on first deploy. Your store is ready in a few minutes.
If you need to customize the backend (add gems, models, etc.), start from the Spree Starter template:
Go to spree/spree-starter and click Use this template > Create a new repository
Clone your new repository and make your changes
In the Render dashboard, click New > Blueprint and select your repository
Render reads the render.yaml from your repo and creates all services. Review and click Deploy Blueprint.
The included render.yaml handles:
bundle install, asset precompilation, db:prepare, db:seed/upSECRET_KEY_BASEAccess your admin panel at:
https://<your-app-name>.onrender.com/admin
Default credentials are created during db:seed. Change them immediately after first login.
Render sets DATABASE_URL, REDIS_URL, and SECRET_KEY_BASE automatically from the blueprint. For additional configuration (SMTP, file storage, Sentry, etc.), see Environment Variables.
The free/starter plans work for trying Spree. For production workloads, we recommend:
| Service | Plan | Resources | Auto-scaling |
|---|---|---|---|
| Web | Pro | 4 GB RAM, 2 CPU | 1–2 instances |
| Worker | Standard | 2 GB RAM, 1 CPU | — |
| PostgreSQL | Pro 4 GB | 4 GB RAM, 1 CPU | — |
| Redis (jobs) | Standard | 1 GB RAM | — |
| Redis (cache) | Standard | 1 GB RAM | — |
To enable auto-scaling, add this to the web service in your render.yaml:
- type: web
name: spree
plan: pro
scaling:
minInstances: 2
maxInstances: 3
targetMemoryPercent: 80
targetCPUPercent: 80
Render provides ephemeral storage — uploaded files (product images, etc.) won't persist across deploys. Set up cloud storage:
Before going to production: