This is a simple Go server that proxies my personal strava heatmap and the global heatmap on a public endpoint in order to use it as a map source in Gaia GPS. It requires using manual credentials and web scraping, as heatmap data is not available through Strava's OAuth api.
(You can follow me on Strava here)
The server is configured through environment variables, all of which are required:
ATHLETE_ID
- your strava athlete ID (https://www.strava.com/athletes/$ATHLETE_ID)STRAVA_EMAIL
- your strava account's emailSTRAVA_PASSWORD
- your strava account's password (social sign in is not supported)REVEAL_PRIVACY_ZONES
- (bool) reveal strava privacy zonesREVEAL_ONLY_ME_ACTIVITIES
- (bool) reveal activities only visible to youREVEAL_FOLLOWER_ONLY_ACTIVITIES
- (bool) reveal activities visible to only your followersREVEAL_PUBLIC_ACTIVITIES
- (bool) reveal activities that are publicAPI_TOKEN
- (optional, string) if non-empty, must be present in theapi_token
query parameter on requests
Tiles are accessible at the url /tiles/{z}/{x}/{y}
, where z
, x
, and y
are standard TMS xyz coordinates, with a maximum z
of 14 and a minimum of ~6. A query parameters can be used customize tiles:
color
(default: "red") - strava heat color (supported options)sport
(default: "all") - strava sports (supported options)
This repo publishes a docker image you can use to run the proxy. I run using docker compose:
strava-tile-proxy:
container_name: strava-tile-proxy
image: ghcr.io/apexskier/strava-tile-proxy/strava-tile-proxy:latest
ports:
- 43503:8080
environment:
- STRAVA_EMAIL
- STRAVA_PASSWORD
- REVEAL_PRIVACY_ZONES
- REVEAL_ONLY_ME_ACTIVITIES
- REVEAL_FOLLOWER_ONLY_ACTIVITIES
- REVEAL_PUBLIC_ACTIVITIES
restart: unless-stopped