.env file. If you’re on the Docker path and this directory is linked to a Doppler project, Doppler injects these same variables directly instead of a .env file — see Docker for that distinction. This page covers the variables you’re likely to actually touch — the rest of .env.example is framework boilerplate you can leave at its default.
Application
Database
Orbit defaults to SQLite (DB_CONNECTION=sqlite, backed by database/database.sqlite) — no other configuration is required for local development. For MySQL or PostgreSQL, switch DB_CONNECTION and set the standard DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, and DB_PASSWORD variables.
Session, cache, and queue
All three default to thedatabase driver (SESSION_DRIVER, CACHE_STORE, QUEUE_CONNECTION), which needs no extra infrastructure — just a migrated database. Redis (REDIS_HOST, REDIS_PORT, REDIS_PASSWORD) and Memcached (MEMCACHED_HOST) variables are present in .env.example if you’d rather run one of those instead, but neither is required.
The queue is no longer just framework boilerplate: a worker actually needs to be running (php artisan queue:work, or the queue Docker service — see Docker) for email notifications to be delivered, whichever queue driver you pick.
File storage
FILESYSTEM_DISK=local is used for user avatar uploads. If you want avatars stored on S3 instead, set FILESYSTEM_DISK=s3 and fill in AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, and AWS_BUCKET.
Mail and broadcasting
BROADCAST_CONNECTION=log is a Laravel framework default present in .env.example — nothing in the app currently broadcasts over a websocket connection, so it doesn’t need to be configured.
MAIL_MAILER matters now: notification emails are sent through Laravel’s standard mail configuration (MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_FROM_ADDRESS, MAIL_FROM_NAME). .env.example defaults MAIL_MAILER=log, which writes emails to the log instead of actually sending them — fine for local development, but point it at a real driver (smtp, ses, and so on) before relying on email delivery anywhere else. Delivery also requires a running queue worker regardless of mailer — emails are always queued, never sent synchronously.
Avatar moderation (nsfwjs)
Uploaded avatars are screened by a separate nsfwjs HTTP service before they’re accepted.
If the nsfwjs service is unreachable when someone uploads an avatar, the upload is rejected rather than allowed through unchecked.
Frontend
VITE_APP_NAME="${APP_NAME}" mirrors APP_NAME into the frontend build — update APP_NAME and this follows automatically.