/strava-tile-proxy

Proxy strava heatmap tiles

Primary LanguageGo

Strava Tile Proxy

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)

Gaia screenshot of tiles

Configuration & Usage

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 email
  • STRAVA_PASSWORD - your strava account's password (social sign in is not supported)
  • REVEAL_PRIVACY_ZONES - (bool) reveal strava privacy zones
  • REVEAL_ONLY_ME_ACTIVITIES - (bool) reveal activities only visible to you
  • REVEAL_FOLLOWER_ONLY_ACTIVITIES - (bool) reveal activities visible to only your followers
  • REVEAL_PUBLIC_ACTIVITIES - (bool) reveal activities that are public
  • API_TOKEN - (optional, string) if non-empty, must be present in the api_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:

Setup

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