-
-
Notifications
You must be signed in to change notification settings - Fork 19
Configuration
Configuration is stored in config.json inside the Docker volume and persists across restarts. Environment variables override config.json values.
- Start the container. The setup wizard opens automatically.
- Enter your modem URL, username, and password. Test the connection.
- Optionally configure MQTT broker for Home Assistant integration.
- Set poll interval, history retention, and language.
- Done. Monitoring starts immediately.
Access /settings at any time to change configuration, set an admin password, or toggle light/dark mode.
Copy .env.example to .env and edit:
| 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 |
sb6190 |
Arris SB6190 | https://192.168.100.1 |
Username + password |
cgm4981 |
Technicolor CGM4981COM / Cox Panoramic Gateway PM8 / XB8 | http://192.168.0.1 |
Username + password |
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 is stored through the setup wizard or Settings in config.json; it is not an environment variable in the current release.
| Variable | Default | Description |
|---|---|---|
POLL_INTERVAL |
900 |
Polling interval in seconds (60--14400) |
HISTORY_DAYS |
0 |
Snapshot retention in days (0 = unlimited) |
WEB_PORT |
8765 |
Internal web UI port. For Docker, usually leave this at 8765 and change the host-side port mapping, for example 9876:8765. |
ADMIN_PASSWORD |
Web UI password protection (hashed with scrypt, optional) | |
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) |
| 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) |
| Variable | Default | Description |
|---|---|---|
SPEEDTEST_TRACKER_URL |
Speedtest Tracker URL (optional) | |
SPEEDTEST_TRACKER_TOKEN |
Speedtest Tracker API token (optional) | |
SPEEDTEST_TLS_INSECURE |
false |
Disable TLS certificate verification for self-signed Speedtest Tracker HTTPS (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 (CSV preferred, PNG legacy fallback, optional) | |
GAMING_QUALITY_ENABLED |
true |
Show gaming quality badge in dashboard |
BNETZ_ENABLED |
true |
Show BNetzA integration in sidebar and dashboard |
| Variable | Default | Description |
|---|---|---|
NOTIFY_WEBHOOK_URL |
Webhook URL for alerts (optional, enables notifications) | |
NOTIFY_WEBHOOK_TOKEN |
Webhook auth token (optional) | |
NOTIFY_APPRISE_ENABLED |
false |
Enable the optional Apprise API delivery channel |
NOTIFY_APPRISE_URL |
Apprise API base URL, for example http://apprise:8000
|
|
NOTIFY_APPRISE_KEY |
Optional Apprise persistent config key | |
NOTIFY_APPRISE_TOKEN |
Optional Bearer token for protected Apprise API servers | |
NOTIFY_APPRISE_TAG |
Optional comma-separated Apprise tags for route selection | |
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) |
DOCSight applies severity filters, per-event toggles, and cooldowns before any direct webhook, Discord webhook, or Apprise sidecar delivery. Provider-specific credentials should live in Apprise where possible. See Notifications for the Apprise sidecar split, target examples, and privacy notes.
| 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 |
| 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 |
The settings page is organized into sections:
- Modem -- Modem type, URL, credentials, ISP name
- General -- Poll interval, history retention, timezone, language, admin password
- Notifications -- Webhook, ntfy, Discord, Gotify, Apprise sidecar, severity filtering
- Smart Capture -- Trigger events, guardrails, execution history (details)
- Appearance -- Theme (dark/light), gaming quality index toggle, BNetzA integration toggle
- Security -- Admin password, session settings
- Extensions -- Module management
Integration tabs (Backup & Restore, BNetzA File Watcher, Connection Monitor, MQTT Broker, Speedtest Tracker, BQM Graphs, Smokeping, Weather) appear below the main sections. Guided setup dialogs for Speedtest, BQM, and Smokeping link to the matching module panels and use the Settings validation path instead of claiming success inside the setup dialog.
-
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_keyinside 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 andFRITZ_*environment variables are automatically migrated tomodem_*on startup.
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):
- Timezone selected in the DOCSight UI (stored in
config.json) - System timezone discovered from
/etc/localtime - IANA-style container
TZenvironment variable as a fallback
The current release does not support a separate TIMEZONE environment variable. Use the UI setting for DOCSight itself, or set container TZ only as a fallback. 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.
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".
Home | Quick Start | Configuration | API Reference | GitHub
- Quick Start
- Installation
- Running without Docker
- Podman Quadlet
- Configuration
- Reverse Proxy
- Example Compose Stacks
- Dashboard
- Connection Monitor
- Signal Trends
- Before/After Comparison
- Channel Timeline & Compare
- Event Log
- Smart Capture
- Gaming Quality Index
- Modulation Performance
- Cable Segment Utilization
- In-App Glossary
- Speedtest Tracker
- BNetzA Breitbandmessung
- ThinkBroadband BQM
- Smokeping
- Weather
- Netzbremse (Peering)
- Notifications
- Home Assistant (MQTT)
- Prometheus Metrics