Website & Admin Panel
.env Reference
The .env file holds your environment settings. The package ships .env.example only — copy it to .env during installation (cp .env.example .env); the install wizard then writes your database credentials, APP_URL and app key into it for you. This page is for the values you may want to change afterwards.
.env — you enter them in the admin panel. The .env only covers core app, database, mail and storage.Application
APP_NAME="Your Brand"
APP_ENV=production
APP_KEY= # auto-generated on the first request
APP_DEBUG=false # MUST be false in production
APP_URL=https://your-domain.com
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
false live — true leaks errors to visitors.Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_db
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password
Sessions, cache & queue
SESSION_DRIVER=file
SESSION_LIFETIME=120
CACHE_STORE=file
QUEUE_CONNECTION=database
SESSION_DRIVER and CACHE_STORE on file. The application has to boot before a database exists — that is how the /install wizard is able to run at all. Switching either to database breaks the installer, and .env.example carries the same warning. The queue does use the database (QUEUE_CONNECTION=database), which is correct.Running Redis? You can point QUEUE_CONNECTION at redis once the site is installed and working.
Mail (SMTP)
.env.example ships MAIL_MAILER=log — so after install, mail is written to the log file, not sent. The normal way to fix that is Admin → Settings → Mail Setting: SMTP details saved there are applied at send time and override .env completely. Only edit the values below if you prefer to configure mail in the file instead.MAIL_MAILER=smtp
MAIL_HOST=smtp.your-provider.com
MAIL_PORT=465
MAIL_USERNAME=you@your-domain.com
MAIL_PASSWORD=your-mail-password
MAIL_FROM_ADDRESS="no-reply@your-domain.com"
MAIL_FROM_NAME="${APP_NAME}"
Port 465 uses implicit SSL and 587 uses STARTTLS — both are detected automatically, so there is no MAIL_ENCRYPTION setting to add. See Email / SMTP for provider examples and testing.
File storage (optional S3)
FILESYSTEM_DISK=local
# For Amazon S3 / compatible storage:
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
Local storage is the default. To use S3 see Media Storage (you can also configure it from the admin panel).
Logging & other stock keys
The remaining keys in .env.example are standard Laravel plumbing — all safe to leave at their defaults:
LOG_CHANNEL=stack # where logs go (stack = storage/logs/laravel.log)
LOG_STACK=single
LOG_LEVEL=debug # set to error in production (see below)
LOG_DEPRECATIONS_CHANNEL=null
BCRYPT_ROUNDS=12 # password hashing cost
APP_MAINTENANCE_DRIVER=file
APP_FAKER_LOCALE=en_US # only used by test data generators
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null # leave null unless sharing cookies across subdomains
BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
MAIL_SCHEME=null # SSL/TLS is auto-detected from the port
VITE_APP_NAME="${APP_NAME}" # only read at asset build time
CRON_SECRET= # see Production hardening below
Production hardening
Add these for a live HTTPS site:
APP_URL=https://your-domain.com
SESSION_SECURE_COOKIE=true
LOG_LEVEL=error
CRON_SECRET=paste-a-long-random-string-here
https:// address — generated links, assets, e-mails and gateway return URLs all come from this value. There is no separate "force https" switch.error keeps logs lean in production./cron/run/…?key=…). Required if you use an external cron service — see Cron & Queue Workers..env, always run php artisan config:clear then php artisan config:cache so changes take effect.