Documentation · v4.2.1

Invidtory documentation.

Install guides, operator references and recovery playbooks. Everything needed to run Invidtory on your own infrastructure.

Getting started

Invidtory is a self-hosted inventory and asset management platform for small businesses. This document walks through a complete first-time deployment — from downloading the build to onboarding the first operator — and is the recommended reference for administrators.

Estimated time for a standard Docker install on a modest VPS: 30–45 minutes.

If you purchased the Custom plan, a supervised deployment is included. Contact sales@invidtory.com to schedule it.

System requirements

Minimum (up to 1 000 SKUs)

  • Linux host (Debian 11+, Ubuntu 22.04+, RHEL 9+)
  • 1 vCPU, 1 GB RAM, 10 GB disk
  • Docker 24+ (or Podman 4+) — recommended
  • HTTPS termination via Nginx, Caddy or equivalent

Recommended (up to 25 000 SKUs)

  • 2 vCPU, 4 GB RAM, 40 GB SSD
  • PostgreSQL 15+ dedicated instance or container
  • Daily backup target (SFTP or S3-compatible bucket)

Installation

The recommended installation method is Docker Compose. The snippet below is enough to bring Invidtory up on a fresh Linux host:

# 1. Place your license key in .env
echo "LICENSE_KEY=INV-XXXX-XXXX-XXXX" > .env

# 2. Pull and start the service
docker compose pull
docker compose up -d

# 3. Create the first administrator
docker compose exec invidtory inv admin:create \
  --email admin@yourcompany.com \
  --name "Admin"

On first boot the application runs migrations automatically and writes an install marker to /var/lib/invidtory/state. Subsequent upgrades are non-destructive and re-run pending migrations in place.

Self-hosted deployment basics

Invidtory is designed to run entirely within your network perimeter. There is no outbound phone-home and no forced telemetry. License validation is performed offline against a signed license file.

Reverse proxy

Terminate TLS at a reverse proxy (Nginx, Caddy, Traefik) and forward plain HTTP to the Invidtory container on port 8080. Example Nginx stanza:

server {
  listen 443 ssl http2;
  server_name inventory.yourcompany.com;
  ssl_certificate     /etc/ssl/inv.crt;
  ssl_certificate_key /etc/ssl/inv.key;
  location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

Backups

The inv backup command produces a self-contained dump including PostgreSQL data, uploaded files and configuration. Schedule it via cron or systemd:

# /etc/cron.daily/invidtory-backup
docker compose exec -T invidtory inv backup:create \
  --out /backups/invidtory-$(date +%F).tar.zst

Inventory setup

After your first administrator account is created, the suggested order of setup is: locations → units of measure → categories → SKUs → starting balances.

Importing from spreadsheets

Use Settings → Import or the inv import:inventory CLI to load existing stock from CSV. A starter template is available under Settings → Import → Download template.

Reorder thresholds

Set a safety stock and reorder point per SKU and location. When on-hand drops below the reorder point, Invidtory drafts a purchase order against the primary supplier.

Asset tracking

Assets differ from inventory in that each unit is uniquely identified (by serial number or internal asset tag) and has an owner and condition record. Create asset categories first, then register individual assets.

  • Assign a QR tag on registration; print from Assets → Labels
  • Use the check-in / check-out workflow for shared equipment
  • Attach maintenance events to the asset's history timeline

Suppliers & purchase orders

A supplier record holds contacts, lead time, payment terms and a versioned price list. A purchase order references a supplier, contains one or more lines, and moves through draft → approved → sent → (partial) received → closed.

Three-way match

When an invoice is uploaded against a received PO, Invidtory runs a three-way match (PO lines, receipt lines, invoice lines) and flags any variance for review before payment is released.

Barcode & QR labels

Invidtory generates barcode and QR labels for items, locations and assets. Supported formats: Code 128, EAN-13, UPC-A and QR. Labels can be printed to thermal rolls (50 × 30 mm template) or A4 sheets (3 × 8 layout).

# Generate a label batch from the CLI
inv labels:print --type item --filter "category=fasteners" \
  --format qr --template thermal-50x30 --out labels.pdf

Roles & permissions

Invidtory ships with four built-in roles — Manager, Operator, Auditor, Viewer — and supports custom roles with per-module, per-action toggles. Role scoping can be narrowed to a single location or group of locations.

Two-factor authentication

Enable TOTP-based 2FA from Settings → Security. Enforcement can be applied to any role.

Exports & audit logs

All tables support CSV, XLSX and JSON export. Scheduled exports write to local disk, an SMB share, an SFTP target or an S3-compatible bucket.

The audit log is append-only and records actor, timestamp, IP and field-level diff for every write action. Export the audit log with a chain-of-custody hash via Audit → Export → Signed CSV.

Troubleshooting

License key rejected

Check that the LICENSE_KEY environment variable matches the key from your purchase email exactly, including dashes. License files are validated offline and do not require network access.

Cannot connect to database

Run docker compose logs db and verify that PostgreSQL is accepting connections on port 5432. Network isolation, SELinux and host firewalls are the most common causes of failures.

Backup restore

Restore a backup with inv backup:restore --in /backups/<file>.tar.zst. The command stops the application, replaces the data volume and replays migrations before restarting.

Need a hand? Email support@invidtory.com. Business, Extended and Custom plans include priority response.