-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
No. The app runs entirely on your machine, against a local SQLite file. The
only outbound network call the app can make is the optional GitHub Releases
update check, which is off by default and must be enabled with
UPDATE_CHECK=true. There is no telemetry, no analytics, and no
phone-home.
In data/app.db on the host. With the recommended Docker run line, that's
./data/app.db in your current working directory at the time you ran the
container. To back up your collection, back up that file. See
Operations → Backup and restore.
Yes — see Installation → From source.
Docker is the supported path, but a node-based install works too.
SQLite fits the project's offline-first, single-operator model. One file is trivial to back up, restore, and version. There is no separate database process to run, secure, or upgrade. Postgres would add operational surface area without adding value for a personal inventory.
Not as of today. The auth model is a single local admin. Multi-user / RBAC is on the roadmap but isn't built into the core app. A workaround is to run separate containers per user, each with their own data volume.
You can, but always put it behind an HTTPS reverse proxy and set
TRUST_PROXY=true. The auth model is built for a single trusted operator;
exposing it directly to the internet without TLS or proxy-level
authentication is not recommended. See Security → Reverse
proxy.
You almost certainly need TRUST_PROXY=true. Without it, Express sees the
proxied request as plain HTTP, the browser refuses to send Secure cookies
back, and your session is silently dropped on every request. See
Upgrading → v2.0.0.
Set SESSION_SECRET to a random 32-byte string:
SESSION_SECRET="$(openssl rand -hex 32)"The production guard refuses to boot with the documented default. See Security → Session secret guard.
You're on a fresh install and ADMIN_PASSWORD is unset or changeme. Set a
strong value before the first boot:
ADMIN_PASSWORD="$(openssl rand -base64 24)"This only blocks brand-new installs — existing deployments with a hash
already in app.db are unaffected.
Stop the container, then either:
- Restore an
app.dbbackup taken before you lost the password, or - Open
app.dbwith thesqlite3CLI and delete thepassword_hashrow from thesettingstable, then start the app withADMIN_PASSWORDset — the app will re-seed and force a password change on next login.
Yes — the importer accepts CSV. Download the template from Inventory → Import CSV, fill it in, and upload. Disposition fields round-trip with the exporter.
No. The web UI is responsive and works in mobile browsers. Inventory rows collapse into cards under 640px wide.
Open an issue at https://github.com/Gogorichielab/PPCollection/issues. See Contributing for guidelines.
Pew Pew Collection · Self-hosted, offline-first firearm inventory · Business Source License 1.1
Getting started
Running it
Reference