Skip to content

❤️ Health Exporters

Host: Homelab · Compose: Homelab/Docker/health/compose.yaml
Stack name: health

1. Overview

Two health data exporters that pull personal health metrics from Fitbit wearables and ResMed CPAP devices, then push them to an InfluxDB instance for long-term storage and Grafana dashboards.


2. Architecture & Services

Service Image Port Role
fitbit-fetch-data thisisarpanghosh/fitbit-fetch-data:latest@sha256:893ba4fe1ace9a97d6a85ca5ae14d7dcb11b7e53c0edff5958e344b9a5706ccf Polls Fitbit API for health metrics (steps, sleep, HR etc.) and writes to InfluxDB 2
resmed-influx vdbg/resmed-influx:1.3 Pulls ResMed myAir CPAP data and writes to InfluxDB

3. Networking

None configuration.


4. Persistent Storage

| Container | Host Path / Volume | Description | |---|---|---|| | fitbit-fetch-data | /docker/data/health/fitbit/logs | Fitbit fetch log files | | fitbit-fetch-data | /docker/data/health/fitbit/tokens | OAuth2 token cache for Fitbit API | | fitbit-fetch-data | /etc/timezone | — | | resmed-influx | /docker/data/health/resmed/config.toml | ResMed credentials and InfluxDB config |


5. Environment Variables

Variable Service Description
AUTO_DATE_RANGE fitbit-fetch-data Enable bulk historical import
CLIENT_ID fitbit-fetch-data Fitbit OAuth2 Client ID
CLIENT_SECRET fitbit-fetch-data Fitbit OAuth2 Client Secret
DEVICENAME fitbit-fetch-data Device label (Pixel Watch 3)
FITBIT_LOG_FILE_PATH fitbit-fetch-data
INFLUXDB_BUCKET fitbit-fetch-data Target bucket (Fitbit)
INFLUXDB_ORG fitbit-fetch-data InfluxDB org name
INFLUXDB_TOKEN fitbit-fetch-data InfluxDB write token
INFLUXDB_URL fitbit-fetch-data InfluxDB endpoint (http://192.168.10.127:8086)
INFLUXDB_VERSION fitbit-fetch-data
LOCAL_TIMEZONE fitbit-fetch-data
TOKEN_FILE_PATH fitbit-fetch-data

6. Access & Usage

These are headless data collectors — no web UI. Data is visible via Grafana dashboards connected to InfluxDB.

# Start
docker compose -f Homelab/Docker/health/compose.yaml up -d

# Check Fitbit logs
tail -f /docker/data/health/fitbit/logs/fitbit.log

# Restart to trigger a fresh data pull
docker restart fitbit-fetch-data

7. Maintenance & Backup

# Update
docker compose -f Homelab/Docker/health/compose.yaml pull
docker compose -f Homelab/Docker/health/compose.yaml up -d

# Backup
rsync -av /docker/data/health/ /backup/health/

[!NOTE] The Fitbit OAuth2 token in /docker/data/health/fitbit/tokens must be kept intact. If it's lost, you'll need to re-authenticate via the Fitbit OAuth flow.