❤️ 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 |
— | 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
No custom networks — both containers access InfluxDB at http://192.168.10.127:8086 directly over the host network.
4. Persistent Storage
| Container | Host Path | 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 |
resmed-influx |
/docker/data/health/resmed/config.toml |
ResMed credentials and InfluxDB config |
5. Environment Variables
| Variable | Service | Description |
|---|---|---|
INFLUXDB_URL |
fitbit-fetch-data |
InfluxDB endpoint (http://192.168.10.127:8086) |
INFLUXDB_BUCKET |
fitbit-fetch-data |
Target bucket (Fitbit) |
INFLUXDB_ORG |
fitbit-fetch-data |
InfluxDB org name |
INFLUXDB_TOKEN |
fitbit-fetch-data |
InfluxDB write token |
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) |
AUTO_DATE_RANGE |
fitbit-fetch-data |
Enable bulk historical import |
| ResMed config | resmed-influx |
Loaded from /docker/data/health/resmed/config.toml |
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.