---
title: "Deploy ERPNext v16 Business Suite"
description: "Accounting, inventory, sales and CRM in one ERP with workers and scheduler."
category: "Other"
url: https://railway.com/deploy/erpnext-v16-business-suite
---

# Deploy ERPNext v16 Business Suite

Accounting, inventory, sales and CRM in one ERP with workers and scheduler.

**[Deploy ERPNext v16 Business Suite on Railway](https://railway.com/template/erpnext-v16-business-suite)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/erpnext-v16-business-suite/manifest.json

- **Creator:** bento
- **Category:** Other
- **Total deploys:** 1

## Template content

### redis-queue 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"`

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

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save '' --appendonly no --maxmemory 256mb --maxmemory-policy allkeys-lru"`

### ERPNext https://raw.githubusercontent.com/frappe/erpnext/version-16/erpnext/public/images/erpnext-logo.svg

- **Source:** baranberkay96/erpnext-railway
- **Health check:** /api/method/ping
- **Public domain:** Yes

### MariaDB https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mariadb.svg

- **Image:** mariadb:11.8.9
- **Start command:** `/bin/sh -c "rm -rf /var/lib/mysql/lost+found && exec docker-entrypoint.sh mariadbd --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --skip-character-set-client-handshake '--bind-address=*' --innodb-buffer-pool-size=$MARIADB_INNODB_BUFFER_POOL_SIZE"`

## Documentation

# Deploy and Host ERPNext with Railway

ERPNext is an open-source ERP built on the Frappe framework, covering accounting, inventory, selling, buying, manufacturing, projects and CRM. This community template deploys ERPNext v16 from the official Frappe image on Railway with MariaDB, separate cache and queue Redis, background workers and the scheduler, and creates your site automatically.

## About Hosting ERPNext

An ERPNext install consists of a Gunicorn web server, a socket.io realtime server, background workers for short and long jobs, a scheduler, and nginx for static assets, plus MariaDB and two Redis instances. All Frappe processes must share the same `sites` folder, and a Railway volume belongs to a single service, so this template runs those processes together under supervisord in one service that owns the `sites` volume, while MariaDB and Redis run as their own services. On first boot it creates the site, installs ERPNext, enables the scheduler and sets a generated Administrator password. After an image upgrade it runs the database migration once.

## Common Use Cases

- Running accounting, invoicing and tax for a small or mid-sized company
- Managing stock, warehouses, purchasing and sales orders in one system
- Tracking leads, opportunities and quotations alongside fulfilment and billing
- Manufacturing with bills of materials, work orders and production planning

## Dependencies for ERPNext Hosting

- ERPNext / Frappe (official `frappe/erpnext:v16.50.0` image, extended with supervisord)
- MariaDB 11.8
- Redis for cache
- Redis for job queues and realtime pub/sub

### Deployment Dependencies

- Frappe Docker (official container setup): https://github.com/frappe/frappe_docker
- ERPNext documentation: https://docs.frappe.io/erpnext
- Frappe framework documentation: https://docs.frappe.io/framework
- ERPNext releases: https://github.com/frappe/erpnext/releases

### Implementation Details

| Service | Image | Role |
|---|---|---|
| ERPNext | built from `services/erpnext` (`frappe/erpnext:v16.50.0` + supervisord) | nginx, Gunicorn, socket.io, short and long workers, scheduler; owns the `sites` volume |
| MariaDB | `mariadb:11.8.9` | Database (volume) |
| redis-cache | `redis:8.2` | Cache (no persistence) |
| redis-queue | `redis:8.2` | Job queues and realtime (volume) |

**First login:** wait for the first deploy to finish (site creation takes a few minutes), open the public URL and sign in as `Administrator` with the generated `ADMIN_PASSWORD` shown in the ERPNext service variables. Complete the setup wizard, then change the password and create your users.

**Scaling:** raise `WORKER_SHORT_PROCS`, `WORKER_LONG_PROCS`, `GUNICORN_WORKERS` or `GUNICORN_THREADS` and give the ERPNext service more memory. The service cannot run multiple replicas because it owns the `sites` volume. Raise `MARIADB_INNODB_BUFFER_POOL_SIZE` as your data grows.

**Versions:** the ERPNext version is the `ERPNEXT_VERSION` build argument in `services/erpnext/Dockerfile`. Change it within the v16 line and redeploy; the migration runs automatically once.

Frappe HR (payroll, leave, attendance) is a separate app and is not included in this image.

### Why Deploy ERPNext on Railway?

Railway provides the database, Redis services, persistent volumes and HTTPS domain in one project, so a complete ERPNext install comes up from a single template without server administration. You pay for the resources the ERP actually uses and can resize each service as your company grows.


## 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/erpnext-v16-business-suite
