---
title: "Deploy Saleor"
description: "Saleor 3.23: headless GraphQL commerce API with the admin dashboard."
category: "Other"
url: https://railway.com/deploy/saleor-1
---

# Deploy Saleor

Saleor 3.23: headless GraphQL commerce API with the admin dashboard.

**[Deploy Saleor on Railway](https://railway.com/template/saleor-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/saleor-1/manifest.json

- **Creator:** Agaz Self-Host
- **Category:** Other

## Template content

### dashboard https://raw.githubusercontent.com/saleor/saleor-dashboard/3.23.34/public/favicons/android-chrome-512x512.png

- **Image:** ghcr.io/saleor/saleor-dashboard:3.23.34
- **Health check:** /dashboard/
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

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

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

### api https://raw.githubusercontent.com/saleor/saleor-dashboard/3.23.34/public/favicons/android-chrome-512x512.png

- **Image:** ghcr.io/saleor/saleor:3.23.36
- **Start command:** `sh -c 'printf "%s\n" "$SALEOR_BOOT" > /tmp/boot.sh && exec sh /tmp/boot.sh'`
- **Health check:** /health/
- **Public domain:** Yes

## Documentation

# Deploy and Host Saleor on Railway

Saleor is a headless, GraphQL-first commerce platform written in Python. It handles products, variants, multiple channels, currencies and warehouses, checkout, orders, promotions, gift cards and payments through apps and webhooks, and comes with a React admin dashboard. It is a composable alternative to Shopify Plus and Medusa.

## About Hosting Saleor

This template runs the official `ghcr.io/saleor/saleor:3.23.36` API and `saleor-dashboard:3.23.34` with Railway Postgres and Redis. The API service also runs the Celery worker and scheduler, because Saleor signs tokens and webhooks with an RSA key that both must share; the key is generated on first boot and kept on the API's volume with media uploads. Migrations run on every start, and a staff admin is created from `DJANGO_SUPERUSER_EMAIL` and a generated password. CORS allows the dashboard's domain. The stack needs roughly 1 GB of RAM. Connect a storefront, such as Saleor's Next.js starter, to the GraphQL endpoint.

## Common Use Cases

- A headless commerce backend for a custom storefront
- Multi-channel, multi-currency catalogs and orders
- Extending commerce with apps and webhooks

## Dependencies for Saleor Hosting

- `ghcr.io/saleor/saleor:3.23.36` and `ghcr.io/saleor/saleor-dashboard:3.23.34` (official images)
- Railway Postgres and Redis
- A Railway volume at `/app/media` on the API

### Deployment Dependencies

- [Saleor documentation](https://docs.saleor.io/)
- [Saleor 3.23.36 release](https://github.com/saleor/saleor/releases/tag/3.23.36)
- [Saleor environment variables](https://docs.saleor.io/setup/configuration)

### Implementation Details

| Service | Source | Networking | Storage |
| --- | --- | --- | --- |
| api | `ghcr.io/saleor/saleor:3.23.36` (uvicorn + Celery) | public domain on 8000 | volume at `/app/media` |
| dashboard | `ghcr.io/saleor/saleor-dashboard:3.23.34` | public domain on 80 | none |
| Postgres | Railway Postgres | private | Railway volume |
| Redis | Railway Redis | private | Railway volume |

Open `https:///dashboard/` and sign in with the admin email and password. The GraphQL endpoint is `https:///graphql/`.

| Variable (api) | Default | Purpose |
| --- | --- | --- |
| `DJANGO_SUPERUSER_EMAIL` | `admin@example.com` | Staff admin created on first boot |
| `DJANGO_SUPERUSER_PASSWORD` | generated | Its password |
| `SECRET_KEY` | generated | Django secret |
| `ALLOWED_CLIENT_HOSTS` | dashboard domain | CORS origins |
| `SALEOR_BOOT` | start script | Key generation, migrations, admin, worker and server |

Notes:

- The RSA key lives at `/app/media/.rsa_private_key.pem`; keep the volume, or existing tokens and webhook signatures stop verifying.
- Configure `EMAIL_URL` for order and account emails.

This is a community-maintained deployment package and does not imply affiliation with or endorsement by Saleor Commerce.

## Why Deploy Saleor on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Saleor on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


## 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-1
