Railway

Deploy Snipe-IT — Self-Hosted IT Asset Management

Self-host Snipe-IT — track hardware, licenses & assets, free

Deploy Snipe-IT — Self-Hosted IT Asset Management

Just deployed

/var/lib/mysql

Just deployed

/var/lib/snipeit

Deploy and Host Snipe-IT on Railway

Snipe-IT is the leading open-source IT asset management system — track hardware, software licenses, accessories, and consumables, check items in and out to users, and keep a full audit history, with reports, custom fields, and a REST API. IT teams use it to know exactly what they own, who has it, and when licenses expire, without per-asset or per-user fees. This template deploys the official Snipe-IT image wired to a Railway MySQL service, with the encryption key and persistent uploads configured, so you're inventorying assets in minutes.


What This Template Deploys

ServicePurpose
Snipe-ITThe asset management app, reports, and API (PHP on Apache)
MySQLAssets, licenses, users, audit logs, and custom fields

Both connect over Railway's private network. A persistent volume holds file uploads — asset photos, logos, and backups — while all asset records live in MySQL, so nothing is lost on redeploy.


About Hosting

Snipe-IT is a mature Laravel application, and a few specifics decide whether it deploys cleanly — all handled here.

APP_KEY must be a base64 32-byte key — or Snipe-IT won't run. Snipe-IT uses a Laravel encryption key in the exact form base64:... (generated with openssl rand -base64 32), and it encrypts sensitive data with it. A missing or malformed key stops the app from starting, and changing it after data exists makes previously encrypted values unreadable. This template generates a valid key and keeps it stable, so the app boots correctly and your data stays decryptable.

APP_URL must match your Railway domain. Snipe-IT builds asset links, image URLs, and email links from APP_URL, so it must be your exact Railway public domain, or the interface breaks with missing styles and broken links. This template sets it to your domain.

File uploads need a persistent volume. Asset photos, company logos, imported files, and backups are written to disk, which is ephemeral on Railway — they'd vanish on redeploy without a volume. This template mounts persistent storage for uploads so they survive deployments, while all structured data (assets, licenses, users, audit logs) persists in MySQL.

Finish setup in the web wizard. After deploy, open your Railway URL and Snipe-IT's pre-flight and setup wizard run — it checks the environment, confirms the database connection, and walks you through creating your first admin user and organization. There's no env-var admin; the wizard is the official first-run flow. A database connection error (SQLSTATE 2002) means MySQL isn't reachable — this template wires it via Railway references so it connects.

Add email for the full workflow. Configure the MAIL_* variables with your SMTP provider so check-in/check-out notifications, license-expiry alerts, and password resets send. Asset tracking works without it, but email unlocks the alerting that makes Snipe-IT proactive.

Typical cost: ~$5–10/month on Railway for Snipe-IT and MySQL. It's AGPL-3.0 and free — no user caps, asset limits, or feature restrictions, unlike commercial asset-management SaaS.


How It Compares

Snipe-IT (self-hosted)Commercial ITAM SaaSSpreadsheetsServiceNow
Cost modelFlat infraPer asset/userFreeEnterprise
Asset check-in/outYesYesManualYes
License trackingYesYesManualYes
Audit historyFullYesNoneYes
Data ownershipFull — your infraVendorYoursVendor
Self-hostableYesNoN/ANo

Commercial asset-management platforms bill per asset or seat and hold your inventory data. Spreadsheets are free but have no check-out workflow, audit trail, or alerts. ServiceNow is powerful but enterprise-priced and heavy. Snipe-IT's edge is a complete, purpose-built ITAM system — hardware, licenses, consumables, audit logs, and a REST API — self-hosted at flat cost with no per-asset fees and your inventory on infrastructure you own.


Deploy in Under 5 Minutes

  1. Click Deploy on Railway — Snipe-IT and MySQL build and wire together (~4 minutes)
  2. Confirm APP_KEY (base64) and APP_URL (your Railway domain) are set
  3. Confirm the volume is mounted for uploads and MySQL is connected
  4. Open your Railway URL and complete the setup wizard to create your admin user
  5. Add asset models and categories, then start adding and checking out assets

Set the MAIL_* variables to enable notifications, license alerts, and password resets.


Common Use Cases

  • Hardware inventory — track laptops, phones, servers, and equipment with who has what
  • License management — record software licenses and seats, with expiry alerts before renewals
  • Check-in / check-out — assign assets to employees and see the full history of each item
  • Audit and compliance — a complete audit trail of every asset for reporting and compliance

Configuration

VariableRequiredDescription
APP_KEYGeneratedLaravel base64: encryption key — required to run; keep stable
APP_URLRequiredYour Railway public domain — for links and asset image URLs
DB_HOST / DB_DATABASE / DB_USERNAME / DB_PASSWORDAuto-injectedMySQL connection via Railway references
APP_ENVPre-setproduction
Storage volumePre-setPersistent volume for uploads, logos, and backups
MAIL_*OptionalSMTP for notifications, license alerts, and password resets

APP_KEY and APP_URL are critical. APP_KEY must be a valid base64: key or the app won't start, and changing it makes encrypted data unreadable. APP_URL must be your Railway domain or the interface breaks. Both are configured here.

Uploads need the volume. Asset photos, logos, and backups are ephemeral without persistent storage — this template mounts a volume so they survive redeploys. Structured data lives in MySQL.


Dependencies for Snipe-IT Hosting

  • Railway account — ~$5–10/month for Snipe-IT and MySQL
  • MySQL (included and wired via Railway references)
  • A persistent volume for file uploads and backups (included)
  • Optional: SMTP credentials for notifications and license-expiry alerts

Deployment Dependencies

Implementation Details

The template runs the official snipe/snipe-it image (PHP on Apache) wired to a Railway-managed MySQL service over the private network, with database credentials injected via Railway reference variables. Snipe-IT is a Laravel application requiring APP_KEY in the base64: form; the template generates a valid 32-byte key and keeps it stable, since a malformed key prevents startup and a changed key renders previously encrypted data unreadable. APP_URL is set to the Railway domain so links, asset image URLs, and email URLs resolve correctly.

File uploads — asset photos, company logos, imports, and backups — are written to disk, so the template mounts a persistent volume for them; without it these are lost on redeploy. All structured data (assets, licenses, accessories, consumables, users, custom fields, and audit logs) persists in MySQL, which is the component to back up. A database connection error on first load (SQLSTATE 2002) indicates MySQL isn't reachable, which the reference-variable wiring prevents.

On first visit, Snipe-IT runs a pre-flight check and setup wizard that verifies the environment and database and creates the first admin user and organization; there is no environment-variable admin path. The MAIL_* variables enable check-in/out notifications, license-expiry alerts, and password resets.


Frequently Asked Questions

Why won't Snipe-IT start? Usually a missing or malformed APP_KEY — it must be a valid Laravel base64: key. This template generates one correctly. If you see a database error (SQLSTATE 2002), MySQL isn't reachable, which the template's reference wiring prevents.

How do I create my admin account? Through the setup wizard on first visit, not env vars. Open your Railway URL and the wizard verifies your environment and database, then walks you through creating the first admin user.

Do my asset records and uploads persist? Yes — assets, licenses, users, and audit logs live in MySQL, and file uploads (photos, logos, backups) on the persistent volume. Both survive redeploys; back up MySQL to preserve your inventory.

Why must APP_URL match my domain? Snipe-IT builds links and asset image URLs from it, so a mismatch breaks the interface with missing styles and broken links. This template sets it to your Railway domain.

Can it track licenses and send alerts? Yes — record software licenses and seats, and with MAIL_* configured, Snipe-IT sends expiry alerts and check-in/out notifications so you renew and reclaim on time.

Is there a user or asset limit? No — the self-hosted version is fully free under AGPL-3.0 with no user caps, asset limits, or feature restrictions. You pay only for Railway infrastructure.


Why Deploy Snipe-IT 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 Snipe-IT on Railway you get a complete IT asset management system with the hard parts solved — MySQL wired, a valid encryption key generated, APP_URL set, and persistent storage for uploads. Track hardware, licenses, and assets with full audit history, self-hosted on infrastructure you own.


Template Content

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
40
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