Endurain
Endurain is a Python-based application that provides fitness tracking service designed to give users full control over their data and hosting environment.
A privacy-first fitness tracker, honestly reviewed. Built by a Portuguese triathlete who wanted to own his own data.
TL;DR
- What it is: Self-hosted fitness tracking service — think Strava, but your workout data lives on your server, not theirs [4].
- Who it’s for: Privacy-conscious runners, cyclists, and triathletes who want to stop feeding their training history to a corporate cloud. Comfortable with basic Docker deployment or willing to learn [1][4].
- Cost savings: Strava Summit runs ~$79.99/year. Endurain self-hosted runs on a $5–10/mo VPS — software is free under AGPL-3.0 [4].
- Key strength: Integrates with both Strava and Garmin Connect, supports GPX/TCX/FIT file imports, and includes gear tracking, goal setting, SSO, and MFA — all features that cost money on commercial platforms [4].
- Key weakness: Single-developer passion project at 1,840 GitHub stars. No mobile app. No activity timeline scrubbing. Setup requires Docker comfort and a willingness to debug PostgreSQL inside a container [2][4].
What is Endurain
Endurain is a self-hosted fitness tracking service built by João Vitória Silva, an amateur triathlete from Portugal. The pitch is simple: it does what Strava does, but your data stays on your machine. The GitHub description calls it “a self-hosted fitness tracking service designed to give users full control over their data and hosting environment” — which is an accurate, unembellished summary of what it actually is [README].
The project started as a learning exercise. The developer says so directly in the documentation: he built it to get hands-on experience with modern development practices, and as a way to track his own gear and activity history without handing that data to a third party [website]. This transparency matters — you’re not evaluating a VC-backed startup’s Strava killer, you’re evaluating a well-executed side project by someone who scratches his own itch.
The stack is Vue.js frontend, Python FastAPI backend, PostgreSQL database, deployed via Docker. For integrations, it speaks Strava’s API natively, connects to Garmin Connect, and accepts manual imports via GPX, TCX, and FIT files — the three file formats that cover essentially every GPS watch and cycling computer on the market [README]. A live demo at demo.endurain.com resets daily if you want to poke around before committing [README].
As of this review, the project sits at 1,840 GitHub stars and is actively developed — version 0.14.2 was available as of September 2025, with 0.13.3 to 0.14.0 updates shipping within weeks of each other [2].
Why people choose it
The motivations that push people toward Endurain cluster around the same three concerns: social media fatigue, data ownership anxiety, and a specific frustration with not having a local copy of years of fitness history.
The Strava disillusionment story. The most detailed first-hand account comes from a trail runner who deleted his Strava profile years before discovering Endurain [1]. His reasons: increasing discomfort with how personal location data gets aggregated and monetized, a change in how the platform felt socially, and the realization that — practically — he had lost nearly a decade of running history when he deleted his account because he hadn’t maintained a separate local backup. He tried FitTrackee first, couldn’t get it running, and eventually got Endurain working. The result was exactly what he wanted: a private, searchable archive of his runs that doesn’t require an internet connection or a subscription to view [1].
The control argument. The XDA Developers review [4] frames the value proposition around three trade-offs with commercial platforms: data stored on their servers, recurring subscription costs for features that should be table stakes, and no real ownership of your training history. Endurain inverts all three. After connecting it to Strava or Garmin, activities sync automatically into a database you control. The reviewer notes: “Nothing brings more peace of mind than knowing that your data is under your control, and that’s the core of what Endurain gives you” [4].
The customization angle. Because it’s open source, you can modify it. The XDA review mentions being able to adjust it to focus on the metrics that matter most — cycling power data, running cadence, swimming splits — rather than whatever a commercial platform has decided is worth showing you [4].
What doesn’t get overstated: None of the reviewers claim Endurain matches Strava feature-for-feature. It doesn’t have route discovery, segment competitions, a social feed of your actual friends, or a mobile app. The people choosing Endurain aren’t looking for those things — they already decided those weren’t worth the trade-offs [1][2].
Features
Based on the README and documentation:
Activity tracking:
- Activity import via manual upload (GPX, TCX, FIT files) or bulk import [README]
- Strava integration — syncs activities and gear [README]
- Garmin Connect integration — syncs activities, gear, and body composition [README]
- Activity feeds with week/month statistics [README]
- Basic activity privacy settings [README]
- Third-party app support (RunnerUp and others) [4]
Gear and component tracking:
- Wetsuits, bicycles, shoes, racquets, skis, snowboards [README]
- Gear component tracking — e.g., track bike chain replacement intervals [README]
- Default gear per activity type [README]
- Gear synced from Strava [README]
Goals and health logging:
- Define and track goals with automatic progress updates from synced activities [4]
- Weight, steps, and sleep logging [README]
- Body composition sync from Garmin Connect [README]
User management:
- Multi-user with admin and user profiles [README]
- Follower features (view others’ activities) [README]
- User pages with stats and activity histories [README]
- MFA TOTP support [README]
- SSO support (OIDC/SAML) [README]
- Configurable signup with email verification and admin approval [README]
- Password reset via email (Apprise for notifications) [README]
Usability:
- Multi-language UI (12+ languages via Crowdin, including Spanish, French, German, Portuguese, Chinese) [README]
- Imperial and metric unit support [README]
- Dark/light theme [README]
- Notification system [README]
What’s missing or not yet there:
- No mobile app
- No route timeline scrubbing — you can’t drag along a route on the map to see split data at a specific point; this is flagged as a known gap by the developer’s own community [2]
- No native mobile recording (Endurain is a storage and analysis platform, not a workout recorder)
Pricing: SaaS vs self-hosted math
Endurain has no cloud offering — there is no managed tier, no freemium SaaS, no hosted option. It is purely self-hosted software. The software itself is free under AGPL-3.0. Your only cost is the infrastructure you run it on.
Strava for comparison:
- Free tier: basic activity tracking, no route analysis, no training plans, no heart rate graphs beyond three months
- Strava Subscriber: approximately $79.99/year or $11.99/month (pricing from Strava’s public pricing page — not cited by reviewed articles, included for comparison context)
- Premium features include segment leaderboards, training analysis, fitness trend charts, route discovery
Garmin Connect for comparison:
- Free tier: full data sync, no third-party integration limitations
- Garmin Connect+ (launched 2025): roughly $6.99/month for AI coaching and advanced training recommendations
- Basic activity analysis and history: free
Self-hosted Endurain:
- Software: $0 [README]
- VPS: $4–8/month on Hetzner or Contabo for a machine that comfortably runs the stack
- Your time to set up and maintain
Concrete savings: If you’re paying Strava’s subscriber rate at ~$80/year, Endurain on a $5/month VPS costs $60/year — and that VPS can run other services too. The real comparison is zero subscription fee vs. $80/year, plus a one-time setup effort. Over three years, that’s $240 saved on Strava alone [4].
Note: Endurain doesn’t replace Garmin Connect or Strava’s device sync infrastructure — many users run it alongside those platforms, pulling data out of them rather than instead of them [1][2].
Deployment reality check
The install story is Docker Compose. A documented example docker-compose.yml ships with the project and the documentation covers the basics [README]. Services required: the Endurain container, PostgreSQL, and an optional reverse proxy for HTTPS.
What you actually need:
- A Linux VPS with 1–2 GB RAM minimum
- Docker and docker-compose installed
- A domain and reverse proxy (Caddy or nginx) for HTTPS
- PostgreSQL (bundled in the example compose file)
The first-hand installation accounts paint an honest picture. The trail runner from source [1] describes the overall self-hosting learning curve as a significant barrier — he failed to install FitTrackee before succeeding with Endurain, and notes that “a certain amount of computing knowledge and understanding required in order to get started” is a real prerequisite. Once past that hump, Endurain’s Docker-based setup was workable [1].
What can go sideways:
A real-world maintenance issue surfaced during an update from v0.13.3 to v0.14.0 — a PostgreSQL collation version mismatch that appeared in the error logs and required running a manual fix inside the container [2]:
docker exec -t endurain-postgres psql -U endurain -d endurain
ALTER DATABASE endurain REFRESH COLLATION VERSION;
This is exactly the kind of thing that doesn’t appear in marketing copy and does appear when you actually run software through a version upgrade. It’s fixable, but it requires knowing how to exec into a container and run a psql command — skills a non-technical user may not have [2].
The author of [2] kept running v0.14.0 rather than upgrading further because “it’s all working fine” — a pragmatic stance that reflects the reality of self-hosted maintenance: once it works, you leave it alone [2].
Realistic time estimate: 1–2 hours for someone comfortable with Docker and Linux. Half a day for someone newer to self-hosting following documentation closely. If you’ve never touched a Linux server, budget more time or get help.
Pros and Cons
Pros
- Full data sovereignty. Your GPS tracks, heart rate data, and training history live on your hardware. No third party, no API terms changes, no “we’re sunsetting this feature” emails [1][4].
- Strava and Garmin integration. Pulls data from both platforms automatically, rather than requiring you to abandon them entirely. You can use Garmin’s device sync and still own the data locally [README][4].
- Gear and component tracking is more detailed than what Strava offers for free — including component-level tracking (bike chains, etc.) that matters to anyone doing regular maintenance [README].
- SSO and MFA included. OIDC/SAML SSO and TOTP two-factor are available without a commercial license — features that cost money on many self-hosted platforms [README].
- Active development. Multiple releases within a short window (0.13.3 → 0.14.0 → 0.14.2 within a month), with responsive updates to bugs [2][3].
- Multi-language UI with community translations across 12+ languages, managed through Crowdin [README].
- Demo environment at demo.endurain.com lets you evaluate it before committing to a server setup [README].
Cons
- Single developer. This is a passion project, not a company. João is an amateur triathlete who built this for himself [README]. If he loses interest or gets busy, the project’s trajectory is uncertain.
- No mobile app. You can’t record a run from Endurain. It’s purely a data store and analysis platform. You still need a Garmin, Wahoo, or phone app to record activities [4].
- No route timeline scrubbing. You can view a route on a map but can’t drag the cursor to see split data at specific points in the activity. This was flagged as a missing feature in September 2025 [2].
- PostgreSQL maintenance inside Docker can bite you during version upgrades. The collation fix required for v0.14.0 is documented in a personal blog post, not in the official docs — exactly the kind of gap a solo maintainer leaves [2].
- AGPL-3.0 license with trademark restrictions. The AGPL requires sharing source code for any hosted service, and commercial use of the Endurain name or logo requires written permission from the developer. Not a concern for personal use, but relevant if you were considering offering it as a service [README].
- No timeline on roadmap items. The roadmap exists on GitHub but no delivery dates. Features are built when the developer has time [README].
- Small community. 1,840 GitHub stars is modest. Troubleshooting resources outside the official documentation and Discord are limited to a handful of personal blog posts [1][2].
Who should use this / who shouldn’t
Use Endurain if:
- You want a private archive of your fitness history that you actually own and can query forever.
- You’re already using a Garmin device or Strava and want to pull your data out of their clouds into something you control.
- You track gear usage seriously — especially if you’re a cyclist who wants component-level tracking.
- You’re comfortable with Docker and basic Linux administration, or willing to learn.
- You want SSO and multi-user setup for a household without paying for an enterprise tier.
Skip it (stay on Strava) if:
- You care about the social layer — segment competition, following athletes, Strava’s route suggestions.
- You want to record runs directly from a smartphone app without a GPS watch.
- You have no interest in managing a Linux server.
- Your training analysis needs are served adequately by Garmin Connect’s free tier.
Skip it (try FitTrackee instead) if:
- You’ve evaluated both and prefer FitTrackee’s UI or feature set — it’s a direct alternative doing the same job, and the comparison is worth making. The author of [2] ultimately ran both side-by-side to evaluate them, which is the honest approach.
Skip it entirely if:
- Your concern is getting better training insights, not owning your data. Strava’s analysis tools and coaching features have years of development behind them. Endurain is a storage and viewing platform, not a training intelligence platform.
Alternatives worth considering
- Strava — the market reference point. Vast social network, route discovery, mature analysis tools, segment competition. Closed source, cloud-only, ~$80/year for premium features. The thing most Endurain users are escaping [1][4].
- Garmin Connect — deep Garmin device integration, solid free tier for basic analysis. Still cloud-hosted, and Garmin’s new Connect+ subscription is adding premium features behind a paywall.
- FitTrackee — the direct open-source competitor to Endurain. Also self-hosted, also Docker-deployable. The author of [1] couldn’t initially install it but later succeeded [2]. Worth evaluating in parallel — the two projects overlap heavily in scope.
- OpenTracks — Android app for recording activities locally, without syncing anywhere. Minimal, privacy-first, but purely a recorder — no server, no analysis.
- Runalyze — self-hostable analytics platform for runners. More analysis depth than Endurain, less polished UI. Different audience (serious athletes who want training load metrics).
- Traccar — open-source GPS tracking, not fitness-specific. Worth knowing about but solves a different problem.
For the privacy-motivated athlete who wants to escape Strava, the honest shortlist is Endurain vs FitTrackee. Both are self-hosted, both accept GPX/TCX/FIT imports, both are actively developed. Endurain wins on Garmin Connect integration and gear component tracking. FitTrackee has a longer history and a different community. Run the demo for each.
Bottom line
Endurain is a well-built, honestly scoped, privacy-first alternative to Strava for people who’ve decided that feeding years of location and biometric data to a commercial platform isn’t worth the convenience. It won’t replace Strava’s social features or training intelligence — it doesn’t try to. What it does is give you a permanent, private, self-hosted archive of your fitness history with automatic sync from Garmin and Strava, solid gear tracking, and more enterprise-grade features (SSO, MFA, multi-user) than you’d expect from a one-person project. The trade-off is real: you’re betting on a single developer’s continued interest, and you’re responsible for your own database when updates ship with collation bugs. For a privacy-motivated athlete with basic Docker skills, that trade-off is straightforward. For everyone else, Strava is still easier.
Sources
- Si Farrin, FN Trail Running Cheshire — “Self-hosting my running history with Endurain” (August 19, 2025). https://farrin.me.uk/self-hosting-my-running-history-with-endurain
- Si Farrin, FN Trail Running Cheshire — “More self-hosting of running” (September 11, 2025). https://farrin.me.uk/more-self-hosting-of-running
- Ethan Sholly, selfh.st — “This Week in Self-Hosted (3 January 2025)” — Endurain v0.7.0 release note. https://selfh.st/weekly/2025-01-03/
- Victor Awogbemila, XDA Developers — “This self-hosted fitness tracking service is just what you need to replace the cloud” (October 24, 2025). https://www.xda-developers.com/self-hosted-fitness-tracking-service/
Primary sources:
- GitHub repository and README: https://github.com/endurain-project/endurain (1,840 stars, AGPL-3.0 license)
- Official documentation: https://docs.endurain.com
- Live demo: https://demo.endurain.com
Replaces
Related Health & Lifestyle Tools
View all 53 →Monica
24KPersonal CRM for tracking interactions with friends, family, and contacts with relationship management tools.
Habitica
14KHabitica is a self-hosted habit & personal tracking tool with support for Habit Tracking, Tracking.
Mealie
12KMealie handles material design inspired recipe manager as a self-hosted solution.
Tandoor Recipes
8.1KTandoor Recipes handles manage recipes, plan meals, build shopping lists, and much much more as a self-hosted solution.
Workout.cool
7.1KWorkout.cool lets you run modern fitness coaching platform entirely on your own server.
wger
5.8KReleased under AGPL-3.0, wger provides web-based personal workout on self-hosted infrastructure.