Skip to content

Requirements

This page lists the infrastructure and runtime prerequisites for running Marketix in production. The recommended deployment path is the official Docker image, which satisfies all PHP runtime requirements out of the box.

RequirementMinimumNotes
PHP8.3composer.json requires ^8.3; the official Docker image ships PHP 8.4
PHP extensionspdo_mysql, redis, intl, gd, opcache, pcntl, zipAll installed in the official image (see Dockerfile)
Composer2.xOnly required for non-Docker installs
Node.js26Required only when building frontend assets yourself; not needed with the pre-built Docker image

Marketix is tested against MariaDB. The Docker Compose stack ships MariaDB 11.8. SQLite is supported for local development but is not recommended for production with an Octane-based server.

RequirementValue
Recommended engineMariaDB 11.8
Supported alternativeSQLite (development / single-user only)
Default port3306
DB driver env varDB_CONNECTION=mariadb (production) or DB_CONNECTION=sqlite (dev default)

Redis is required in production for:

  • Queue backend — Laravel Horizon uses Redis to manage and monitor queued jobs. Set QUEUE_CONNECTION=redis.
  • Cache — the default Compose stack keeps CACHE_STORE=database; switching to Redis is recommended under load.
  • SessionsSESSION_DRIVER=database by default; can be moved to Redis.
RequirementValue
Redis version7 (the Compose stack uses redis:7-alpine)
Redis client driverphpredis (default; the redis PHP extension is installed in the image)
Default host127.0.0.1 (bare-metal) / redis (Docker Compose)
Default port6379

Marketix stores uploaded files, generated QR code assets, and PDF reports on the configured filesystem disk. For production deployments with multiple replicas or external backup requirements, an S3-compatible object store is recommended.

Environment variablePurpose
FILESYSTEM_DISKlocal (default) or s3
AWS_ACCESS_KEY_IDAccess key
AWS_SECRET_ACCESS_KEYSecret key
AWS_DEFAULT_REGIONBucket region
AWS_BUCKETBucket name
AWS_USE_PATH_STYLE_ENDPOINTtrue for MinIO and other path-style providers

The league/flysystem-aws-s3-v3 package is included in composer.json and the S3 disk is wired up in Laravel’s standard config/filesystems.php.

A working mail transport is required for:

  • Team invitations
  • Password reset emails
  • Forced-password-change notifications

Marketix uses Laravel’s mailer with synergitech/laravel-postal for Postal support. Available drivers include smtp, log (development only), and any standard Laravel-supported transport.

Environment variablePurpose
MAIL_MAILERTransport driver (e.g. smtp)
MAIL_HOSTSMTP host
MAIL_PORTSMTP port
MAIL_USERNAME / MAIL_PASSWORDSMTP credentials
MAIL_FROM_ADDRESSSender address
MAIL_FROM_NAMESender display name

Click geolocation requires the MaxMind GeoLite2-City database. This is not bundled with the application — you must download it separately after deployment using the marketix:geoip:update Artisan command (see First run).

A free MaxMind account and license key (MAXMIND_LICENSE_KEY) are required to download the database. Without GeoIP, short-link redirects still work; geographic statistics will not be populated.

The official Docker image at noixdev/marketix bundles PHP 8.4, all required PHP extensions, Composer dependencies, and compiled frontend assets in a single image. It is the only supported production deployment method documented here.

See Docker deployment for setup instructions.