---
title: "Deploy Saleor Backend with Storefront"
description: "Saleor backend services - API, Dashboard, Worker & Scheduler with Store"
category: "Other"
url: https://railway.com/deploy/saleor-backend-with-storefront
---

# Deploy Saleor Backend with Storefront

Saleor backend services - API, Dashboard, Worker & Scheduler with Store

**[Deploy Saleor Backend with Storefront on Railway](https://railway.com/template/saleor-backend-with-storefront)**

- **Creator:** Obuli Sai Naren's Projects
- **Category:** Other
- **Total deploys:** 7

## Template content

### saleor-api https://img.icons8.com/fluency/100/api.png

- **Image:** ghcr.io/saleor/saleor:3.21
- **Public domain:** Yes

### Redis https://devicons.railway.app/i/redis.svg

- **Image:** bitnami/redis:7.2.5

### saleor-dashboard https://img.icons8.com/fluency/100/dashboard-layout.png

- **Image:** ghcr.io/saleor/saleor-dashboard:latest
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:16

### saleor-worker https://img.icons8.com/3d-fluency/100/worker-male--v3.png

- **Image:** ghcr.io/saleor/saleor:3.21
- **Start command:** `celery --app saleor.celeryconf:app worker -E --loglevel=info --concurrency=2 --max-tasks-per-child=100`
- **Public domain:** Yes

### saleor-scheduler https://img.icons8.com/color/100/task--v1.png

- **Image:** ghcr.io/saleor/saleor:3.21
- **Start command:** `celery --app saleor.celeryconf:app beat --scheduler saleor.schedulers.schedulers.DatabaseScheduler`
- **Public domain:** Yes

### storefront https://avatars.githubusercontent.com/u/13796165?s=48&v=4

- **Source:** saleor/storefront

## Documentation

# Deploy and Host Saleor Backend with Storefront on Railway

**What is Saleor Backend with Storefront?**
Saleor is an open-source, headless commerce platform (Django + GraphQL). This template deploys the core API plus Celery worker/scheduler, the Saleor Dashboard (admin), and the classic Saleor Storefront—wired to Postgres and Redis—so you get a full, production-style stack in minutes.

## About Hosting Saleor Backend with Storefront

A typical Saleor deployment consists of multiple services: the API (Django/GraphQL), a Celery worker for background jobs, a Celery beat/scheduler, Redis for queues/cache, Postgres for data, the Dashboard for admin, and a Storefront for a ready-to-use web shop. You’ll configure environment variables, attach persistent storage for Postgres, and (for production) connect object storage for media and an SMTP service for email. Domains/HTTPS, SSO, and observability can be added later as you grow.

## Common Use Cases

* Launch a proof-of-concept or MVP store with a managed Postgres/Redis and a prewired frontend
* Evaluate Saleor’s GraphQL API and Dashboard with a real, multi-service setup
* Stand up a production-ready base, then bring your own custom Storefront/Apps later

## Dependencies for Saleor Backend with Storefront Hosting

* **Infrastructure:** Postgres (v13+), Redis (v6+), persistent volume for DB
* **External services (for production):** S3-compatible object storage for media, SMTP email provider, custom domain &amp; TLS

### Deployment Dependencies

Helpful docs &amp; references:

* Saleor **Overview**: [https://docs.saleor.io/](https://docs.saleor.io/)
* Saleor **Deployment/Running** (Docker &amp; envs): [https://docs.saleor.io/docs/developer/running/](https://docs.saleor.io/docs/developer/running/)
* Saleor **Configuration (env vars)**: [https://docs.saleor.io/docs/developer/configuration/](https://docs.saleor.io/docs/developer/configuration/)
* Saleor **Dashboard**: [https://github.com/saleor/saleor-dashboard](https://github.com/saleor/saleor-dashboard)
* Saleor **Storefront (classic)**: [https://github.com/saleor/storefront](https://github.com/saleor/storefront)

Environment variables you’ll set ( Railway maps `DATABASE_URL` / `REDIS_URL` automatically ):

* `SECRET_KEY` – Django secret
* `ALLOWED_HOSTS` – your domain(s)
* `DATABASE_URL` – PostgreSQL connection string
* `REDIS_URL` – Redis connection string
* `DEFAULT_FROM_EMAIL`, `EMAIL_URL` – SMTP configuration
* `MEDIA_ROOT` / S3 vars for media (e.g., `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_STORAGE_BUCKET_NAME`, `AWS_S3_ENDPOINT_URL`)
* `DASHBOARD_URL`, `STOREFRONT_URL`, `ALLOWED_CLIENT_HOSTS` – for CORS and links from emails

### Implementation Details 

Example `.env` sketch you can adapt on Railway:

```env
SECRET_KEY=generate-a-strong-secret
ALLOWED_HOSTS=yourdomain.com,.yourdomain.com
DATABASE_URL=${{ Postgres.DATABASE_URL }}
REDIS_URL=${{ Redis.REDIS_URL }}

# Email (e.g., Mailgun/Sendgrid)
DEFAULT_FROM_EMAIL=Shop 
EMAIL_URL=smtp://USER:PASS@smtp.provider.com:587

# S3-compatible storage (MinIO, AWS S3, etc.)
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_STORAGE_BUCKET_NAME=saleor-media
AWS_S3_ENDPOINT_URL=https://s3.your-provider.com

# Client URLs
DASHBOARD_URL=https://dashboard.yourdomain.com
STOREFRONT_URL=https://shop.yourdomain.com
ALLOWED_CLIENT_HOSTS=shop.yourdomain.com,dashboard.yourdomain.com
```

Services in this template:

* **saleor-api** (Django/GraphQL)
* **saleor-worker** (Celery)
* **saleor-scheduler** (Celery beat)
* **saleor-dashboard** (admin UI)
* **storefront** (classic Saleor Storefront)
* **redis**, **postgres**

## Why Deploy Saleor Backend with Storefront on Railway?

Railway is a singular platform to deploy your infrastructure stack. By deploying Saleor Backend with Storefront on Railway, you are one step closer to supporting a complete full-stack application with minimal burden.

## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/saleor-backend-with-storefront
