Skip to content

File storage

Inventorix stores user uploads and generated files (handover PDFs and QR code images) on a configurable filesystem disk. You can use local disk storage for single-server deployments or an S3-compatible object store for multi-replica and cloud deployments.

ContentDiskVisibility
Asset photo uploadsdefault diskprivate
Generated handover PDFsHANDOVER_DISK (default: local)private
QR code image filesdefault diskprivate
Publicly served assets (Filament UI)publicpublic

Handover PDFs use a separate HANDOVER_DISK setting (from config/handover.php), which defaults to local. Set it to s3 if you want PDFs stored in object storage alongside other uploads.

Three disks are configured in config/filesystems.php:

DiskDriverRootNotes
locallocalstorage/app/privatePrivate; files are not web-accessible
publiclocalstorage/app/publicServed at /storage/* via symlink
s3s3(bucket root)S3-compatible; see below

The active disk is selected by FILESYSTEM_DISK. The default is local.

To make the public disk accessible via the web, run the storage symlink command once after installation:

Terminal window
php artisan storage:link

Set FILESYSTEM_DISK=s3 and configure the following environment variables:

VariableDefaultPurpose
FILESYSTEM_DISKlocalSet to s3 to activate S3 storage
AWS_ACCESS_KEY_ID(empty)S3 access key ID
AWS_SECRET_ACCESS_KEY(empty)S3 secret access key
AWS_DEFAULT_REGIONus-east-1Bucket region
AWS_BUCKET(empty)Bucket name
AWS_ENDPOINT(null)Custom endpoint URL (required for MinIO and other S3-compatible providers)
AWS_USE_PATH_STYLE_ENDPOINTfalseSet to true for path-style URLs (required for MinIO)

MinIO is a self-hosted S3-compatible store. Point Inventorix at it by setting a custom endpoint and enabling path-style URLs:

FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=inventorix
AWS_ENDPOINT=http://minio:9000
AWS_USE_PATH_STYLE_ENDPOINT=true
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
AWS_DEFAULT_REGION=eu-central-1
AWS_BUCKET=my-inventorix-bucket

Leave AWS_ENDPOINT and AWS_USE_PATH_STYLE_ENDPOINT at their defaults when using Amazon S3.

Generated handover PDFs are stored on the disk configured by HANDOVER_DISK in config/handover.php. This defaults to local. To store PDFs in S3, set:

HANDOVER_DISK=s3

The public disk stores files that must be served over HTTP (e.g. files Filament renders in the browser). Files on the local and s3 disks are private by default and are served through signed temporary URLs generated by the application, not directly from the web server.

Run php artisan storage:link after every fresh deployment to ensure the public/storage symlink exists if you are using local public storage.