← How-Tos
raspberry-pi 17 hr ago ◯ 5 min read

Self-Hosting Snipe-IT Asset Management on a Raspberry Pi: Tracking Tools, Machines, and Checkouts for a Makerspace

raspberry piself-hostingsnipe-itasset managementmakerspacetool trackingdocker

A single-person home shop can track tools by memory and a shelf. The moment a shop has more than one person using it — a makerspace, a shared garage shop, a small team — "where's the good digital calipers" stops being a question memory answers reliably. Snipe-IT is open-source IT asset management software, built originally for tracking laptops and company hardware, that turns out to be an excellent fit repurposed for a makerspace: every tool, machine, and piece of equipment gets a record with a unique asset tag, a current location or checked-out-to status, a maintenance history, and a depreciation/replacement-value field if you care about that for insurance purposes. Running it on a Raspberry Pi gives a shared shop a real tool-tracking system without a subscription fee or someone's personal spreadsheet as the source of truth.

Snipe-IT vs a Barcode Scanner Project vs a Spreadsheet

These solve different problems and it's worth being clear about which one you actually need. A barcode inventory scanner project (built directly on a Raspberry Pi, covered elsewhere on this site) is about fast physical check-in/check-out at the point of use — scan a tag, tool's logged out. Snipe-IT is the system of record behind that workflow: it's where asset records, maintenance schedules, warranty info, and checkout history actually live, with a web UI anyone can use from a phone or shop computer even without a scanner attached. A spreadsheet can technically do both jobs badly; Snipe-IT does the record-keeping half properly, and pairs naturally with a barcode scanner as the fast front-end for logging checkouts against it.

Installing Snipe-IT with Docker Compose

mkdir -p ~/snipeit && cd ~/snipeit cat > docker-compose.yml <<'EOF' services: snipeit_db: image: mariadb:10.11 environment: MYSQL_ROOT_PASSWORD: changeme MYSQL_DATABASE: snipeit MYSQL_USER: snipeit MYSQL_PASSWORD: changeme volumes: - ./db-data:/var/lib/mysql restart: unless-stopped snipeit: image: snipe/snipe-it depends_on: - snipeit_db environment: - APP_URL=http://changeme-your-pi-ip:8085 - DB_CONNECTION=mysql - DB_HOST=snipeit_db - DB_DATABASE=snipeit - DB_USERNAME=snipeit - DB_PASSWORD=changeme - APP_TIMEZONE=America/New_York - APP_LOCALE=en ports: - "8085:80" volumes: - ./data:/var/lib/snipeit restart: unless-stopped EOF docker compose up -d

Set APP_TIMEZONE to your actual timezone and APP_URL to your Pi's real address before first boot — both affect how checkout timestamps and generated links display later, and Snipe-IT's own documentation notes that changing APP_URL after the fact requires clearing cached config. Give the containers a minute to run their first database migration, then open the address from APP_URL in a browser to complete the setup wizard and create your admin account.

Setting Up Categories and Asset Models That Fit a Shop

Snipe-IT's data model is built around IT inventory out of the box (laptops, monitors, peripherals), but it's generic enough underneath to repurpose cleanly for shop equipment — you're just renaming the furniture, not fighting the software.

Checkouts, Locations, and Accountability

The core workflow that makes Snipe-IT worth running in a shared shop is the checkout: a tool gets checked out to a specific user (or a specific location, like "bench 3," if your shop doesn't track individual members by account), with a due-back date if you want to enforce return windows for in-demand equipment. This single feature — a record of who has what, right now, searchable instantly — solves the single most common shared-shop argument before it starts. Set up locations for anything that moves around the shop regularly (a rolling tool cart, a portable test bench) so you can track physical position as well as who's responsible for it.

Maintenance Scheduling

Snipe-IT's built-in maintenance records let you log service events per asset — a spindle bearing replacement, a laser lens clean, a CNC ballscrew lubrication — with cost and date fields that build a real service history over time. This matters more than it sounds like it should: when a shared machine starts acting up, having a logged history of "last serviced three months ago, no issues reported since" versus "nobody's touched this in over a year" changes how you triage the problem immediately, rather than starting troubleshooting from zero every time.

Access Control for a Shared Space

Create separate permission groups for regular members (who can check tools out and in, and view asset status) versus admins (who can create new assets, edit maintenance records, and manage users) — Snipe-IT's role-based permissions handle this natively. For a makerspace with paid membership tiers or supervised-equipment rules (a laser or CNC that requires certification before unsupervised use), you can encode that as a custom field or a note on the relevant asset rather than trying to bolt on a separate certification tracker.

Backups

Back up the MariaDB db-data volume and the Snipe-IT data volume (which holds uploaded images, generated labels, and file attachments) together as a matched pair — a database backup without the matching uploaded files, or vice versa, leaves you with asset records that reference photos and documents that no longer exist. Fold both into your existing Restic or Borg routine and verify a restore at least once rather than assuming it works.

Closing Thoughts

Snipe-IT is more setup than a shared whiteboard with everyone's initials on it, and for a one-person shop it's genuine overkill — stick with memory and a shelf. But the moment more than a couple of people share tools and machines regularly, the time spent setting this up on a Pi that's already running other services pays itself back the first time someone can actually find out who has the good drill bits instead of asking around the shop.