Community Apps

Endurain

By OrcVole

Self-hosted fitness tracking for endurance sports

0.20.2 1536MB Updated 31 Oct 2026
fitness tracking health gpx strava garmin
Install this app
In your Cloudron dashboard, open the App Store, choose "Community apps" and paste this URL:
https://raw.githubusercontent.com/OrcVole/endurain-cloudron/main/CloudronVersions.json

Description

0.20.2

Endurain is a self-hosted fitness tracking platform for endurance sports: running, cycling, hiking, swimming, gym work and more. Upload activities as FIT, GPX or TCX files, sync automatically from Strava and Garmin Connect, follow other users, track body composition and health data, and keep every GPS track and heart-rate stream on your own server.

This package runs Endurain on Cloudron with:

  • PostgreSQL, Redis and outgoing email provided by Cloudron addons, so backups and updates are handled by the platform.
  • Optional Cloudron single sign-on through Endurain's native OpenID Connect support. Local accounts keep working either way.
  • The upstream seeded admin account is protected on first run: this package replaces the well-known default password with a generated one before the app ever serves a request (see the post-install message).
  • Long-lived API keys (an Endurain feature since 0.18.0) let devices and apps such as Gadgetbridge, OpenTracks or FitoTrack upload activities directly to your instance.

Endurain is developed by the Endurain project (https://endurain.com), licensed AGPL-3.0-or-later. This is an unofficial community package; "Endurain" is a registered trademark of its author, used here nominatively for a free, non-commercial community package in line with the project's trademark policy.

Screenshot

Recent Changes

  • Upstream Endurain 0.20.1 to 0.20.2. Recording pauses are no longer counted in GPX and TCX imports (a gap longer than 15 seconds, or three times the median sampling interval, splits the track), per-lap elevation gain and loss now add up to the activity total, missing altitude is no longer reported as 0 m, FIT imports without a GPS fix get the right timezone, a Strava export containing .fit.gz files now imports completely, notifications return a full UTC timestamp, and completing a fasting session no longer returns a 500. The activity summary now shows moving time as "Time" and elapsed time separately.

  • A request waiting on an exhausted database pool now fails after 30 seconds instead of 180, and upstream adds GET /api/v1/health, which checks the database. A request without the X-Client-Type header now gets a 400 naming the header instead of a 401. No security advisories are listed in the release notes, and no migration is mentioned.