fritzfluxdb

fritzfluxdb

Docker app from GillBates' Repository

Overview

Daemon that reads metrics from an AVM Fritz!Box (DSL/Cable, WLAN, VPN, home automation, logs) and writes them to InfluxDB v1, InfluxDB v2, or QuestDB. No Web UI. Configured entirely via environment variables. Grafana dashboards included. Source: https://github.com/Gill-Bates/fritzfluxdb

fritzFluxDB Logo

fritzFluxDB

Lightweight daemon that collects metrics from your AVM FritzBox and pushes them into InfluxDB or QuestDB.

Latest Version Docker Build Docker Pulls License: MIT Python 3.13+

[!NOTE] Built on the shoulders of giants. This project is a fork of and would not exist without bb-Ricardo/fritzinfluxdb by Ricardo Bartels. The original laid the entire foundation for collecting FritzBox metrics into InfluxDB — a huge thank you for the years of work behind it. 🙏

📋 Table of Contents


🔀 Why this fork?

The original project is excellent and battle-tested. This fork modernises the codebase and focuses on operational reliability, a smaller, container-first footprint, and adds QuestDB as a third storage backend alongside InfluxDB v1/v2.

fritzFluxDB (this fork) fritzinfluxdb (original)
Python 3.13 3.7+
Database backends InfluxDB v1, InfluxDB v2 and QuestDB InfluxDB v1 and v2
Database client httpx — single lightweight HTTP dependency influxdb + influxdb_client libraries
Outage logging One error on outage, silent retries, one recovery message Repeated errors per retry
Graceful shutdown Buffered measurements are flushed before exit Buffer discarded on shutdown
HTTP backoff Exponential backoff on 429/5xx, honours Retry-After, auto-shrinks batch on 413 Fixed retry interval
Parser robustness Hardened against malformed JSON/XML/CSV with descriptive errors Basic parsing
Measurement identity Named after the FritzBox serial — swapping hardware keeps history cleanly separated Single static measurement
Secret handling Credentials masked in logs; refuses to send credentials over plain HTTP to remote hosts
Docker image Multi-arch (amd64/arm64), non-root, Tini as PID 1 Single-arch, runs as root
Timezone correctness Log timestamps are timezone-aware

The original still ships features this fork intentionally dropped (e.g. automatic retention-policy creation). If you rely on those, the upstream project may suit you better.


✨ Features

  • Collects TR-064 & Lua service data from FritzBox
  • Supports InfluxDB v1, InfluxDB v2 and QuestDB as storage backend
  • Home automation metrics (smart home devices)
  • Call logs & telephone data
  • VPN, network hosts, connection info
  • Multi-arch Docker image (amd64 / arm64)
  • Runs as non-root with Tini as PID 1

🚀 Quick Start

1. Create a .env file

FRITZBOX_HOSTNAME=192.168.178.1
FRITZBOX_USERNAME=admin
FRITZBOX_PASSWORD=your-secret-password

DB_TYPE=influxdb_v2
INFLUXDB_HOSTNAME=influxdb
INFLUXDB_PORT=8086
INFLUXDB_ORGANIZATION=my-org
INFLUXDB_BUCKET=fritzflux
INFLUXDB_TOKEN=your-influxdb-token
# allow sending the token over plain HTTP inside your trusted home network
INFLUXDB_ALLOW_PLAINTEXT_CREDENTIALS=true

Using QuestDB instead? Set:

DB_TYPE=questdb
QUESTDB_HOSTNAME=questdb
QUESTDB_PORT=9000

2. Create docker-compose.yml

services:
  fritzfluxdb:
    image: giiibates/fritzfluxdb:latest
    container_name: fritzfluxdb
    restart: unless-stopped
    env_file:
      - ./.env
    environment:
      TZ: Europe/Berlin
      LOG_LEVEL: INFO

3. Run

docker compose up -d

That's it. Metrics will start flowing into your InfluxDB.


⚙️ Configuration

All settings can be passed via environment variables (e.g., in .env or in Docker Compose).

General Settings

Variable Default Description
LOG_LEVEL INFO Log level (DEBUG, INFO, WARNING, ERROR)
TZ Europe/Berlin Timezone for logging
DB_TYPE influxdb_v2 Target database type (influxdb_v1, influxdb_v2 or questdb)

[!TIP] TLS auto-detection: The hostname may be a full URL (e.g. https://influx.example.com behind a reverse proxy) — scheme and port are derived automatically. Port 443 always enables TLS.

FritzBox Configuration

Variable Default Description
FRITZBOX_HOSTNAME 192.168.178.1 FritzBox IP or hostname
FRITZBOX_USERNAME FritzBox login user
FRITZBOX_PASSWORD FritzBox login password
FRITZBOX_PORT 49000 FritzBox TR-064 port
FRITZBOX_TLS_ENABLED false Enable HTTPS for FritzBox connection
FRITZBOX_VERIFY_TLS false Verify FritzBox certificate
FRITZBOX_REQUEST_INTERVAL 10 Frequency of requests in seconds
FRITZBOX_BOX_TAG fritz.box Custom tag to identify the FritzBox

InfluxDB Configuration (used when DB_TYPE=influxdb_v1 or influxdb_v2)

Variable Default Description
INFLUXDB_HOSTNAME InfluxDB host (or full URL, e.g. https://influx.example.com)
INFLUXDB_PORT 8086 InfluxDB port
INFLUXDB_TLS_ENABLED false Enable TLS (HTTPS)
INFLUXDB_VERIFY_TLS true Verify TLS certificate
INFLUXDB_ALLOW_PLAINTEXT_CREDENTIALS false Allow sending credentials/token over plain HTTP (trusted networks only)
INFLUXDB_MEASUREMENT_NAME fritzbox Base measurement name (overridden by serial if available)
INFLUXDB_DATABASE InfluxDB v1 database name
INFLUXDB_USERNAME InfluxDB v1 username
INFLUXDB_PASSWORD InfluxDB v1 password
INFLUXDB_ORGANIZATION InfluxDB v2 organization
INFLUXDB_BUCKET fritzflux InfluxDB v2 bucket
INFLUXDB_TOKEN InfluxDB v2 auth token

QuestDB Configuration (used when DB_TYPE=questdb)

Variable Default Description
QUESTDB_HOSTNAME QuestDB host (or full URL, e.g. https://questdb.example.com)
QUESTDB_PORT 9000 QuestDB HTTP API port (InfluxDB Line Protocol over HTTP)
QUESTDB_TLS_ENABLED false Enable TLS (HTTPS)
QUESTDB_VERIFY_TLS true Verify TLS certificate
QUESTDB_ALLOW_PLAINTEXT_CREDENTIALS false Allow sending credentials/token over plain HTTP (trusted networks only)
QUESTDB_MEASUREMENT_NAME fritzbox Base table name (overridden by serial if available)
QUESTDB_USERNAME QuestDB basic authentication username
QUESTDB_PASSWORD QuestDB basic authentication password
QUESTDB_TOKEN QuestDB Bearer token authentication

📊 Grafana Dashboards

Pre-built dashboards are included in the grafana/ directory:

  • System Dashboard — CPU, memory, uptime, temperatures
  • Call Log Dashboard — Incoming/outgoing calls
  • Logs Dashboard — FritzBox system logs
  • Home Automation Dashboard — Smart home device metrics (InfluxDB v2)

Import the JSON files from grafana/influx2_dashboards/ (or influx1_dashboards/) into your Grafana instance.


🛠 Local Development

python3.13 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

python run.py -c setup.conf

📄 License

MIT — © 2026 Gill-Bates


Disclaimer: This project is an independent open-source tool and is not affiliated with, endorsed by, or in any way associated with AVM GmbH or the FRITZ!Box product line. FRITZ!Box is a registered trademark of AVM GmbH.

Install Fritzfluxdb on Unraid in a few clicks.

Find Fritzfluxdb in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Fritzfluxdb Review the template variables and paths Click Install

Download Statistics

136
Total Downloads

Related apps

Details

Repository
giiibates/fritzfluxdb:latest
Last Updated2026-06-08
First Seen2026-06-08

Runtime arguments

Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped

Template configuration

TimezoneVariable

Container timezone (e.g. Europe/Berlin, Etc/UTC). Fritz!Box timezone is auto-detected at startup.

Target
TZ
Default
Europe/Berlin
Value
Europe/Berlin
Fritz!Box Hostname/IPVariable

Hostname or IP of the Fritz!Box on your LAN.

Target
FRITZBOX_HOSTNAME
Default
192.168.178.1
Value
192.168.178.1
Fritz!Box UsernameVariable

Fritz!Box login username.

Target
FRITZBOX_USERNAME
Fritz!Box PasswordVariable

Fritz!Box login password.

Target
FRITZBOX_PASSWORD
Fritz!Box Request Interval (s)Variable

Seconds between TR-064 poll cycles (minimum 10).

Target
FRITZBOX_REQUEST_INTERVAL
Default
10
Value
10
Database TypeVariable

Target database: influxdb_v1, influxdb_v2, or questdb.

Target
DB_TYPE
Default
influxdb_v2
Value
influxdb_v2
InfluxDB Hostname/IPVariable

Hostname or IP of the InfluxDB instance.

Target
INFLUXDB_HOSTNAME
InfluxDB PortVariable

InfluxDB port (default 8086).

Target
INFLUXDB_PORT
Default
8086
Value
8086
InfluxDB TLSVariable

Enable TLS for InfluxDB connection (true/false).

Target
INFLUXDB_TLS_ENABLED
Default
false
Value
false
InfluxDB Measurement NameVariable

InfluxDB measurement / table name.

Target
INFLUXDB_MEASUREMENT_NAME
Default
fritzbox
Value
fritzbox
InfluxDB Token (v2)Variable

InfluxDB v2 API token.

Target
INFLUXDB_TOKEN
InfluxDB Organization (v2)Variable

InfluxDB v2 organization name.

Target
INFLUXDB_ORGANIZATION
InfluxDB Bucket (v2)Variable

InfluxDB v2 bucket.

Target
INFLUXDB_BUCKET
Default
fritzflux
Value
fritzflux
InfluxDB Database (v1)Variable

InfluxDB v1 database name.

Target
INFLUXDB_DATABASE
Default
fritzflux
Value
fritzflux
InfluxDB Username (v1)Variable

InfluxDB v1 username (optional).

Target
INFLUXDB_USERNAME
InfluxDB Password (v1)Variable

InfluxDB v1 password (optional).

Target
INFLUXDB_PASSWORD
QuestDB Hostname/IPVariable

Hostname or IP of the QuestDB instance (only for DB_TYPE=questdb).

Target
QUESTDB_HOSTNAME
QuestDB PortVariable

QuestDB HTTP port (default 9000).

Target
QUESTDB_PORT
Default
9000
Value
9000
QuestDB TLSVariable

Enable TLS for QuestDB connection (true/false).

Target
QUESTDB_TLS_ENABLED
Default
false
Value
false
QuestDB UsernameVariable

QuestDB username (optional).

Target
QUESTDB_USERNAME
QuestDB PasswordVariable

QuestDB password (optional).

Target
QUESTDB_PASSWORD
QuestDB TokenVariable

QuestDB bearer token (optional).

Target
QUESTDB_TOKEN