All configuration is done through environment variables in the .env file. Red = required. Everything else is optional.

Core

VariableDefaultDescription
SECRET_KEY required Flask session signing key. Generate with:
python -c "import secrets; print(secrets.token_hex(32))"
APP_USERNAME required Login username.
APP_PASSWORD required Login password (plaintext — this is a personal local tool).

SMTP / Email

Email features (incident notifications, digests, reports, aging alerts) require a working SMTP configuration. Works with Zoho, Gmail App Passwords, or any STARTTLS SMTP provider.

VariableDefaultDescription
SMTP_HOSTsmtp.zoho.comSMTP server hostname.
SMTP_PORT587STARTTLS port. Use 587.
SMTP_USERNAMESMTP account email address.
SMTP_PASSWORDApp-specific password (NOT your account password for providers like Zoho or Google).
SMTP_FROM_NAMEIT SupportDisplay name on outbound emails.
EMAIL_FOOTER_CREDIT(generic Field Log line)Credit line in outbound email footers. Override for personal branding; leave default for a generic open-source footer.
PROJECT_URL(blank)If set, appends “Available for free at: …” with this URL on email footers. Leave blank so forks don’t advertise someone else’s site.
WALL_WEATHER_ZIP20500US ZIP for Wall Display forecast (Open-Meteo) and NWS storm-alert lookup. Space weather (NOAA SWPC Kp + R/S/G) is global and stacked under the storm chip. Container needs outbound HTTPS to weather.gov, open-meteo.com, and services.swpc.noaa.gov.

Weekly Digest

Sends a summary of open incidents, tasks due, and recent activity.

VariableDefaultDescription
DIGEST_EMAILRecipient address for the weekly digest.
DIGEST_DAYmonDay of week: mon tue wed thu fri sat sun
DIGEST_HOUR8Hour (UTC, 0–23) to send.

You can also trigger the digest manually from Admin → Weekly Digest.

Aging Alerts

Daily email flagging open break/fix incidents that have been open longer than a threshold.

VariableDefaultDescription
AGING_ENABLEDtrueSet to false to disable aging alerts entirely.
AGING_DAYS3Days open before an incident is considered aging.
AGING_EMAIL(DIGEST_EMAIL)Override recipient. Defaults to DIGEST_EMAIL if blank.

Task Board Aging

Hours an open task can sit before the Task Board flags it and the weekly digest lists it under "Stale Tasks." Counted Mon–Fri only — weekends don't tick the clock.

VariableDefaultDescription
TASK_AGE_WARNING_HOURS48Business hours open before the warning badge shows.
TASK_AGE_CRITICAL_HOURS96Business hours open before the critical badge shows.

Monthly Report

Automatically emails the month-end PDF report.

VariableDefaultDescription
REPORT_EMAIL(DIGEST_EMAIL)Recipient for the auto monthly report. Defaults to DIGEST_EMAIL.
REPORT_DAY1Day of month to send (1–28).
REPORT_HOUR6UTC hour to send (0–23).

You can also generate and send manually from Admin → Monthly Report.

Maintenance Reminders

VariableDefaultDescription
MAINT_REMIND_EMAIL(DIGEST_EMAIL)Recipient for daily maintenance reminders.
MAINT_REMIND_HOUR7UTC hour to send (0–23).

SLA Thresholds

Open break/fix incidents (including live events) are checked against these thresholds. Breaches appear in a red panel on the dashboard.

VariableDefaultDescription
SLA_CRITICAL_HOURS8Target resolution hours for Critical severity.
SLA_HIGH_HOURS24Target resolution hours for High severity.
SLA_MEDIUM_HOURS72Target resolution hours for Medium severity.
SLA_LOW_HOURS168Target resolution hours for Low severity.

API & Webhooks

VariableDefaultDescription
API_TOKENShared secret for /api/v1/*. Send as header X-API-Token. Leave blank to disable the API (all endpoints return 401).
WEBHOOK_URLURL to POST JSON to on every incident create/update. Leave blank to disable.

For the REST API, set the header: X-API-Token: <API_TOKEN>

Ping Monitor

VariableDefaultDescription
PING_ENABLEDfalseSet to true to enable the asset ping monitor.
PING_INTERVAL5How often to sweep all assets (minutes).

When enabled, all assets with an IP address are pinged on the interval. If a host stops responding, an outage record is opened automatically and closed when it comes back.