Post

Environment Variables Reference

Complete reference for all FICSIT.monitor environment variables. Database, Redis, Reverb WebSocket, Satisfactory server connection, and application settings.

Environment Variables Reference

Overview

FICSIT.monitor is a Laravel 12 application. All configuration is done through environment variables, either in a .env file for local development or Kubernetes Secrets/ConfigMaps for production.

Never commit your .env file or Kubernetes Secrets to a public repository. The .env.example file provides a safe template with no real values.


Application Settings

VariableExampleDescription
APP_NAMESatisfactory DashboardApplication display name
APP_ENVproductionEnvironment: local, production
APP_KEYbase64:xxx...Laravel application encryption key. Generate with php artisan key:generate
APP_DEBUGfalseEnable debug mode. Set to false in production
APP_URLhttps://your-domain.comPublic URL of the application
APP_LOCALEenApplication locale

Database (PostgreSQL + TimescaleDB)

VariableExampleDescription
DB_CONNECTIONpgsqlDatabase driver — must be pgsql (PostgreSQL)
DB_HOSTpostgresDatabase hostname (K8s service name or IP)
DB_PORT5432PostgreSQL port
DB_DATABASEsatisfactory_dashboardDatabase name
DB_USERNAMEsatisfactoryDatabase user
DB_PASSWORDstrong_passwordDatabase password

TimescaleDB must be installed and enabled in PostgreSQL. The migrations run CREATE EXTENSION timescaledb; and create hypertables for time-series data.


Redis

VariableExampleDescription
REDIS_CLIENTphpredisPHP Redis client. Use phpredis for best performance
REDIS_HOSTredisRedis hostname (K8s service name or IP)
REDIS_PASSWORDnullRedis password (null if no auth configured)
REDIS_PORT6379Redis port

Redis is used for: queue backing (Horizon), session storage, and current-state metric cache.


Session & Queue

VariableValueDescription
SESSION_DRIVERredisMust be redis for WebSocket authentication to work
SESSION_LIFETIME120Session lifetime in minutes
QUEUE_CONNECTIONredisMust be redis — uses Laravel Horizon
CACHE_STOREredisCache backend
BROADCAST_CONNECTIONreverbMust be reverb — uses Laravel Reverb WebSocket

WebSocket (Laravel Reverb)

VariableExampleDescription
REVERB_APP_IDsatisfactory-dashboardReverb application ID
REVERB_APP_KEYyour-reverb-keyReverb application key (also used by frontend)
REVERB_APP_SECRETyour-reverb-secretReverb application secret
REVERB_HOSTreverb-serviceHostname of the Reverb WebSocket server
REVERB_PORT8080Internal Reverb port
REVERB_SCHEMEhttpInternal scheme (http inside K8s, https if behind proxy)

Frontend variables (used by Vite to build the React frontend):

VariableValueDescription
VITE_APP_NAME${APP_NAME}App name for frontend
VITE_REVERB_APP_KEY${REVERB_APP_KEY}Reverb key for Laravel Echo
VITE_REVERB_HOSTyour-domain.comPublic hostname for WebSocket connections
VITE_REVERB_PORT443Public WebSocket port (443 if using HTTPS/WSS)
VITE_REVERB_SCHEMEhttpsPublic WebSocket scheme

VITE_REVERB_HOST should be your public domain, not the internal service name. Clients connect to it from their browsers.


Satisfactory Server Connection

These variables configure how FICSIT.monitor connects to your Satisfactory server. In production, these are set dynamically per-server via the database. The env vars below are for a single default server in development/testing scenarios.

VariableExampleDescription
SATISFACTORY_SERVER_HOST46.224.182.211IP address of the Satisfactory server
SATISFACTORY_API_PORT7777Satisfactory vanilla HTTPS API port
SATISFACTORY_API_TOKEN(empty)Pre-configured API token (optional; FICSIT.monitor generates tokens via PasswordLogin)
SATISFACTORY_FRM_HOST46.224.182.211IP address for FRM access (usually same as server host)
SATISFACTORY_FRM_PORT8080FRM HTTP API port

In Kubernetes, SATISFACTORY_FRM_HOST can be the internal ClusterIP service name satisfactory-frm.satisfactory.svc.cluster.local when the dashboard and game server are in the same cluster, avoiding external network traffic.


Mail (Optional)

Mail is used for account-related emails. In development, MAIL_MAILER=log writes emails to the application log instead of sending them.

VariableValueDescription
MAIL_MAILERlog (dev) / smtp (prod)Mail driver
MAIL_HOSTsmtp.example.comSMTP server hostname
MAIL_PORT587SMTP port
MAIL_USERNAMEuser@example.comSMTP username
MAIL_PASSWORDpasswordSMTP password
MAIL_FROM_ADDRESSno-reply@yourdomain.comSender email address
MAIL_FROM_NAMEFICSIT.monitorSender display name

Minimum Production .env

A minimal working production configuration:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
APP_NAME="FICSIT.monitor"
APP_ENV=production
APP_KEY=base64:GENERATE_THIS_WITH_ARTISAN
APP_DEBUG=false
APP_URL=https://your-domain.com

DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=satisfactory_dashboard
DB_USERNAME=satisfactory
DB_PASSWORD=STRONG_PASSWORD

REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PORT=6379

SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
BROADCAST_CONNECTION=reverb
CACHE_STORE=redis

REVERB_APP_ID=satisfactory-dashboard
REVERB_APP_KEY=YOUR_REVERB_KEY
REVERB_APP_SECRET=YOUR_REVERB_SECRET
REVERB_HOST=reverb
REVERB_PORT=8080
REVERB_SCHEME=http

VITE_REVERB_APP_KEY=YOUR_REVERB_KEY
VITE_REVERB_HOST=your-domain.com
VITE_REVERB_PORT=443
VITE_REVERB_SCHEME=https
This post is licensed under CC BY 4.0 by the author.