Marketix is configured entirely through environment variables. Start by copying .env.example to .env, then work through the groups below. Variables used only in Docker Compose deployments are read from .env by Docker and passed into the containers — they are not loaded from the filesystem inside the container.
Display name of the application. Passed to the frontend as VITE_APP_NAME. Used in email subjects and branding.
APP_ENV
Set to production on live deployments. Controls debug output and error handling.
APP_KEY
32-byte application encryption key. Generate with php artisan key:generate. Required and must be kept secret.
APP_DEBUG
Set to false in production. true exposes stack traces in error responses.
APP_URL
Full URL of the application including scheme (e.g. https://app.example.com). Used to generate absolute URLs in emails and redirects.
APP_DOMAIN
Hostname only, without scheme (e.g. app.example.com). Used by the route group for the main application and by Traefik’s Host() rule. Must match your DNS A record.
APP_LOCALE
Default locale for the application UI (e.g. en, de).
APP_FALLBACK_LOCALE
Fallback locale when a translation key is missing.
The official Docker image is built with FrankenPHP. This variable must stay frankenphp when using the provided Dockerfile and Compose stack. The Compose file sets this value and ignores whatever is in the host .env — only relevant if you run Octane outside Docker.
VITE_APP_NAME is embedded into the compiled frontend bundle at build time. In the Docker image it is set to marketix. If you build your own image, override this variable before running npm run build.
These variables are read by docker-compose.yml on the host (not inside containers) for service bootstrapping.
LETSENCRYPT_EMAIL=admin@example.com
MYSQL_ROOT_PASSWORD=change-me-strong-password
REDIS_PASSWORD=change-me-strong-password
TRAEFIK_DYNAMIC_FILE=/traefik/custom-domains.yml
TRAEFIK_APP_URL=http://app:8000
Variable
Description
LETSENCRYPT_EMAIL
Email address passed to the Let’s Encrypt ACME server when registering the TLS account. Required for Traefik to obtain certificates.
MYSQL_ROOT_PASSWORD
MariaDB root password. Set a strong, unique value — this is the superuser credential for the database service.
REDIS_PASSWORD
Password passed to both the Redis redis-server --requirepass command and the application’s REDIS_PASSWORD. Must be identical in both places.
TRAEFIK_DYNAMIC_FILE
Path inside the container where the app writes the Traefik file-provider YAML. Default is /traefik/custom-domains.yml — do not change unless you also modify the Compose volume mounts.
TRAEFIK_APP_URL
Internal URL of the app container as seen by Traefik. Default is http://app:8000. Do not change unless you rename the service.