---
title: "Deploy Vendure | Open Source Shopify Alternative on Railway"
description: "Self-host Vendure: Full e-commerce backend. GraphQL APIs, Worker"
category: "CMS"
url: https://railway.com/deploy/vendure
---

# Deploy Vendure | Open Source Shopify Alternative on Railway

Self-host Vendure: Full e-commerce backend. GraphQL APIs, Worker

**[Deploy Vendure | Open Source Shopify Alternative on Railway on Railway](https://railway.com/template/vendure)**

- **Creator:** Heimdall
- **Category:** CMS
- **Total deploys:** 12

## Template content

### Vendure-Server https://images.saasworthy.com/vendure_31116_logo_1667306570_pcklm.png

- **Source:** https://github.com/praveen-ks-2001/vendure-railway-template
- **Start command:** `node ./dist/index.js`
- **Public domain:** Yes

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

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

### Vendure-Worker https://images.saasworthy.com/vendure_31116_logo_1667306570_pcklm.png

- **Source:** https://github.com/praveen-ks-2001/vendure-railway-template
- **Start command:** `node ./dist/index-worker.js`

## Documentation

![Vendure logo](https://vendure.io/_next/image?url=https%3A%2F%2Fassets.vendure.io%2F1656x828%2F3d30ecfb93%2Fv2-preview-image.png%2Fm%2F1200x675&w=3840&q=75)

# Deploy and Host Vendure

Self-host Vendure — the open-source headless commerce framework built on TypeScript, Node.js, NestJS, and GraphQL. It exposes two GraphQL APIs (Shop API and Admin API) and a built-in React Admin UI, giving you a full e-commerce backend you own and control completely.

This Railway template deploys Vendure end-to-end with three pre-wired services: **Vendure Server** (API + Admin UI), **Vendure Worker** (background jobs), and **PostgreSQL** (persistent storage). The server and worker both build from the official [one-click-deploy](https://github.com/vendurehq/one-click-deploy) repository with all database credentials injected automatically. A volume is attached at `/vendure-assets` for uploaded product images.

![Vendure Railway architecture](https://res.cloudinary.com/asset-cloudinary/image/upload/v1774035618/vendure_railway_deployment_mriyxa.png)

## Getting Started with Vendure on Railway

Once your deployment turns green, navigate to your Railway-generated domain at `/admin` to open the Vendure Admin UI. Log in with the `superadmin` credentials you set via the `SUPERADMIN_USERNAME` and `SUPERADMIN_PASSWORD` environment variables. From the Admin UI you can manage your product catalogue, configure channels, set up payment methods, and create collections. To start building a custom storefront, point your frontend at the Shop API at `/shop-api` — it accepts GraphQL `POST` requests with your queries and mutations.

![Vendure dashboard screenshot](https://res.cloudinary.com/asset-cloudinary/image/upload/v1774035618/vendure_dashboard_oiv4ir.png)

## About Hosting Vendure

Vendure is a developer-first headless commerce framework designed for teams that need full control over their commerce logic without inheriting a monolithic platform's constraints.

**Key features:**
- Dual GraphQL APIs: Shop API for storefronts, Admin API for management
- Built-in React Admin UI served at `/admin`
- Plugin architecture — extend or override any part of the commerce logic
- Background job queue via a dedicated Worker process (search indexing, emails, webhooks)
- TypeScript throughout — full type safety from DB to API
- Supports custom fields, custom entities, and custom resolvers without forking core

The server and worker run as separate Railway services sharing the same Postgres database and codebase. The worker handles async workloads so the server stays responsive under load.

## Why Deploy Vendure on Railway

Deploy Vendure on Railway without touching Docker configs, volume mounts, or service discovery.

- Postgres provisioned and credentials injected automatically
- Persistent volume for product assets, no S3 setup needed to start
- Private networking between server, worker, and database out of the box
- One-click redeploys from your forked GitHub repo
- Managed TLS and Railway-generated domain on the server

## Common Use Cases

- **Multi-channel retail**: Run separate storefronts (web, mobile, B2B) from a single Vendure instance using Channels
- **B2B commerce**: Model custom pricing tiers, bulk ordering, and approval workflows via the plugin system
- **Headless Shopify migration**: Replace Shopify's storefront with a custom frontend powered by Vendure's Shop API
- **Marketplace backend**: Manage multiple vendors with separate inventories under one Admin API

## Dependencies for Vendure

- **Vendure Server** — GitHub: `https://github.com/vendurehq/one-click-deploy`, Node.js 20, port 8080
- **Vendure Worker** — same repo, same image, different start command (`node ./dist/index-worker.js`)
- **PostgreSQL** — `ghcr.io/railwayapp-templates/postgres-ssl:18`

### Environment Variables Reference

| Variable | Description | Required |
|---|---|---|
| `SUPERADMIN_USERNAME` | Admin UI login username | Yes |
| `SUPERADMIN_PASSWORD` | Admin UI login password — generate a strong value | Yes |
| `COOKIE_SECRET` | Secret used to sign session cookies | Yes |
| `APP_ENV` | Set to `production` for live deployments | Yes |
| `ASSET_UPLOAD_DIR` | Volume mount path for uploaded images | Yes |
| `RUN_JOB_QUEUE_FROM_SERVER` | Set `false` to delegate jobs to the Worker service | Yes |

### Deployment Dependencies

- **Runtime**: Node.js 20
- **GitHub repo**: [vendurehq/one-click-deploy](https://github.com/vendurehq/one-click-deploy)
- **Vendure core**: [vendure-ecommerce/vendure](https://github.com/vendure-ecommerce/vendure)
- **Docs**: [docs.vendure.io](https://docs.vendure.io)

## Minimum Hardware Requirements for Vendure

| Resource | Minimum | Recommended |
|---|---|---|
| RAM (server) | 512 MB | 1 GB |
| RAM (worker) | 512 MB | 512 MB |
| CPU | 1 vCPU | 1 vCPU per process |
| Storage | 1 GB | 5 GB+ (scales with assets) |
| Node.js | 20 | 20 |

Note: Vendure is single-threaded (Node.js). Adding more CPUs to a single instance has no effect — scale horizontally by running multiple server replicas instead.

## Self-Hosting Vendure

Clone the one-click-deploy repo and configure a local `.env`:

```
git clone https://github.com/vendurehq/one-click-deploy.git
cd one-click-deploy
cp .env.example .env
# Edit .env with your DB credentials, SUPERADMIN_PASSWORD, COOKIE_SECRET
npm install
npm run build
npm run start:server   # in one terminal
npm run start:worker   # in another
```

For Docker Compose with Postgres:

```
services:
  postgres:
    image: postgres:16
    environment:
      POSTGRES_DB: vendure
      POSTGRES_USER: vendure
      POSTGRES_PASSWORD: secret
  server:
    build: .
    command: node ./dist/index.js
    ports: ["8080:8080"]
    environment:
      DB_HOST: postgres
      DB_PORT: 5432
      DB_NAME: vendure
      DB_USERNAME: vendure
      DB_PASSWORD: secret
      APP_ENV: production
    depends_on: [postgres]
  worker:
    build: .
    command: node ./dist/index-worker.js
    environment:
      DB_HOST: postgres
      DB_PORT: 5432
      DB_NAME: vendure
      DB_USERNAME: vendure
      DB_PASSWORD: secret
      APP_ENV: production
    depends_on: [postgres]
```

## Is Vendure Free?

Vendure Core is **MIT-licensed and free forever**. The full framework, Admin UI, and plugin system are open source with no feature limits. On Railway, you pay only for infrastructure — typically under $10/month for a small store (server + worker + Postgres).

For mid-size companies, agencies, and enterprises, Vendure offers a commercial plan at **8,000 EUR/year per project**, which includes priority support and enterprise features. There is no public SaaS cloud offering — Vendure is self-hosted only.

## Vendure vs Medusa vs Saleor

| Feature | Vendure | Medusa | Saleor |
|---|---|---|---|
| Language | TypeScript | JavaScript/TypeScript | Python |
| API | GraphQL only | REST + GraphQL | GraphQL only |
| Admin UI | Built-in | Built-in | Built-in |
| Open source | MIT | MIT | BSD |
| Self-hostable | Yes | Yes | Yes |
| Background jobs | Dedicated Worker | Built-in | Celery workers |
| Best for | TypeScript teams, B2B | Fast prototyping | Enterprise Python shops |

Vendure is the strongest choice for teams already invested in TypeScript who want full type safety from the database layer to the storefront.

## FAQ

**What is Vendure?**
Vendure is an open-source headless e-commerce framework built with TypeScript, NestJS, and GraphQL. It provides a Shop API for storefronts and an Admin API for management, plus a built-in React Admin UI.

**What does this Railway template deploy?**
Three services: Vendure Server (GraphQL APIs + Admin UI at `/admin`), Vendure Worker (background job processing), and PostgreSQL. A persistent volume stores uploaded product images. The DB is pre-loaded with 54 sample products on first boot.

**Why is a Worker service included?**
Vendure separates API handling from async workloads. The Worker processes jobs like search index updates, email sending, and webhook delivery. Keeping it separate means slow background tasks don't block your API.

**Does Vendure support GraphQL subscriptions?**
Not natively out of the box — Vendure's APIs are query/mutation only. Subscriptions can be added via a custom plugin.

**Can I use this in production?**
Yes. Set a strong `SUPERADMIN_PASSWORD`, replace the `COOKIE_SECRET` with a stable secret, connect a custom domain, and configure email settings in the `EmailPlugin`. The sample data can be removed via the Admin UI before go-live.

**Can I add a storefront to this template?**
The template is backend-only. You can build any storefront — Next.js, Nuxt, SvelteKit, or a mobile app — and point it at the Shop API at `/shop-api`. Vendure's [demo storefront](https://github.com/vendure-ecommerce/storefront-remix-starter) is a good starting point.

**What database does Vendure use?**
This template uses PostgreSQL. Vendure also supports MySQL and SQLite (development only).


## Similar templates

- [Libredesk - Complete Setup](https://railway.com/deploy/libredesk-complete-setup) — Complete self-hosted omnichannel customer support desk.
- [Paperless-ngx](https://railway.com/deploy/paperless-ngx-3) — Paperless-ngx — document management with OCR and full-text search
- [Instatic CMS - Postgres](https://railway.com/deploy/instatic-cms-postgres) — Design, build and manage powerful static sites from state-of-the-art CMS

Open this page in a browser: https://railway.com/deploy/vendure
