Environment
1
Set production environment variables
In Generate a fresh
.env (or your platform’s environment variable configuration):APP_KEY for production — don’t reuse a development key:2
Point at a production-grade database
SQLite is fine for local development, but for production, switch to MySQL or PostgreSQL — see Configuration for the variables to set.
3
Configure mail for email notifications
Orbit sends email notifications through Laravel’s standard mail configuration.
.env.example defaults MAIL_MAILER=log, which just writes emails to the log — point it at a real driver (smtp, ses, and so on) and fill in MAIL_HOST/MAIL_PORT/MAIL_USERNAME/MAIL_PASSWORD/MAIL_FROM_ADDRESS/MAIL_FROM_NAME before relying on email delivery in production. See Configuration.4
Configure avatar moderation (nsfwjs)
Avatar uploads are screened by a separate nsfwjs HTTP service before being accepted (see Configuration). Run the
nsfwjs container (or point NSFW_SERVICE_URL at your own instance) before enabling avatar uploads in production, or set NSFW_DETECTION_ENABLED=false to skip moderation entirely.Build and deploy
1
Install dependencies without dev tooling
2
Run migrations
3
Cache framework configuration
4
Serve the app
Point Nginx or Apache with PHP-FPM at the
public/ directory, or run the app’s Docker image directly — see Docker for the container setup, which is suitable for production as well as local development.Running the queue
Session, cache, and queue all default to thedatabase driver. A queue worker is required in production, not optional — email notifications are always queued, never sent synchronously, so without a worker running they’ll pile up unsent in the jobs table. Run it under a process supervisor (such as supervisord or systemd) rather than the queue:listen command used in local development, so it restarts automatically:
