Environment configuration
Inventorix is configured entirely through environment variables. This page walks through the groups you must set for a production deployment. A complete variable listing is available in the Reference section at /inventorix/reference/environment-variables/.
Application (APP_*)
Section titled “Application (APP_*)”| Variable | Default | Production value |
|---|---|---|
APP_NAME | Inventorix | Your instance name |
APP_ENV | local | production |
APP_DEBUG | true | false — never expose debug output in production |
APP_KEY | (empty) | A generated 32-byte base64 key (see below) |
APP_URL | http://localhost | Your public URL, e.g. https://inventorix.example.com |
APP_LOCALE | de | Primary locale |
APP_FALLBACK_LOCALE | en | Fallback locale |
LOG_LEVEL | debug | warning or error in production |
SESSION_ENCRYPT | false | true in production |
SESSION_DOMAIN | null | Your hostname, e.g. inventorix.example.com |
Generating APP_KEY
Section titled “Generating APP_KEY”Run this once before first boot and store the result securely:
php artisan key:generate --showOr generate inline when running Docker:
base64:$(openssl rand -base64 32)Database (DB_*)
Section titled “Database (DB_*)”| Variable | Default | Notes |
|---|---|---|
DB_CONNECTION | sqlite | Set to mysql or mariadb for production |
DB_HOST | 127.0.0.1 | Hostname of your MySQL/MariaDB server |
DB_PORT | 3306 | MySQL port |
DB_DATABASE | laravel | Database name |
DB_USERNAME | root | Database user |
DB_PASSWORD | — | Database password |
The entrypoint waits for the database to be reachable on DB_HOST:DB_PORT before running migrations or starting the server. If DB_HOST is not set, the wait is skipped (useful for local SQLite development).
Redis (REDIS_*)
Section titled “Redis (REDIS_*)”| Variable | Default | Notes |
|---|---|---|
REDIS_CLIENT | phpredis | phpredis or predis |
REDIS_HOST | 127.0.0.1 | Redis hostname |
REDIS_PORT | 6379 | Redis port |
REDIS_PASSWORD | null | Set if Redis requires authentication |
Redis is used by Horizon (queue worker) and is recommended for cache and sessions in production (see below).
Cache, queue, and session drivers
Section titled “Cache, queue, and session drivers”| Variable | Development default | Recommended production value |
|---|---|---|
CACHE_STORE | database | redis |
QUEUE_CONNECTION | database | redis (required for Horizon) |
SESSION_DRIVER | database | redis or database |
SESSION_LIFETIME | 120 | Minutes before idle session expires |
File storage (FILESYSTEM_DISK and AWS_*)
Section titled “File storage (FILESYSTEM_DISK and AWS_*)”| Variable | Default | Notes |
|---|---|---|
FILESYSTEM_DISK | local | Set to s3 for object storage |
AWS_ACCESS_KEY_ID | — | Access key |
AWS_SECRET_ACCESS_KEY | — | Secret key |
AWS_DEFAULT_REGION | us-east-1 | Bucket region |
AWS_BUCKET | — | Bucket name |
AWS_ENDPOINT | — | Override for non-AWS providers (MinIO, Tigris, etc.) |
AWS_USE_PATH_STYLE_ENDPOINT | false | Set true for MinIO and other path-style S3 services |
The local disk stores files under storage/app/private inside the container. In a production Docker deployment with no persistent volume for storage, use FILESYSTEM_DISK=s3 to avoid data loss on container restarts.
Mail (MAIL_*)
Section titled “Mail (MAIL_*)”| Variable | Default | Notes |
|---|---|---|
MAIL_MAILER | log | Set to smtp, postmark, resend, or postal for production |
MAIL_HOST | 127.0.0.1 | SMTP host |
MAIL_PORT | 2525 | SMTP port |
MAIL_USERNAME | null | SMTP username |
MAIL_PASSWORD | null | SMTP password |
MAIL_FROM_ADDRESS | hello@example.com | Sender address |
MAIL_FROM_NAME | ${APP_NAME} | Sender name |
Mail is used for warranty expiry digests and other system notifications. With MAIL_MAILER=log, emails are written to the application log instead of being delivered — suitable only for development.
Microsoft Entra ID SSO (MS_*)
Section titled “Microsoft Entra ID SSO (MS_*)”| Variable | Default | Notes |
|---|---|---|
MS_LOGIN_ENABLED | false | Set true to show the “Login via Entra ID” button |
MS_CLIENT_ID | — | Azure app registration client ID |
MS_CLIENT_SECRET | — | Azure app registration client secret |
MS_TENANT_ID | — | Azure tenant ID |
MS_REDIRECT_URI | ${APP_URL}/auth/microsoft/callback | OAuth redirect URI; register this in Azure |
When MS_LOGIN_ENABLED=false, the SSO button does not appear and the MS_* credential variables are not read. You can also toggle SSO on or off from the Auth Settings page in the panel without restarting the container (settings are stored in the database).
Container runtime (RUN_MIGRATIONS)
Section titled “Container runtime (RUN_MIGRATIONS)”| Variable | Default | Notes |
|---|---|---|
RUN_MIGRATIONS | true | Set false on multi-replica deployments; run migrations separately |
When true, the entrypoint runs php artisan migrate --force on every container start before handing control to Octane. This is safe for single-replica deployments. For multi-replica deployments (Kubernetes, Docker Swarm), set this to false and run migrations as a one-shot job to prevent concurrent migration races.