Skip to content

Configuration

Dennis Braun edited this page Mar 16, 2026 · 16 revisions

Configuration

Configuration is stored in config.json inside the Docker volume and persists across restarts. Environment variables override config.json values.

Via Web UI (recommended)

  1. Start the container. The setup wizard opens automatically.
  2. Enter your modem URL, username, and password. Test the connection.
  3. Optionally configure MQTT broker for Home Assistant integration.
  4. Set poll interval, history retention, and language.
  5. Done. Monitoring starts immediately.

Access /settings at any time to change configuration, set an admin password, or toggle light/dark mode.

Via Environment Variables

Copy .env.example to .env and edit:

Modem

Variable Default Description
MODEM_TYPE fritzbox Modem driver (see table below). The generic driver requires no credentials and works with any router (fiber, DSL, satellite) but collects no DOCSIS channel data.

Supported modem types:

Type Modem Default URL Auth
fritzbox AVM FRITZ!Box http://192.168.178.1 Username + password
tc4400 Technicolor TC4400 http://192.168.100.1 HTTP Basic Auth
ultrahub7 Vodafone Ultra Hub 7 -- Password only
vodafone_station Vodafone Station (CGA/TG) http://192.168.0.1 Username + password
ch7465 Compal CH7465 (Connect Box) http://192.168.100.1 Username + password
ch7465_play Compal CH7465 (Play/UPC) http://192.168.0.1 Password only
cm3000 Netgear CM3000 http://192.168.100.1 Username + password
cm3500 Arris CM3500B https://192.168.100.1 Username + password
surfboard Arris SURFboard (S33/S34/SB8200) https://192.168.100.1 Username + password
cm8200 Arris Touchstone CM8200A https://192.168.100.1 Username + password
hitron Hitron CODA-56 http://192.168.100.1 No auth required
sagemcom Sagemcom F@st 3896 http://192.168.100.1 Username + password
sb6141 Arris/Motorola SB6141 http://192.168.100.1 No auth required
generic Generic Router (no DOCSIS) -- No auth required

| MODEM_URL | http://192.168.178.1 | Modem URL | | MODEM_USER | | Modem username | | MODEM_PASSWORD | | Modem password | | ISP_NAME | | Your ISP name (used in complaint letters and reports) |

General

Variable Default Description
POLL_INTERVAL 900 Polling interval in seconds (60--14400)
HISTORY_DAYS 0 Snapshot retention in days (0 = unlimited)
SNAPSHOT_TIME 06:00 Daily snapshot time (HH:MM, used for trend aggregation)
TIMEZONE IANA timezone (e.g. Europe/Berlin). Overrides the container TZ variable. Configurable via UI.
WEB_PORT 8765 Web UI port
ADMIN_PASSWORD Web UI password protection (hashed with scrypt, optional)
LANGUAGE en UI language (en, de, fr, es)
THEME dark UI theme (dark or light)
LOG_LEVEL INFO Logging verbosity (DEBUG, INFO, WARNING, ERROR)
DOCSIGHT_AUDIT_JSON Set to 1 to emit audit log entries as structured JSON instead of plain text
DEMO_MODE false Enable demo mode with synthetic data (no real modem needed)

MQTT / Home Assistant

Variable Default Description
MQTT_HOST MQTT broker host (optional, enables HA integration)
MQTT_PORT 1883 MQTT broker port (8883 enables TLS automatically)
MQTT_USER MQTT username (optional)
MQTT_PASSWORD MQTT password (optional)
MQTT_TLS_INSECURE false Disable TLS certificate verification (for self-signed certs)
MQTT_TOPIC_PREFIX docsight MQTT topic prefix for sensor data
MQTT_DISCOVERY_PREFIX homeassistant Home Assistant MQTT discovery prefix
PUBLIC_URL Public URL for HA device link (e.g. https://docsight.example.com)

Integrations

Variable Default Description
SPEEDTEST_TRACKER_URL Speedtest Tracker URL (optional)
SPEEDTEST_TRACKER_TOKEN Speedtest Tracker API token (optional)
BOOKED_DOWNLOAD 0 Your booked download speed in Mbit/s (for speedtest color coding)
BOOKED_UPLOAD 0 Your booked upload speed in Mbit/s (for speedtest color coding)
BQM_URL ThinkBroadband BQM share URL (.png, optional)
SMOKEPING_URL Smokeping base URL (optional)
SMOKEPING_TARGETS Comma-separated Smokeping targets (optional)
GAMING_QUALITY_ENABLED true Show gaming quality badge in dashboard
BNETZ_ENABLED true Show BNetzA integration in sidebar and dashboard

Notifications

Variable Default Description
NOTIFY_WEBHOOK_URL Webhook URL for alerts (optional, enables notifications)
NOTIFY_WEBHOOK_TOKEN Webhook auth token (optional)
NOTIFY_MIN_SEVERITY warning Minimum severity to trigger alerts (info, warning, critical)
NOTIFY_COOLDOWN 3600 Cooldown between repeated alerts in seconds
HEALTH_HYSTERESIS 0 Consecutive polls required before confirming a health state change (0 = instant)

Smart Capture

Variable Default Description
SC_ENABLED false Enable Smart Capture (requires Speedtest Tracker)
SC_TRIGGER_MODULATION true Trigger on QAM modulation downgrades
SC_TRIGGER_SNR false Trigger on SNR degradation
SC_TRIGGER_ERROR_SPIKE false Trigger on uncorrectable error spikes
SC_TRIGGER_HEALTH false Trigger on health state changes
SC_GLOBAL_COOLDOWN 300 Minimum seconds between any two captures
SC_TRIGGER_COOLDOWN 900 Minimum seconds between same-trigger captures
SC_MAX_ACTIONS_PER_HOUR 4 Maximum speedtest triggers per hour
SC_FLAPPING_WINDOW 3600 Time window in seconds for flapping detection
SC_FLAPPING_THRESHOLD 3 Trigger matches within flapping window before blocking

BNetzA File Watcher

Variable Default Description
BNETZ_WATCH_ENABLED false Auto-import measurement files from a watched directory
BNETZ_WATCH_DIR /data/bnetz Directory to watch for BNetzA measurement files

Settings Sections

The settings page is organized into sections:

  1. Modem -- Modem type, URL, credentials, ISP name
  2. General -- Poll interval, history retention, timezone, language, admin password
  3. Notifications -- Webhook, ntfy, Discord, Gotify, severity filtering
  4. Smart Capture -- Trigger events, guardrails, execution history (details)
  5. Appearance -- Theme (dark/light), gaming quality index toggle, BNetzA integration toggle
  6. Security -- Admin password, session settings
  7. Extensions -- Module management

Integration tabs (Backup & Restore, BNetzA File Watcher, Connection Monitor, MQTT Broker, Speedtest Tracker, BQM Graphs, Weather) appear below the main sections.

Security

  • Passwords at rest: Modem password, MQTT password, and Speedtest Tracker token are encrypted with Fernet (AES-128-CBC). The encryption key is stored in .config_key inside the data volume.
  • Admin password: Hashed with scrypt (via Werkzeug). The plaintext is never stored.
  • Session: 24-hour persistent session cookies (HTTPOnly, SameSite=Strict).
  • Legacy migration: Old fritz_* config keys and FRITZ_* environment variables are automatically migrated to modem_* on startup.

Timezone

DOCSight stores all timestamps internally as UTC with Z-suffix (YYYY-MM-DDTHH:MM:SSZ). The configured timezone is used to convert UTC to local time for display in the web UI, charts, and reports. API responses return raw UTC timestamps -- clients are responsible for local conversion.

DOCSight uses IANA timezones (e.g. Europe/Berlin, America/New_York) which correctly handle daylight saving time. The timezone dropdown in Setup and Settings only shows IANA names -- POSIX abbreviations like CET or EST are excluded because they do not support DST transitions.

How timezone is determined (in order of priority):

  1. Timezone selected in the DOCSight UI (stored in config.json)
  2. Container TZ environment variable (fallback)
  3. System default from /etc/localtime

If your container uses a POSIX abbreviation (e.g. TZ=CET), DOCSight shows a warning in Settings prompting you to select a proper IANA timezone. This prevents clock drift during summer time.

Migration from older versions: On first startup after upgrading to v2026-02-22.4+, DOCSight automatically converts existing naive local timestamps to UTC using the configured timezone. A safety backup of the database (docsis_history.db.pre_utc_migration) is created before conversion. The migration runs once and is recorded in the _docsight_meta table.

Speedtest Color Coding

The speedtest card on the dashboard uses color coding to show how your actual speed compares to what you're paying for:

Ratio Color Meaning
≥ 80% 🟢 Green Getting what you pay for
50-80% 🟡 Yellow Below expected performance
< 50% 🔴 Red Significantly below booked speed

DOCSight automatically uses your modem's connection info to determine the booked speed (where supported). You can also set it manually in Settings under "Booked Download" and "Booked Upload".

Clone this wiki locally