Skip to content

Environment Variables

Configuration enters the stack at two levels: the bundle .env file (read by Docker Compose in an offline install) and per-container environment variables (set by the compose files themselves). This page lists both.

VariableDefaultEffect
AIBOARD_JWT_SECRETgenerated at installJWT signing key (≥ 32 bytes). Mandatory — the release compose refuses to start without it.
AIBOARD_HTTP_PORT80Dashboard HTTP port.
AIBOARD_ALT_PORT3000Secondary dashboard port.
AIBOARD_HTTPS_PORT443HTTPS port (TLS overlay only).
AIBOARD_TLS_ENABLED01 = serve HTTPS with the generated self-signed cert and redirect 80 → 443.
AIBOARD_TLS_HOSTSpace/comma-separated IPs/hostnames baked into the cert’s SAN.
AIBOARD_TLS_DIR<bundle>/tlsWhere cert.pem / key.pem live (absolute path recorded at install).
AIBOARD_CERTS_ENABLED01 = mount operator-provisioned datasource client certificates.
AIBOARD_CERTS_DIR<bundle>/certsCA + client certs for secured MQTT / OPC UA, mounted read-only.
AIBOARD_MODEL_SEED_DIR<bundle>/modelsSeed model directory (re-pointed by update.sh).
BACKEND_IMAGE · FRONTEND_IMAGE · INFERENCE_IMAGEfrom bundle manifestImage tags to run — managed by install.sh / update.sh; do not edit by hand.
VariableDefault (release)Effect
ASPNETCORE_ENVIRONMENTProductionSelects the configuration overlay.
Grpc__InferenceService__Addresshttp://inference:50051Inference runtime gRPC target.
Database__ConnectionStringData Source=/data/aiboard.dbSQLite database location (persistent volume).
AIBOARD_JWT_SECRETfrom .envJWT signing key fallback; required outside development.
CORS_ORIGINSlocalhost dev originsComma-separated allowed browser origins — override when serving the UI from a non-default host.
AIBOARD_CERTS_ROOT/certsJail root for datasource TLS certificate paths (blocks arbitrary file reads).
AIBOARD_CSV_ROOT/data/csvJail root for CSV replay/output file paths.

Deeper backend tuning (token lifetime, rate limits, model validation caps, retention windows) lives in appsettings keys; any of them can be overridden with the standard .NET double-underscore convention, e.g. Auth__Jwt__ExpiryHours=12 or LoginRateLimit__PermitLimit=10.

appsettings keyDefaultEffect
Auth:Jwt:ExpiryHours8Login token lifetime (no refresh tokens).
LoginRateLimit:*on, 5 / 60 sPer-IP failed-login gate.
ExternalApi:Enabled + ExternalApi:RateLimit:*on, 100 / 60 sExternal API-key surface and its rate limit.
ModelManagement:MaxVersionsToKeep5Version pruning on cleanup.
ModelManagement:Validation:MaxModelSizeMb500Upload size cap.
InferenceObservability:RetentionDays3Inference audit-log retention (SQLite).
LoggingService:Retention:MaxEntries10000LogViewer store cap.
Swagger:EnabledtrueSwagger UI at http://<box>:5000/. Set false to hide API docs in locked-down sites.
VariableDefaultEffect
EXECUTION_MODEautoauto (TensorRT → CUDA → CPU), tensorrt, cuda, or cpu.
STRICT_EPoff1 = refuse to start instead of silently degrading a pinned GPU mode to CPU.
MODEL_PATH/app/models/predictive_maintenance.onnxSeed model loaded at startup (volume-mounted, never baked into the image).
MODEL_STORAGE_PATH/data/modelsRegistered model versions (shared volume with the backend).
LOG_DIR/data/logs (release)Enables the rotating Warning+ forensic log file; unset = console only.
USE_REAL_INFERENCEtrueMust stay true — mock mode is retired; the service fails fast otherwise.
INFERENCE_STUB0Debug bypass that echoes zero predictions. Never enable in production.
FORCE_CPUoffLegacy alias for EXECUTION_MODE=cpu.

Jetson bundles additionally pin OPENBLAS_CORETYPE and run with runtime: nvidia — see Jetson Deployment.

VariableDefaultEffect
AIBOARD_TLS_ENABLED0Enables the TLS-aware nginx entrypoint (cert mounted from AIBOARD_TLS_DIR).

The API and hub URLs are compiled into the frontend at build time (same-origin /api + /hub/realtime) — there is nothing to configure at runtime.