The XDA piece on rebuilding a fitness stack with Endurain and FitPub captured something the Strava-leaving crowd has been quietly converging on for two years: if the platform can pull the rug on the API, the data should not live on the platform. Self-hosting activity tracking, workout plans, and performance analytics on a home server keeps the GPX files, the heart-rate data, and the body composition history under one roof, on hardware that nobody else can deprecate.
We looked at six self-hosted fitness apps for desktop and server use that handle activities, workouts, and recovery without sending data to a subscription cloud. All run on Linux, most run in Docker, and the home-lab footprint is small enough to live next to Jellyfin and Pi-hole on the same NUC.
What to look for in a self-hosted fitness tracking app
- Reads GPX, FIT, and TCX. Strava exports come in these formats, and an importer is the difference between starting fresh and bringing years of history.
- Has a working web UI. Most of the time the workout review happens on a phone over the local network or via reverse proxy, and a usable web UI is non-negotiable.
- Docker-first. Native installs are still possible, but a maintained image is what keeps a home-lab service alive past a year.
- Mobile client compatibility. The activity capture happens on a phone or watch. A self-hosted tracker should accept uploads from common Android and iOS clients (or run a companion).
- Handles more than one sport. Run-only apps are a sub-category. Most self-hosters want one server that takes runs, rides, walks, and indoor sessions.
Quick comparison
| App | Best for | Platforms | Install | Free |
|---|---|---|---|---|
| FitTrackee | All-around self-hosted activity tracker | Linux, Docker | Docker, Python | Yes |
| Endurain | Modern Python tracker with watch integrations | Linux, Docker | Docker, Python | Yes |
| Wger | Workout and gym session planning | Linux, Windows, macOS, Docker | Docker, Python | Yes |
| GoldenCheetah | Desktop performance analytics | Linux, Windows, macOS | Native binaries | Yes |
| FitPub | Lightweight activity publishing | Linux, Docker | Docker | Yes |
| OpenScale | Body composition history | Linux, Windows, macOS, Android | Native binary, Android APK | Yes |
| Statistics for Strava | Personal analytics layer over Strava export | Linux, Docker | Docker, Python | Yes |
The 6 best self-hosted fitness tracking apps for desktop
1. FitTrackee — best all-around self-hosted Strava replacement
FitTrackee is the closest one-for-one replacement for Strava on the self-hosted side. Multi-sport activity tracking, GPX import and export, federated user accounts via ActivityPub, weather data on activities, and a workout calendar all run in a Python web app that drops into Docker without much fuss. The web UI is plain but functional, and the project has been actively developed for years.
Where it falls short: The mobile experience is via the web UI; there isn’t a polished first-party mobile app yet. Federation is a feature for some self-hosters and noise for others.
Platforms: Linux, Docker. Web UI on any browser.
Bottom line: The default pick for self-hosted activity tracking in 2026.
2. Endurain — best modern tracker with device integrations
Endurain is the newer Python-based tracker that XDA called out specifically. The differentiators are device integrations (Strava import, Garmin sync support, and webhook ingestion from training devices) and a UI that feels closer to a modern fitness app than FitTrackee’s classic web interface. The training plan support and activity grouping make multi-week training blocks easier to review than in a flat activity list.
Where it falls short: Younger project. Documentation gaps appear here and there, and breaking changes between minor versions are not unheard of.
Platforms: Linux, Docker. Web UI on any browser.
Bottom line: The right pick when device integration is the gap and the project’s pace of development is a feature, not a risk.
3. Wger — best for gym workout planning
Wger is the gym side of the stack that the activity-tracking apps above leave out. Exercise database, custom workout templates, set/rep tracking, nutrition logging, and body weight history all live in one Django app. The exercise database is community-maintained with thousands of exercises and demonstration images, and the routine builder is genuinely useful for periodized strength programs.
Where it falls short: Not for GPS activities. Wger handles the gym; the road and trail belong in FitTrackee or Endurain.
Platforms: Linux, Windows, macOS, Docker. Native Android client.
Bottom line: The right pick when the strength-training side of the stack needs a server. Pair with FitTrackee for full coverage.
4. GoldenCheetah — best desktop performance analytics
GoldenCheetah is the desktop-native power analysis tool that endurance athletes have used for over a decade. The depth of analysis (training stress score, performance management chart, critical power modelling, intervals analysis, ANT+ device support) is closer to a commercial coaching platform than to a hobby app. It runs locally as a native binary on Linux, Windows, and macOS, with no server component required.
Where it falls short: Desktop-only by design; not a web app or mobile companion. The UI takes investment to learn.
Platforms: Linux, Windows, macOS. Native binaries.
Bottom line: The pick for serious cyclists and runners who treat training analysis as a hobby of its own.
5. FitPub — best for lightweight activity publishing
FitPub is the smaller half of the XDA self-hosted stack: a lightweight Python service whose job is to receive activities (from a phone, a watch, or a Strava bulk export) and republish them on a public or private feed. It runs alongside FitTrackee or Endurain rather than replacing them, and it gives non-technical friends a “follow my rides” link without giving them a Strava account.
Where it falls short: Niche by design. Without a tracker like FitTrackee or Endurain feeding it, the value is limited.
Platforms: Linux, Docker.
Bottom line: The right add-on when self-hosted activity sharing without third-party signup is the goal.
6. OpenScale — best for body composition tracking
OpenScale is the open-source body composition tracker that reads Bluetooth smart scales (Mi Body Composition, Trisa, Yunmai, and a long list) and stores the history locally or syncs to a self-hosted backend. The desktop client is a small native binary, and the Android client pairs with the same database. Weight, body fat percentage, muscle mass, and water percentage trends graph over time without an account.
Where it falls short: Not an activity tracker. The scope is body composition only.
Platforms: Linux, Windows, macOS, Android.
Bottom line: The pick to round out the stack with body composition history that doesn’t require a vendor cloud.
How to pick the right one
If we want a single self-hosted activity tracker: FitTrackee or Endurain. Pick FitTrackee for maturity, Endurain for modern device integrations.
If the strength side of training is the gap: Wger.
If we want desktop-grade performance analytics: GoldenCheetah alongside one of the trackers above for capture.
If we want to publish activities without exposing the tracker: FitPub in front of FitTrackee or Endurain.
If body composition history matters: OpenScale as the dedicated layer.
If we want to keep Strava as the capture point but own the analytics: Statistics for Strava to process the bulk export locally.
FAQ
Can I import my Strava history into a self-hosted tracker? Yes. FitTrackee, Endurain, and Statistics for Strava all accept the GPX/FIT files from Strava’s bulk export. The activity history transfers; segment data does not.
Which self-hosted fitness app handles both runs and gym workouts? None do both well in one package. Pair an activity tracker (FitTrackee or Endurain) with Wger for strength training.
Does self-hosted fitness tracking work offline? Yes. Once installed on a home server, the data and the web UI work on the local network without an internet connection.
What hardware do I need to run a self-hosted fitness server? A Raspberry Pi 4 with 2 GB of RAM is enough for FitTrackee, Endurain, Wger, or FitPub. GoldenCheetah runs on whatever desktop is convenient.
Can I still use a Garmin or Polar watch with self-hosted tracking? Yes. Activities export from Garmin Connect and Polar Flow as FIT/GPX files. Endurain has direct sync support for Garmin via the configured webhook.
Is there a self-hosted Strava alternative with a mobile app? FitTrackee and Endurain are web-first; the mobile UI is the web UI on a phone. Wger has a native Android client. For full first-party mobile, the self-hosted side is still catching up.