Taking Back My Data: Why I Ditched Strava Premium and Built My Own Fitness Dashboard
At the start of 2024, I committed to a more structured, intentional approach to fitness. I wrote about that shift in this post—how I rebalanced work, training, and health after years of background noise and distractions. That lifestyle change led to something else too: wanting more control over my data.
Table Of Content
- Taking Back My Data: Why I Ditched Strava Premium and Built My Own Fitness Dashboard
- Why Self-Host?
- The Project
- What It Offers
- Dashboard Overview
- Custom Gear & Maintenance Tracking
- Gear Maintenance in Action
- My Setup: Dockerised and Customised
- Segments and Efforts
- Pairing It with Garmin Connect
- The Result?
- Want to Try It?
Strava Premium had served its purpose. But by mid-2024, I was staring at the £6.99/month subscription fee thinking: I’m paying to access my own training data… and I can’t even customise it.
So, I ditched it.
Instead, I deployed Statistics for Strava, a brilliant open-source self-hosted dashboard built by Robin Ingelbrecht. It runs on my home server, behind Traefik, and it now handles all my training visualisation, gear management, and maintenance tracking—without the paywall.
Here’s how it works, what it looks like, and why it’s now one of my favourite parts of my fitness routine.
Why Self-Host?
Because I wanted:
Full ownership of my activity history
Better visibility into trends and progress
Gear tracking with proper usage and maintenance logs
Custom layouts and mobile-friendly tweaks
No more feature gating or subscription fees
I still use Strava to sync activities from Garmin—but now I control how I see and use that data.
The Project
All credit to Robin Ingelbrecht, who built and maintains Statistics for Strava—a clean, fast, and open-source dashboard that pulls from the Strava API and runs beautifully in Docker.
It’s an absolute gift to data-driven athletes, and one of the best open-source tools I’ve come across.
What It Offers
📅 Monthly calendar view of your activities
📊 Weekly, monthly, yearly stats (distance, time, elevation)
🏅 Badges and PR tracking
🔁 Rewind feature for year-on-year comparisons
📷 Activity photos and route maps
🔥 Heatmaps by activity type
🛠️ Full gear and maintenance tracking
Dashboard Overview
Here’s the central dashboard showing my recent activity overview, weekly totals, and training consistency.

Custom Gear & Maintenance Tracking
This is the killer feature for me. I track:
Peloton Bike+
Drive belt tension Checks
Deep Clean
Peloton Tread
Deep clean every 100km
Belt Tension check every month
SUP kit
Fin, leash, drybag rotation
Running trainers
Mileage and swap cycles
Everything is logged per activity, with reminders when maintenance is due. No spreadsheet needed.
Gear Maintenance in Action

My Setup: Dockerised and Customised
Here’s my live setup, running behind Traefik with persistent storage and custom layout overrides:
services:
strava:
image: robiningelbrecht/strava-statistics:latest
container_name: strava
env_file: $DOCKERDIR/config/strava/.env
volumes:
- $DOCKERDIR/config/strava/config:/var/www/config/app
- $DOCKERDIR/config/strava/gear/:/var/www/storage/gear-maintenance/
- $DOCKERDIR/config/strava/.env:/var/www/.env
- $DOCKERDIR/appdata/strava/build:/var/www/build
- $DOCKERDIR/appdata/strava/storage/database:/var/www/storage/database
- $DOCKERDIR/appdata/strava/storage/files:/var/www/storage/files
- $DOCKERDIR/config/strava/templates:/var/www/templates
networks:
- t3_proxy
security_opt:
- no-new-privileges:true
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 30s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
labels:
- "traefik.enable=true"
- "traefik.http.routers.strava-rtr.entrypoints=websecure"
- "traefik.http.routers.strava-rtr.rule=Host(`strava.$DOMAINNAME`)"
- "traefik.http.routers.strava-rtr.middlewares=chain-no-auth@file"
- "traefik.http.routers.strava-rtr.service=strava-svc"
- "traefik.http.services.strava-svc.loadbalancer.server.port=8080"
Mounting the /templates
folder means I can tweak how things look—mobile layout, dashboard order, colours. Fully mine.
Segments and Efforts
All your efforts, all your PRs—filterable, sortable, visual.

Pairing It with Garmin Connect
I use Garmin Connect for performance and recovery insights: heart rate variability, training load, VO2 max. But it’s not built for long-term review.
Statistics for Strava complements that perfectly:
It shows trends, volume, gaps, and consistency
It tracks kit usage and maintenance
It reminds me when gear needs love—not when it’s too late
The Result?
✅ No more Strava paywall
✅ Clean data visualisation
✅ Kit MOT built-in
✅ Total control, zero fluff
✅ Fits my training, my gear, my goals
And it all feeds into my lifestyle reset from 2024. This isn’t about chasing leaderboards—it’s about sustainable progress and knowing what’s going on.
Want to Try It?
Full credit to Robin Ingelbrecht for building this tool
Please share this article if you like it!
I’m a fitness enthusiast and Peloton addict who loves challenging limits through races, paddleboarding, and life’s adventures. Here, I share milestones, reflections on Acoustic Neuroma, and stories of resilience and growth.