Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
Self-host Endurain
updated Oct 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
A self-hosted fitness tracking service: import activities from GPX, TCX and FIT files or sync them from Strava and Garmin Connect, browse them on maps with charts, and follow your own statistics. FastAPI and Vue with PostgreSQL, shipped as one application container.
Runs on a VPS from $6/mo (Kamatera 2GB, 2 GB RAM) · prices checked Sep 2026
Our recommendation
Pick Endurain when you want a privacy-first, Strava-like place for your own workouts on your own server: the README describes it as a self-hosted fitness tracker with Strava and Garmin Connect integration and manual upload of `.gpx`, `.tcx` and `.fit` files. The application is a FastAPI backend and a Vue frontend over PostgreSQL, AGPL-3.0, and runs as one application container plus the database. Our snippet is the project's Compose example with the image pinned to a release tag, generated secrets in `.env` and the data folders created with the ownership the docs ask for. We did not find an upstream RAM minimum, so our 512 MB floor is an estimate. Workout Tracker is the leaner Go alternative in the catalog and wger the workout-planning and nutrition manager.
What you need
Any VPS with at least 512 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
Endurain's README and quick-start guide flag these before you rely on it:
non-negotiableThe default sign-in after setup is admin / admin and the guide says to change the password right away. ENDURAIN_HOST must match the URL you type in the browser, or you cannot log in: the guide says to set up a reverse proxy next, and our .env uses the SERVER_IP placeholder with BEHIND_PROXY=false; edit both to match how you reach it.
non-negotiableThe container runs as UID 1000, so the bind-mounted data and logs folders must exist before the first start and be owned by that user, which our snippet does with chown; on SELinux hosts the guide adds a chcon step. Activity files, images, logs and the PostgreSQL data all sit under the folder you choose, so back all of it up.
non-negotiableSECRET_KEY and FERNET_KEY are generated into .env (openssl rand); keep them with your backups, because the app needs the same values every time it starts. The README states that Endurain is on a temporary feature freeze while the project strengthens its foundations, and that Endurain is a registered trademark whose commercial use needs permission.
non-negotiablePort 8080 is plain HTTP, and Strava and Garmin Connect sync send your activity data to those third parties, so decide which integrations to enable. The example Compose file uses endurain:latest and a pinned postgres:18; we pin Endurain v0.20.1 (released 2026-10-21), and the image now lives under the endurain-project organisation.