Private by default · Source available · Self-hosted

Keep a complete firearm inventory. Keep it off the cloud.

Catalog firearms, photos, values, and disposition records on hardware you control. Create a detailed report for your insurance records without a vendor account, telemetry, or subscription.

🔒 Records stay in your data volume ✓ Offline after image pull ✓ Docker Ready ✓ Local administrator account ✓ BUSL-1.1 · Personal, noncommercial use
Pew Pew Collection firearm inventory list — searchable and sortable table of guns by make, model, caliber, and serial number

Private by design

Your records stay on your hardware. There is no vendor account or telemetry; access is protected by the local administrator account you create.

Insurance-ready

Create a print-friendly inventory with serial numbers, condition, and total value. Confirm the fields and format your own insurer requires.

Self-host in 60 seconds

One Docker command, guided first-run setup, and one persistent data directory. Source-available under BUSL-1.1; personal, noncommercial use is free.

0
Vendor Accounts
1
Local Administrator
/data
One Directory to Protect
Off
Update Check by Default
Pew Pew Collection insurance report — printable firearm inventory with total purchase value for homeowners insurance documentation

Insurance documentation

Document your guns
for insurance in minutes.

Many collectors start tracking after an insurer asks for a home inventory. Pew Pew Collection generates a print-friendly summary you can review with your insurer and update whenever your collection changes.

  • Total purchase value across the whole collection
  • Per-firearm condition and acquisition details
  • Serial number of record for every firearm
  • Print-friendly layout, ready for PDF export
See sample report →

In the field

Built for collectors.
Designed to disappear.

Pew Pew Collection firearm inventory list — searchable and sortable table of guns by make, model, caliber, and serial number → INVENTORY LIST — Searchable, sortable, exportable.
Pew Pew Collection firearm inventory on a mobile phone — table rows collapsed into a responsive card layout → MOBILE — Inventory collapses into a card layout.
Pew Pew Collection add-firearm form — capture make, model, serial, caliber, purchase details, and notes → ADD FIREARM — Comprehensive detail capture.
Pew Pew Collection firearm detail view — full record with edit, duplicate, and print actions → DETAIL VIEW — Full record with edit & delete.
Pew Pew Collection profile settings — username, password, and dark/light theme preferences → PROFILE — Account, display preferences, and password management.
Pew Pew Collection dashboard — collection value chart, type breakdown, and recent activity feed → DASHBOARD — Activity feed, value chart, and type breakdown.
Pew Pew Collection dashboard in light mode — same collection value chart and type breakdown in a lighter palette → LIGHT MODE — Same app, lighter palette.
Pew Pew Collection analytics page — collection breakdown by type, caliber, make, and condition → STATS — Local analytics by type, caliber, make, condition, and trend.
Pew Pew Collection maintenance log — per-firearm cleaning, repair, and part-replacement entries with a cleaning-due badge → MAINTENANCE LOG — Cleaning and repair entries with configurable due-reminder.
Pew Pew Collection range sessions — per-firearm session log with date, location, rounds fired, and lifetime totals → RANGE SESSIONS — Log date, location, and rounds. Running totals per firearm.
Pew Pew Collection photo attachments — up to 12 photos per firearm stored locally in the data volume → PHOTO ATTACHMENTS — Up to 12 photos per firearm, stored in your data volume.
Pew Pew Collection insurance report — printable firearm inventory with total purchase value for homeowners insurance documentation → INSURANCE REPORT — Print-ready inventory summary with total value.

Capabilities

Everything you need.
Nothing you don't.

PRIVATE LOCAL ACCESS

Create one local administrator during guided first-run setup. Passwords are bcrypt-hashed, forms use CSRF protection, and signed-in sessions survive container restarts when /data is persisted.

DOCUMENTATION & REPORTS

Generate a print-friendly inventory and PDF with per-firearm details and total purchase value. CSV import and export keep your data portable.

COMPLETE CATALOG

Track make, model, serial, caliber, type, condition, purchase details, warranty, storage location, notes, photos, and dispositions.

LIFECYCLE RECORDS

Log cleanings, repairs, parts, and due reminders. Record range dates, locations, rounds fired, notes, and lifetime round counts for each firearm.

FIND & UNDERSTAND

Search, sort, and filter the collection on desktop or mobile. Local analytics break records down by type, caliber, make, condition, and acquisition trend.

ONE PERSISTENT DATA DIRECTORY

The SQLite database, photo files, session records, and generated session secret live under /data. The opt-in update check is off by default.

Built for

Whatever you're
keeping records for.

For collectors

Track make, model, serial, caliber, condition, and provenance for every firearm you own. Powerful search and filters keep a growing collection navigable, and dedicated analytics show what you actually own at a glance.

See the inventory & stats →

For insurance documentation

Generate a print-friendly inventory with total purchase value, serial numbers, and condition. Review it with your insurer, then update and reprint it as your collection changes.

See the insurance report →

For estate planning & transfers

Disposition tracking records when a firearm was sold, gifted, or transferred — including to whom and when. Keep a clean chain-of-custody record for the lifetime of your collection, and pass it on with the rest of your records.

See disposition tracking →

Privacy & resilience

Know what stays
on your hardware.

NO DEFAULT OUTBOUND TRAFFIC

The app needs the network only to pull its container image. Runtime update checks are opt-in, and telemetry is not included.

BACK UP THE WHOLE DATA DIRECTORY

Protect /data, not only app.db. Stop the container or use a SQLite-aware snapshot, copy the directory, and test a restore. That captures photos, sessions, and the generated secret too.

YOU OPERATE THE SERVER

Self-hosting gives you control and responsibility. Keep Docker and the app current, use HTTPS for remote access, restrict network exposure, and encrypt sensitive backups.

Need every environment variable, reverse-proxy setting, or recovery command? Use the configuration guide, operations and backup guide, and security guide.

Compare

How it stacks up.

Pew Pew Collection isn't for everyone. Here's how it compares so you can decide.

Pew Pew Collection Spreadsheet Cloud apps
Data locationYour hardwareYour hardware (or Google Drive)Vendor's servers
Vendor account requiredNoNo / YesUsually
Local sign-inOne administratorUsually noneVendor-managed
Insurance-ready report Built-in print PDFManualSometimes
Enforced unique serialsNoVaries
CSV import / exportN/AVaries, sometimes paywalled
Disposition tracking (sold / lost / stolen)ManualVaries
Search & filterLimited
Subscription cost$0$0Monthly or yearly
Source available BUSL-1.1N/AVaries
OfflineVaries

There are several reputable cloud-based firearm inventory apps, and if a hosted service with cross-device sync is what you want, one of them may suit you better. Pew Pew Collection makes the opposite trade: you keep the data and the control, and you run it yourself.

Deploy

Up and running
in 60 seconds.

Docker Run
# Pull & run in one command
docker run -d \
  --name ppcollection \
  -p 3000:3000 \
  -v /srv/ppcollection/data:/data \
  --restart unless-stopped \
  ghcr.io/gogorichielab/ppcollection:latest
Docker Compose
services:
  ppcollection:
    image: ghcr.io/gogorichielab/ppcollection:latest
    ports:
      - "3000:3000"
    volumes:
      - ./data:/data
    restart: unless-stopped
01

Pull the image

Run the Docker command or compose file. The image is hosted on GitHub Container Registry — no Docker Hub account required.

02

Grab your setup code

Run docker logs ppcollection. On a fresh install the app prints a one-time setup code. No environment variables to generate — the session key is created for you and stored in your data directory.

03

Create your account

Navigate to http://localhost:3000, enter the setup code, and choose your username and password. You are signed in straight away, and the setup page is disabled for good.

04

Start cataloging

Add your first firearm. Inventory and sessions live in SQLite; photos and the generated session secret live beside it in the mounted /data directory.

05

Update safely

Always recreate the container with the same /data bind mount or named volume. If an update shows first-run setup again, stop and restore the original mount before adding records.

→ Advanced configuration

Questions

Answers before
you ask.

Does the app report my collection to anyone?

No. Pew Pew Collection does not include reporting or telemetry. It runs on your hardware with a local administrator account. The only built-in outbound request is an optional GitHub release check, which is off by default.

Does self-hosting change legal access to my records?

Self-hosting removes the application vendor as a custodian of your inventory, but it does not make records immune from lawful access, device seizure, or disclosure obligations. Those questions depend on jurisdiction and circumstances; ask a qualified attorney for legal advice.

What happens if my hard drive fails?

Back up the entire mounted /data directory so the database, photos, sessions, and generated secret stay together. Stop the container or use a SQLite-aware snapshot while copying, keep another encrypted copy, and test a restore.

Why not just use a spreadsheet?

You can, and many collectors start there. The app adds enforced unique serial numbers, structured search and filtering, generated insurance reports with totals, disposition tracking (sold / lost / stolen), and a real schema that won't get accidentally re-sorted into the wrong rows.

Does this work without internet?

Yes. After the initial Docker pull, the app runs entirely offline. There is one opt-in feature (UPDATE_CHECK=true) that checks GitHub for new releases; it is off by default.

Is it really free? What's the catch?

Personal, noncommercial self-hosted use is available at no charge under the Business Source License 1.1. Other production use may require a commercial license. The licensed work converts to Apache 2.0 on the license's change date; read the license for the terms.

How do I import my existing spreadsheet?

CSV import is built in. Match your columns to the field names listed in the import dialog and import in one click.

What about photos, receipts, or appraisals?

Photo attachments are built in: upload up to 12 photos per firearm from its detail page. Images are stored locally in your data volume (/data/photos), so backing up the data directory captures the database and photos together.

Guides

Read before
you commit your records.

How to inventory your firearms for insurance

Which fields and photographs to capture, how to handle inherited or paperwork-free firearms, what a claims adjuster actually checks, and how to store the inventory safely. Sourced from NAIC, ATF, and CISA guidance.

Read the insurance inventory guide →

Self-hosted vs cloud firearm inventory apps

An honest comparison of the trade-offs: breaches, third-party requests, account lock-out, vendor shutdown, safe SQLite backups, remote access, and where cloud genuinely wins.

Read the self-hosted vs cloud comparison →

All guides

Plain-language, sourced guidance on building useful firearm records and deciding where those sensitive records should live.

Browse the guides hub →

Get started

One Docker command.
Your records, your hardware.

Start the container with a persistent /data volume, read the one-time setup code from the container logs, and create your local administrator. Source-available under BUSL-1.1; personal, noncommercial self-hosted use is free.

▶ Install with Docker View the sample report → ★ Star on GitHub