unsubbed.co

FitTrackee

For fitness & health tracking, FitTrackee is a self-hosted solution that provides outdoor activity tracker.

Open-source outdoor activity tracking, honestly reviewed. No marketing fluff, just what you actually get when you run it yourself.

TL;DR

  • What it is: A self-hosted web application for tracking outdoor workouts from GPX files, built on Python/Flask and Vue 3, with your data on your own server and nowhere else [README][2].
  • Who it’s for: Runners, cyclists, and hikers who are tired of paying Strava’s subscription fee to see their own data — and who already record workouts using a privacy-respecting Android app or a GPS device [README][1].
  • Cost savings: Strava’s paid subscription runs ~$11.99/month or ~$79.99/year. FitTrackee software is free (AGPL-3.0); the only cost is a $5–10/month VPS [README][5].
  • Key strength: Completely self-contained — your routes, your records, your server. OpenStreetMap-based maps, GPX upload, speed and elevation charts, multi-user support, and a REST API [README][2].
  • Key weakness: No native mobile recording app. You must separately use a GPS recording app (OpenTracks, FitoTrack, RunnerUp) and then manually import the GPX. If you want Strava’s one-tap record-and-sync experience, FitTrackee is not a drop-in replacement [README][2].

What is FitTrackee

FitTrackee is a web application that lets you upload GPX files from outdoor workouts — runs, bike rides, hikes, any activity your GPS tracker records — and stores and displays them on your own server. The GitHub description is unusually honest: “A simple self-hosted workout/activity tracker” [README]. It doesn’t claim to be a Strava killer. It’s a server you run yourself that holds your data.

The project is a single-developer effort by SamR1, with 1,088 GitHub stars and AGPL-3.0 licensing [1]. The README explicitly warns that it is “under heavy development (some features may be unstable)” — a notable admission that sets accurate expectations for what you’re signing up for [README].

The tech stack is Flask + PostgreSQL + PostGIS for the backend, Vue 3 + TypeScript for the frontend, Docker for deployment [README]. OpenStreetMap provides the map tiles, so you’re not sending route data to Google or Mapbox. The project manages translations through Weblate and currently supports multiple languages [README].

The typical workflow looks like this: you go for a run, your Android phone running OpenTracks records the GPX, you export the file, you upload it to your FitTrackee instance. That’s more friction than Strava, which syncs automatically from your phone or Garmin. But it’s also the entire point — the data goes where you decide it goes.


Why people choose it

The sources for this tool are thinner than for better-known projects, which is itself informative. FitTrackee has 24 alternatives listed on AlternativeTo and a small but growing presence in self-hosting communities [1][5]. The people choosing it are not doing so because of marketing — there is essentially no marketing. They’re choosing it because they want workout data sovereignty and they’re already comfortable with self-hosting.

The GNU/Linux.ch review from 2022 captures the appeal cleanly: the author notes that Strava-style services offer “free” storage, but “bezahlt wird natürlich wie so oft mit den eigenen, dort abgespeicherten Daten” — you pay with your own stored data [2]. FitTrackee is the answer for people who understand this trade-off and want out.

The personal installation blog from farrin.me.uk [3] provides the most candid real-world account available. The author had previously failed to get FitTrackee running, spent a month learning self-hosting basics on another project (Endurain, a similar tool), then returned to FitTrackee and succeeded. The takeaway: “And this time was successful.” The installation on a Debian LXC container with Docker, Tailscale, and Caddy took real effort but worked. The author is running it alongside Endurain and evaluating both [3].

That same author ran Endurain first and notes one thing Endurain does that FitTrackee doesn’t: “new activities are automagically being pulled in from Garmin.” FitTrackee requires manual GPX uploads. For anyone with a Garmin watch as their primary recording device, that gap matters [3].

The AlternativeTo listing [5] shows FitTrackee consistently appearing as an alternative to commercial fitness apps — Runkeeper, Strava, and various niche trackers — but it has only 4 likes, suggesting the audience is genuinely small. This is not a criticism; it’s a calibration. FitTrackee serves a specific niche and doesn’t pretend otherwise.


Features

Based on the README and the 2022 review [2]:

Activity logging:

  • Upload a GPX file to create a workout with full data parsed automatically [README]
  • Upload a ZIP file containing multiple GPX routes at once [2]
  • Manually create a workout without a file — you enter date, time, duration, and distance yourself [README][2]
  • At least 11 sport types supported [2]

Visualization:

  • Workout displayed on an OpenStreetMap map — no Google, no external tracking [README][2]
  • Speed chart and elevation chart per workout [README][2]
  • Dashboard with a month calendar view showing workouts and records [README][2]
  • Calendar displays up to 100 workouts [1]

Statistics:

  • Duration, session count, total ascent/descent, average speed [2]
  • Breakdowns by week, month, and year [2]
  • Personal records per sport type [README]
  • Filter and search your workout history [2]

Multi-user:

  • Multiple accounts with admin management [2]
  • Designed primarily for personal use, but capable of small-team or family instances [2]

Developer access:

  • REST API — full programmatic access to your data [README]
  • Command-line interface [README]
  • Third-party tools section in documentation lists integrations [README]

Device and app compatibility:

  • FitoTrack, OpenTracks, RunnerUp (Android GPLv3 apps) [README]
  • Amazfish (Sailfish OS, with direct FitTrackee integration from v2.9.0) [README]
  • Gadgetbridge (Android) — no direct integration, but GPX export works [README]
  • Any device or app that can export GPX or TCX files

What it doesn’t have:

  • Native mobile app for recording. None. You need a separate app [README][2].
  • Automatic sync with Garmin Connect, Strava, or wearables [3]
  • Social features — no followers, kudos, or segment leaderboards
  • AI-generated training insights or coaching
  • Route planning or navigation

Pricing: SaaS vs self-hosted math

Strava (the obvious comparison):

  • Free: basic activity logging with limited history and analytics
  • Strava Subscription: approximately $11.99/month or $79.99/year — pricing has varied; check current rates [data not independently verified in sources]
  • Data stays on Strava’s servers; export is possible but clunky

Garmin Connect:

  • Free with a Garmin device, but you’re locked to Garmin’s ecosystem and their servers

FitTrackee self-hosted:

  • Software: $0 (AGPL-3.0) [README]
  • A VPS to run it: $5–10/month on Hetzner, Contabo, or DigitalOcean
  • Your setup time (one-time)

Simple math for a solo runner:

If you’re paying Strava $79.99/year and you want that money back, self-hosting FitTrackee on a $6 Hetzner VPS runs you $72/year — essentially the same if you’re running nothing else on that server. The savings only become meaningful when you share the VPS across other self-hosted services (Nextcloud, Vaultwarden, etc.), which most self-hosters already do. In that scenario, FitTrackee adds effectively $0 to an existing VPS bill.

The real value proposition isn’t monetary for most FitTrackee users — it’s ownership. Strava can change its privacy policy, raise prices, or be acquired. Your FitTrackee instance runs on hardware you control until you decide otherwise.

One important caveat: FitTrackee has no hosted/cloud option. There’s no “FitTrackee Pro” SaaS tier. It’s self-host or nothing. If you’re not comfortable with a Linux server, you need either a technical friend or a service to deploy it for you [README][3].


Deployment reality check

The farrin.me.uk walkthrough [3] is the most useful real-world deployment account in the source set. Key observations:

The author ran Docker on a Debian 13 LXC container, added Tailscale for internal network access, and used Caddy as a reverse proxy for HTTPS. The install required adding repository entries for Docker and Tailscale, configuring LXC container permissions for Tailscale’s tun device, and wiring up Caddy to pull TLS certificates from the Tailscale CA [3].

That’s not a one-click experience. It’s the kind of setup that takes a technical person an afternoon and a beginner a weekend.

The official documentation covers Docker installation, a CLI, and troubleshooting [README]. PostgreSQL and PostGIS are required dependencies — the Docker Compose setup handles them, but you’re responsible for backup and upgrades [README].

What you actually need:

  • A Linux VPS or home server with 1–2GB RAM minimum (PostgreSQL + PostGIS are the memory floor)
  • Docker and docker-compose
  • A reverse proxy (Caddy or nginx) if you want HTTPS — which you do
  • A domain name or Tailscale hostname for internal access
  • An SMTP server if you want email notifications

Known friction points:

  • The README explicitly says the project is “under heavy development (some features may be unstable)” — this is not a project that treats stability as its top priority [README].
  • The Codeberg self-hosting repository [4] lists FitTrackee under “Archived — Proof-of-concept or previous services tested”, meaning at least one self-hoster evaluated it and moved on. Reasons aren’t stated.
  • No automatic sync from Garmin or Apple Watch — manual GPX upload is the only import path unless you use Amazfish on Sailfish OS [README][3].
  • AGPL-3.0 license means if you build a service on top of FitTrackee and offer it to others, you must open-source your modifications [README]. Not relevant for personal use, but worth knowing.

Realistic time estimate: 1–3 hours for a technical user following the documentation. For a non-technical founder: this is firmly in the “pay someone to set it up” category, or skip it.


Pros and cons

Pros

  • Data sovereignty, no asterisks. Your GPS tracks, your routes, your records — on a server you control. No policy changes, no acquisition risk, no data harvesting [README][2].
  • OpenStreetMap maps. Route visualization without sending data to Google Maps [README][2].
  • REST API. Full programmatic access to your workout data. You can build dashboards, run analysis, or export to anything [README].
  • Multi-user. Runs as a shared instance for family or a small group without separate deployments [2].
  • Docker deployment. The standard path is Docker Compose — battle-tested and well-documented [README][3].
  • Manual entry fallback. If your GPS died or your file is corrupt, you can still log the workout by entering duration and distance by hand [README][2].
  • Wide GPS app compatibility. Works with OpenTracks, FitoTrack, RunnerUp, and any app that exports GPX [README][5].
  • Free, forever. No “free tier with 5 activities” nonsense. No feature gates. AGPL-3.0, source available [README].

Cons

  • No native recording app. You need a separate GPS app. This is a two-step process: record on the phone, export, upload. Strava does this in one tap [README][2].
  • No automatic sync. No Garmin Connect integration, no Apple Health bridge, no webhook from your watch. Manual only, except via Amazfish on Sailfish OS [README][3].
  • Small project, single maintainer. 1,088 stars, one primary developer. If SamR1 stops maintaining it, you’re on your own [1][README].
  • Explicitly unstable. The README says so. This isn’t a polished commercial product [README].
  • AGPL-3.0, not MIT. Stricter than MIT for anyone building on top of it commercially [README].
  • No social layer. If segments, leaderboards, kudos, or following friends matters to you, FitTrackee has none of it. It’s a personal database, not a social network.
  • Deployment complexity. PostgreSQL + PostGIS + Docker + reverse proxy is not beginner territory [3].
  • No hosted option. No cloud tier to start with and migrate from later — it’s self-host from day one [README].

Who should use this / who shouldn’t

Use FitTrackee if:

  • You already use a privacy-respecting GPS app on Android (OpenTracks, FitoTrack) and want somewhere to store and analyze the data that isn’t Strava.
  • You’re comfortable deploying a Docker Compose stack with a reverse proxy, or you’ll pay someone to do it once.
  • Data ownership matters more to you than one-tap record-and-sync convenience.
  • You run a small group (family, training partners) and want a shared instance without SaaS pricing.
  • You want REST API access to your own workout data for analysis or custom dashboards.

Skip it (stay on Strava or Garmin Connect) if:

  • You rely on automatic sync from a Garmin or Apple Watch — FitTrackee doesn’t have it.
  • Social features matter: segments, leaderboards, following friends, kudos. FitTrackee is a personal database, not a social network.
  • You’ve never managed a Linux server and don’t plan to start.
  • You need a polished, stable product — the README explicitly warns it isn’t one yet.

Skip it (try Endurain instead) if:

  • You want automatic Garmin sync on a self-hosted platform — Endurain has it. The farrin.me.uk blog compares both and runs them side-by-side [3].

Alternatives worth considering

  • Strava — the incumbent. Best ecosystem (social, segments, device sync), biggest catalog of integrations, closed source, subscription-based.
  • Garmin Connect — free with Garmin devices, excellent sync, but fully closed and Garmin-locked.
  • Endurain — self-hosted, similar scope to FitTrackee, adds automatic Garmin sync. The farrin.me.uk author runs both [3].
  • Workout Tracker — another self-hosted option listed on AlternativeTo, GPX-based, smaller project [5].
  • OpenTracks — Android app for recording only; doesn’t provide server-side storage or analysis, but pairs naturally with FitTrackee for the recording step [README][5].
  • Wanderer — trail database platform, self-hostable, showing up in the same self-hosting circles [4].

For a non-technical founder who wants Strava data sovereignty, the realistic shortlist is FitTrackee vs Endurain. Both are small projects under active development. Endurain’s Garmin sync is a meaningful differentiator if you own a Garmin device. FitTrackee’s longer track record (it’s been around since at least 2022) and its REST API are its edge.


Bottom line

FitTrackee is an honest, unpretentious tool. It does what it says: stores your outdoor workout GPX data on your own server with maps, charts, and statistics. It’s not trying to replace Strava’s social network or Garmin’s device ecosystem — it’s trying to be the place your workout data actually lives, on hardware you own.

The trade-offs are real and worth naming plainly. You lose automatic sync, one-tap recording, and social features. You gain data ownership, REST API access, and zero per-month software cost. The setup requires comfort with Docker and a reverse proxy, or help from someone who has it.

For a non-technical founder, this is squarely in the “deploy it once and forget it” category — but someone has to do that deploy. If the deployment is the blocker, that’s exactly what unsubbed.co’s parent studio upready.dev handles for clients. One-time fee, done, your workout data lives where you decide.


Sources

  1. AlternativeTo — FitTrackee: Self hosted outdoor activity tracker — alternativeto.net. https://alternativeto.net/software/fittrackee/about/
  2. Martin, GNU/Linux.ch“FitTrackee - Self-Hosted Ativitätstracker” (September 8, 2022) — gnulinux.ch. https://gnulinux.ch/fittrackee-self-hosted-ativitaetstracker
  3. Si, FN Trail Running Cheshire“More self-hosting of running” (September 11, 2025) — farrin.me.uk. https://farrin.me.uk/more-self-hosting-of-running
  4. Benito Palacios Sanchez, Codeberg“pleonex/self-hosting: Document and scripts for my own self-hosted services” — codeberg.org. https://codeberg.org/pleonex/self-hosting
  5. AlternativeTo“Open Source ASICS Runkeeper Alternatives: Top 18 Run Trackers & Similar Apps” — alternativeto.net. https://alternativeto.net/software/runkeeper-pro/?license=opensource

Primary sources:

Features

Integrations & APIs

  • REST API

Mobile & Desktop

  • Mobile App