❤️ 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/tokensmust be kept intact. If it's lost, you'll need to re-authenticate via the Fitbit OAuth flow.