Garmin Grafana是一个Docker容器套件,用于从Garmin服务器自动获取健康数据并存储到本地InfluxDB数据库,最终通过Grafana实现直观的数据可视化。该项目专为Garmin设备用户设计,帮助用户全面跟踪和分析个人健康指标。
Fitbit用户请注意:请查看适用于Fitbit的姊妹项目。
!仪表板预览
适用于所有Garmin设备用户,尤其是希望:
需先安装Docker。Docker支持所有主流平台/操作系统,请参考Docker安装指南。
详细且更新的安装说明可参考GitHub README。
创建主目录并进入:
bashmkdir garmin-fetch-data && cd garmin-fetch-data
创建令牌存储目录并设置权限:
bashmkdir garminconnect-tokens chown -R 1000:1000 garminconnect-tokens
在garmin-fetch-data目录下创建compose.yml文件,内容如下(根据需要修改环境变量):
yamlservices: garmin-fetch-data: restart: unless-stopped image: thisisarpanghosh/garmin-fetch-data:latest container_name: garmin-fetch-data depends_on: - influxdb volumes: - ./garminconnect-tokens:/home/appuser/.garminconnect # 持久化存储令牌(需确保目录属主为1000:1000) environment: - INFLUXDB_HOST=influxdb - INFLUXDB_PORT=8086 - INFLUXDB_USERNAME=influxdb_user # 需对INFLUXDB_DATABASE有读写权限 - INFLUXDB_PASSWORD=influxdb_secret_password - INFLUXDB_DATABASE=GarminStats - GARMINCONNECT_EMAIL=your_garminconnect_email # 可选,详见设置文档 - GARMINCONNECT_BASE64_PASSWORD=your_base64_encoded_garminconnect_password # 可选,密码需Base64编码 - GARMINCONNECT_IS_CN=False # 中国大陆Garmin-cn用户需设为True(默认False) # 以下为可选环境变量,修改前请阅读文档 # - LOG_LEVEL=INFO # 设为DEBUG可获取调试日志 # - UPDATE_INTERVAL_SECONDS=300 # 默认更新间隔5分钟 # - FETCH_ADVANCED_TRAINING_DATA=False # 设为True获取高级训练数据(实验性功能) # - KEEP_FIT_FILES=False # 设为True保存FIT文件 # - ALWAYS_PROCESS_FIT_FILES=False # 设为True处理无GPS数据的FIT文件 # - USER_TIMEZONE="" # 手动设置时区(默认自动获取) # - INFLUXDB_ENDPOINT_IS_HTTP=True # 设为False使用HTTPS连接InfluxDB # - FORCE_REPROCESS_ACTIVITIES=False # 设为True重新处理已处理的FIT文件 influxdb: restart: unless-stopped container_name: influxdb hostname: influxdb environment: - INFLUXDB_DB=GarminStats - INFLUXDB_USER=influxdb_user - INFLUXDB_USER_PASSWORD=influxdb_secret_password - INFLUXDB_DATA_INDEX_VERSION=tsi1 ports: - '8086:8086' volumes: - influxdb_data:/var/lib/influxdb image: 'influxdb:1.11' grafana: restart: unless-stopped container_name: grafana hostname: grafana environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_PLUGINS_PREINSTALL=marcusolsson-hourly-heatmap-panel volumes: - grafana_data:/var/lib/grafana ports: - '3000:3000' image: 'grafana/grafana:latest' volumes: influxdb_data: grafana_data:
若未设置GARMINCONNECT_EMAIL和GARMINCONNECT_BASE64_PASSWORD,或启用了2FA,需先执行以下命令进行交互式登录:
bashdocker pull thisisarpanghosh/garmin-fetch-data:latest && docker compose run --rm garmin-fetch-data
按提示输入Garmin***、密码(输入时可见,确保隐私环境)和2FA验证码。登录成功后,认证令牌将存储在garminconnect-tokens目录,有效期约1年,无需重复登录。
bashdocker compose up -d # 后台启动服务 docker compose logs --follow # 查看日志,排查潜在错误
http://localhost:3000,使用默认账号admin/admin登录[***](注意:使用容器名influxdb而非localhost)GarminStatsinfluxdb的INFLUXDB_USER和INFLUXDB_USER_PASSWORD一致23245直接从Grafana云获取Grafana仪表板中的热力图面板需安装插件:
bashdocker exec -it grafana grafana cli plugins install marcusolsson-hourly-heatmap-panel docker restart grafana
Garmin-cn用户需在garmin-fetch-data的环境变量中设置:
yaml- GARMINCONNECT_IS_CN=True
如需获取过去数据,执行以下命令(替换YYYY-MM-DD为实际日期):
bashdocker compose run --rm -e MANUAL_START_DATE=YYYY-MM-DD -e MANUAL_END_DATE=YYYY-MM-DD garmin-fetch-data
MANUAL_END_DATE可选,默认当前日期docker compose up -d恢复定期更新bashcd garmin-fetch-data # 进入compose.yml所在目录 docker compose pull # 拉取最新镜像 docker compose down && docker compose up -d # 重启服务 docker compose logs --follow # 验证更新是否成功
建议定期备份InfluxDB数据,以下脚本可创建备份:
bash#!/bin/bash TIMESTAMP=$(date +%F_%H-%M) BACKUP_DIR="./influxdb_backups/$TIMESTAMP" mkdir -p "$BACKUP_DIR" docker exec influxdb influxd backup -portable -db GarminStats /tmp/influxdb_backup docker cp influxdb:/tmp/influxdb_backup "$BACKUP_DIR" docker exec influxdb rm -r /tmp/influxdb_backup
恢复备份时,将备份文件复制到容器内,执行:
bashdocker exec influxdb influxd restore -portable -db GarminStats /path/to/backup/directory
详细备份恢复指南参考influxDB***文档。
garminconnect-tokens目录属主为1000:1000,或使用chmod -R 777 garminconnect-tokens临时解决SHOW TAG VALUES FROM "ActivityGPS" WITH KEY = "ActivitySelector" WHERE $timeFilterdocker compose run --rm garmin-fetch-data重新认证| 环境变量 | 说明 | 默认值 |
|---|---|---|
INFLUXDB_HOST | InfluxDB主机名 | influxdb |
INFLUXDB_PORT | InfluxDB端口 | 8086 |
INFLUXDB_USERNAME | InfluxDB用户名 | - |
INFLUXDB_PASSWORD | InfluxDB密码 | - |
INFLUXDB_DATABASE | 数据库名 | GarminStats |
GARMINCONNECT_EMAIL | Garmin*** | - |
GARMINCONNECT_BASE64_PASSWORD | Base64编码的Garmin密码 | - |
GARMINCONNECT_IS_CN | 是否为Garmin-cn用户 | False |
UPDATE_INTERVAL_SECONDS | 数据获取间隔(秒) | 300 |
FETCH_ADVANCED_TRAINING_DATA | 是否获取高级训练数据 | False |
KEEP_FIT_FILES | 是否保存FIT文件 | False |
USER_TIMEZONE | 时区(如Asia/Shanghai) | 自动获取 |
本项目由r/garmin社区众筹支持开发,感谢社区用户的慷慨***和信任!
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429