Deploy InvenTree [Nov'26]

Self-hosted inventory management — parts, stock, BOMs & orders.

Deploy InvenTree [Nov'26]

Just deployed

/home/inventree/data

/var/lib/postgresql/data

Just deployed

/data

Deploy and Host InvenTree on Railway

InvenTree is open-source inventory management software for tracking parts, stock levels, suppliers, and purchase and sales orders. It ships a web dashboard, a documented REST API, barcode support, and a plugin system — a self-hosted alternative to spreadsheet stock control and to SaaS tools like Sortly, Katana or Odoo Inventory, built for hardware teams, electronics workshops, labs, makerspaces and small manufacturers.

About Hosting InvenTree

InvenTree is a Django application that needs more than a single container: a PostgreSQL database, Redis for caching and the background task queue, a persistent volume for uploaded media and generated reports, and a worker process for scheduled and asynchronous jobs. This template wires all of that together in three services. The web service runs nginx in front of gunicorn so /static/ and /media/ are served correctly over Railway's single public port, and the django-q2 background worker runs alongside it so both share one volume — there is no S3 bucket or object storage to configure. Database and cache credentials are injected from the Postgres and Redis services, and migrations plus static collection run automatically on every deploy.

Common Use Cases

  • Track parts, stock locations and quantity on hand for a hardware or electronics workshop
  • Manage suppliers, purchase orders and sales orders with a full audit history
  • Run BOMs and build orders for small-batch manufacturing
  • Serve as the inventory backend for internal tooling through InvenTree's REST API

Dependencies for InvenTree Hosting

  • PostgreSQL for application data
  • Redis for caching and the background task queue
  • A persistent volume for uploaded media and generated reports

Implementation Details

The web service builds from a small Dockerfile layered on the official inventree/inventree image, adding nginx to serve /static/ and /media/ from the mounted volume and to proxy everything else to gunicorn on 127.0.0.1:8000. The django-q2 background worker runs in the same container under a restart supervisor, so it shares the volume with the web process and no object storage is required.

Set INVENTREE_ADMIN_EMAIL and INVENTREE_ADMIN_PASSWORD at deploy time. Those two values create the initial superuser on first boot, and without them there is no account to sign in with. First boot runs migrations and collects static files, so allow a couple of minutes before the URL answers.

FAQ

Do I need S3 or any object storage? No. Uploaded media and generated reports are stored on the attached volume.

Is the background worker included? Yes. It runs inside the web container, so scheduled tasks, notifications, label printing and report generation all work out of the box.

Can I use the REST API? Yes. The full API is available at /api/, and the running version is reported at the root endpoint.

How do I upgrade? Redeploy the service. Migrations run automatically on boot.

Why Deploy InvenTree 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 InvenTree 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.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
50
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51