Start here
What you are deploying
Open Inventory is a Next.js application backed by PostgreSQL. The checked-in Compose stack starts the database, runs every bundled migration, then starts the application with persistent volumes for database data and local uploads.
Application
A standalone Next.js production image.
Database
PostgreSQL 16 with migration gating.
Storage
Persistent local uploads or Openinary.
Authentication
Local roles with optional Auth0.
01 · Installation
Choose the easiest path for your server
Run the guided Docker installer on any host with Git, Docker Compose v2, OpenSSL, and curl, or import the catalog-ready definitions for Dokploy and Coolify. All three paths use the same production image, migrations, health check, and persistent storage model.
Docker Compose
Clone the repository and let the installer create secure settings and start the complete stack.
Quick startDokploy template
Import the platform-native definition now; it is ready for one-click catalog inclusion.
Open Dokploy filesCoolify template
Import the matching service definition now; it is ready for one-click catalog inclusion.
Open Coolify filesDocker quick start
The installer creates a private .env, generates the required secrets and a bootstrap administrator, starts PostgreSQL and Open Inventory, and waits for the health check. You do not need Node.js or a manually prepared password hash for this path.
git clone https://github.com/Utzel-Butzel/inventory.git
cd inventory
./scripts/install.shFirst login
When installation finishes, the terminal prints the admin email (by default [email protected]) and an automatically generated bootstrap password. Sign in at http://localhost:3000, then change the password under Settings → Users. The production start converts the bootstrap value to bcrypt before the server starts and removes its plaintext value from the running process; the database stores only the hash after the first successful login.
Dokploy and Coolify
Pick your platform, open its deploy directory, and import the included template or Compose definition. It configures PostgreSQL, persistent uploads, port 3000, and/api/health. The platform generates the bootstrap password as a secret; find it in Dokploy's or Coolify's environment UI for the initial login. Change the password in Settings → Users; the bootstrap credential cannot replace an existing account.
02 · Configuration
Keep the core local. Add only what you need.
Database and local files can stay on your infrastructure. Maps, hosted storage, Auth0, and AI providers are explicit integrations you can configure or leave disabled.
Accounts and roles
The guided deployment paths generate the first bootstrap login automatically. Change that password after signing in, then manage admin, editor, and viewer accounts from Settings. Auth0 is optional.
File storage
Use the persistent local upload volume by default, or point Open Inventory at an Openinary service.
AI assistance
OpenAI-compatible analysis and OpenAI or Google image editing are optional. Nothing is sent to an AI provider until you configure and use it.
Maps and location
Street and satellite defaults require external tile services. Compatible tile URLs can be replaced with your own infrastructure.
03 · Integration
A scoped API, described in the repository.
Administrators can issue expiring, revocable bearer tokens. The public OpenAPI 3.1 files document resource, stock, scan, purchase-order, authentication, and statistics endpoints.
JSON REST API
Stable versioned routes under /api/v1.
Scoped tokens
Read, write, and AI permissions.
OpenAPI 3.1
YAML and JSON descriptions included.
04 · Operations
Make durability part of the deployment.
Open Inventory keeps database records and stored media as one logical dataset. Back them up together, test recovery, and use the built-in health endpoint for deployment checks.
Deployment checklist
The boring things that keep the useful things safe.
- Health check returns 200 at /api/health
- Database and upload volumes are persistent
- PostgreSQL and uploads are backed up together
- Login, upload, and token flows are smoke-tested
- Remote AUTH_URL is the exact HTTPS origin
- AI and storage credentials are set only when used
Need the complete reference?
The repository README covers Docker, Dokploy, Coolify, authentication, stock behavior, native iOS, and every environment variable.