Railway

Deploy SNIPE-IT

Open-source IT asset. Track IT assets, licences and accessories

Deploy SNIPE-IT

Just deployed

/data

Just deployed

/var/lib/mysql

Just deployed

/var/lib/snipeit

Snipe-IT logo

Deploy and Host Snipe-IT on Railway

Snipe-IT is an open-source IT asset management system that tracks the hardware, licences and accessories a company owns and records who has each one. IT teams, school districts and MSPs use it to replace the spreadsheet where laptop serial numbers go to die: every device gets an asset tag, a status, a purchase cost and a full checkout history, so answering "who has that MacBook and when does its warranty end?" takes seconds. It is a PHP/Laravel application published under AGPL-3.0 by Grokability.

Self-host Snipe-IT on Railway and this template wires up the three pieces a production install needs. The application service runs the official snipe/snipe-it image — Apache with PHP 8.3 — behind a public HTTPS domain, applies database migrations on every boot, and runs Snipe-IT's scheduler for alerts and backups. Managed MySQL holds the asset records over Railway's private network, so the database is never exposed publicly. Managed Redis backs the cache and session store, keeping users signed in across redeploys. A persistent volume at /var/lib/snipeit keeps uploaded images, attachments, backups and OAuth signing keys.

Snipe-IT Railway architecture

Getting Started with Snipe-IT on Railway

Once the deploy finishes, open the generated Railway URL. There are no default credentials — Snipe-IT ships with none and instead redirects the first visitor to a /setup pre-flight wizard, which checks PHP version, database connectivity, file permissions, the GD image library and production mode. If a row is red, its message names the setting to correct. Continue through "Create database tables"; it reports nothing left to migrate, because the container already migrated at startup.

The next screen creates your first superadmin. Choose a site name, enter your name, email, username and a strong password, and leave auto-incrementing asset tags enabled. Do this promptly: the setup route stays open until that account exists, and closes permanently once it does.

To confirm the deployment works end to end, add a category, then an asset model, then an asset — and check that asset out to a person. The asset page should immediately show it as "Deployed" with the assignee, a checkout timestamp and a scannable QR code. Uploading an image to that asset proves the persistent volume is writable and served.

Snipe-IT dashboard showing asset counts and recent activity

Snipe-IT asset inventory listing four laptops with checkout status

Snipe-IT asset detail page showing checkout, purchase cost and QR code

About Hosting Snipe-IT

Snipe-IT answers a narrow question well: what do we own, where is it, and who has it. It is an asset tracker rather than a helpdesk — there is no ticketing — which is why teams pick it when they want inventory accuracy without adopting a full ITSM suite. Self-hosting matters because an asset register holds serial numbers, purchase costs and staff assignments.

  • Assets, licences, accessories, consumables and components, each with their own stock and checkout rules
  • Check-in and check-out to users, locations or other assets, with a full audit history per item
  • Custom fields and fieldsets, so a laptop and a projector carry different attributes
  • Barcode and QR labels, scheduled audits, warranty tracking and depreciation
  • LDAP/Active Directory sync and SAML single sign-on
  • A documented REST API with personal access tokens, plus a CSV importer
  • Email alerts for low stock, expiring licences and upcoming audits

Each Railway service owns one concern. The application container serves the web interface and API and runs the scheduler. MySQL stores every asset, user and log row. Redis holds cached settings and sessions. The volume stores anything that is a file rather than a row: asset photos, signed EULA PDFs, backup archives and the key pair that signs API tokens.

Why Deploy Snipe-IT on Railway

Railway removes the server administration self-hosting a PHP app usually involves.

  • MySQL and Redis are provisioned and connected for you, over a private network
  • HTTPS and a public domain are issued automatically, with no certificate renewals
  • The persistent volume for uploads and backups is attached and mounted
  • Database migrations run on every deploy, so upgrades are a redeploy
  • Health checks restart the container if the app stops responding

Common Use Cases

  • Tracking laptops, monitors and phones across an IT department, including who holds each device and when it is due back
  • Managing licence seats and renewal dates so nothing lapses or gets over-purchased
  • Running onboarding and offboarding, checking a full equipment kit out to a new hire and back in when they leave
  • Maintaining an auditable equipment register for schools, nonprofits and regulated businesses

Dependencies for Snipe-IT

  • Snipe-ITsnipe/snipe-it:v8-latest, the official image. Bundles Apache and PHP 8.3; runs migrations and the scheduler at startup.
  • MySQL — managed MySQL. Stores all assets, users, licences and the action log. MariaDB also works.
  • Redis — managed Redis. Cache backend and session store.

Environment Variables Reference

VariablePurpose
APP_KEY32-character encryption key. Never change it after setup, or encrypted fields become unreadable.
APP_URLPublic base URL. Snipe-IT builds absolute links and QR codes from it.
APP_TRUSTED_PROXIESProxy ranges trusted for X-Forwarded-*. 0.0.0.0/0,::/0 puts the real visitor IP in logs.
DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORDMySQL connection details.
REDIS_HOST, REDIS_PORT, REDIS_PASSWORDRedis connection details.
CACHE_DRIVER, SESSION_DRIVERSet to redis so cache and sessions survive restarts.
MAIL_MAILER, MAIL_HOST, MAIL_USERNAME, MAIL_PASSWORDOutgoing mail. Change log to smtp to deliver notifications.
PHP_UPLOAD_LIMITMaximum upload size in megabytes.
LOGIN_MAX_ATTEMPTS, LOGIN_LOCKOUT_DURATIONBrute-force lockout threshold and duration.

Deployment Dependencies

Hardware Requirements for Self-Hosting Snipe-IT

ResourceMinimumRecommended
CPU1 vCPU2 vCPU
RAM1 GB2 GB
Storage1 GB volume10 GB volume
RuntimePHP 8.2, MySQL 8.0PHP 8.3, MySQL 9.x, Redis

Snipe-IT is light; storage is driven by uploaded photos and retained backups, not record count.

Self-Hosting Snipe-IT

The official image needs an APP_KEY and a database. This runs it against an existing MySQL container:

docker run -d --name snipe-it -p 8000:80 \
  -e APP_KEY="$(openssl rand -base64 24 | cut -c1-32)" \
  -e APP_URL="http://localhost:8000" \
  -e DB_CONNECTION=mysql -e DB_HOST=snipe-db -e DB_PORT=3306 \
  -e DB_DATABASE=snipeit -e DB_USERNAME=snipeit -e DB_PASSWORD=changeme \
  -v snipeit_data:/var/lib/snipeit \
  snipe/snipe-it:v8-latest

To build from source instead, clone the repository and install its PHP dependencies:

git clone https://github.com/grokability/snipe-it.git
cd snipe-it && cp .env.example .env
composer install --no-dev
php artisan key:generate
php artisan migrate --force

How Much Does Snipe-IT Cost to Self-Host?

Snipe-IT is free and open source under AGPL-3.0, with no seat limits, asset caps or paid tier — the self-hosted build is the complete product. Grokability sells managed hosting from around $400 per year if you would rather not run it. On Railway you pay only for the compute, database and volume used. Commercial alternatives such as Asset Panda start in the thousands per year.

Snipe-IT vs Asset Panda vs GLPI

Snipe-ITAsset PandaGLPI
Self-hostableYesNo, SaaS onlyYes
LicenceAGPL-3.0CommercialGPL
FocusAsset trackingMulti-department workflowsFull ITSM and CMDB
TicketingNoLimitedYes

FAQ

What is Snipe-IT?

Snipe-IT is a free, open-source IT asset management application for tracking hardware, software licences, accessories and consumables, and recording which employee or location holds each item.

What does this Railway template deploy?

The official Snipe-IT container with a public HTTPS domain, a managed MySQL database, a managed Redis instance, and a persistent volume for uploads and backups. Services talk over Railway's private network.

Why does the template include Redis if Snipe-IT can run without it?

Snipe-IT's default cache and session drivers write to the container filesystem, which is replaced on every deployment. Pointing both at Redis means signed-in users are not logged out when you redeploy.

Do I need a separate worker or queue service for Snipe-IT?

No. Snipe-IT does not dispatch background jobs, so a queue worker would have nothing to process. Its scheduled tasks — alert emails and backups — run inside the application container.

How do I use the Snipe-IT REST API?

Generate a personal access token from your profile's API section, then send it as Authorization: Bearer against https://your-domain/api/v1/. Tokens are shown once at creation, so copy them immediately.


Template Content

More templates in this category

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

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