> ## Documentation Index
> Fetch the complete documentation index at: https://spreecommerce.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Render

> Deploy Spree to Render with one click.

## One-Click Deploy

The fastest way to get Spree running on Render:

[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/spree/spree-starter)

This creates all required services automatically:

* **Web** — Rails app serving the API and admin panel
* **Worker** — Sidekiq for background jobs
* **PostgreSQL** — database
* **Redis** — caching, jobs, Action Cable

The database is seeded on first deploy. Your store is ready in a few minutes.

## Prerequisites

* [Render account](https://render.com) with a credit card on file
* [GitHub account](https://github.com)

## Custom Deployment

If you need to customize the backend (add gems, models, etc.), start from the [Spree Starter](https://github.com/spree/spree-starter) template:

1. Go to [spree/spree-starter](https://github.com/spree/spree-starter) and click **Use this template** > **Create a new repository**

2. Clone your new repository and make your changes

3. In the Render dashboard, click **New** > **Blueprint** and select your repository

4. Render reads the `render.yaml` from your repo and creates all services. Review and click **Deploy Blueprint**.

The included [`render.yaml`](https://github.com/spree/spree-starter/blob/main/render.yaml) handles:

* Build: `bundle install`, asset precompilation, `db:prepare`, `db:seed`
* Web: Puma with health check on `/up`
* Worker: Sidekiq with shared `SECRET_KEY_BASE`
* PostgreSQL 18 and Redis

## After Deployment

### Admin Dashboard

Access your admin panel at:

```
https://<your-app-name>.onrender.com/admin
```

Default credentials are created during `db:seed`. Change them immediately after first login.

### Environment Variables

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](/developer/deployment/environment_variables).

## Production Sizing

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`:

```yaml theme={"theme":"night-owl"}
- type: web
  name: spree
  plan: pro
  scaling:
    minInstances: 2
    maxInstances: 3
    targetMemoryPercent: 80
    targetCPUPercent: 80
```

## Next Steps

Render provides ephemeral storage — uploaded files (product images, etc.) won't persist across deploys. Set up cloud storage:

* [Asset Storage](/developer/deployment/assets) (Amazon S3 / Cloudflare R2)

Before going to production:

* [Set environment variables](/developer/deployment/environment_variables) (SMTP, SSL, etc.)
* [Configure CDN](/developer/deployment/cdn)
* [Configure caching](/developer/deployment/caching)
