---
title: Endurain
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, fitness, strava-alternative, activity-tracker, python, fastapi, gpx]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=fitness, https://github.com/Endurain/endurain]
---

# Endurain 🏃

> Clone **léger et moderne** de Strava, écrit en Python/FastAPI. Suivi d'activités outdoor (course, vélo, natation) avec import GPX/FIT, statistiques et interface épurée.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://endurain.com/ |
| **GitHub** | https://github.com/Endurain/endurain |
| **License** | AGPL-3.0-or-later |
| **Langage** | Python (FastAPI + Vue.js) |
| **Étoiles** | ⭐4 (selfh.st rank) |
| **Dernière MAJ** | 2026-05-08 |
| **Catégorie** | [[cat-fitness]] |

## Description

**Endurain** est un projet récent (2024+) qui vise à fournir une **alternative open source à Strava** centrée sur les activités d'endurance. Inspiré de l'interface Strava mais sans le côté social/segment, il se concentre sur l'**essentiel** : importer une trace, voir sa carte, ses stats, son historique.

Fonctionnalités :
- **Import GPX, TCX et FIT**
- **Carte interactive** OpenStreetMap par activité
- **Statistiques** par sport (course, vélo, natation, etc.)
- **Équipements** (chaussures, vélo) avec kilométrage cumulé
- **Multi-utilisateurs** avec comptes séparés
- **API REST** documentée
- **Mode sombre** natif
- **Docker-first** : déploiement simplifié

L'**architecture** est moderne et saine : backend **FastAPI + SQLModel + PostgreSQL**, frontend **Vue 3 + Vite + Pinia**, file de tâches **optionnelle** avec **arq** (Redis). Le code est **propre, typé, documenté**, et le projet monte en maturité rapidement. C'est l'un des **success stories récents** du self-hosting fitness.

> **Note** : peu d'étoiles (⭐4) ne reflète pas la qualité — le projet est encore jeune mais l'activité GitHub (commits, issues, releases) est soutenue.

## Installation

### Via Docker Compose (recommandé)

```yaml
services:
  endurain-db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: endurain
      POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme}
      POSTGRES_DB: endurain
    volumes:
      - endurain_db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U endurain"]
      interval: 10s
      timeout: 5s
      retries: 5

  endurain-backend:
    image: ghcr.io/endurain/endurain:latest
    restart: unless-stopped
    depends_on:
      endurain-db:
        condition: service_healthy
    environment:
      DATABASE_URL: postgresql://endurain:${DB_PASSWORD:-changeme}@endurain-db:5432/endurain
      SECRET_KEY: ${SECRET_KEY:-changez-moi-32-caracteres}
      TZ: Europe/Paris
    volumes:
      - endurain_uploads:/app/uploads
    ports:
      - "8000:8000"

volumes:
  endurain_db:
  endurain_uploads:
```

### Installation manuelle (Dev)

```bash
git clone https://github.com/Endurain/endurain.git
cd endurain
# Backend
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
alembic upgrade head
uvicorn app.main:app --reload
# Frontend (autre terminal)
cd ../frontend
npm install && npm run dev
```

## Configuration

- `DATABASE_URL` : PostgreSQL obligatoire
- `SECRET_KEY` : pour JWT, 32+ caractères
- `TZ` : fuseau horaire (important pour les calculs quotidiens)
- **Premier utilisateur** créé en CLI : `python -m app.scripts.create_user --admin`
- **Migrations** : `alembic upgrade head` à chaque release

## Alternatives

**Open source** :
- [[app-fittrackee]] : plus mature, français, fonctionnalités proches
- [[app-statistics-for-strava]] : si vous voulez juste des stats sur vos données Strava
- [[app-wger]] : orienté musculation, pas outdoor
- **Runalyze** : allemand, riche, plus lourd
- **OwnTracks** : si focus géolocalisation générique

**Propriétaire** :
- **Strava** : leader, segments sociaux, gratuit avec limites
- **Garmin Connect** : si écosystème Garmin
- **Komoot** : orienté itinérance vélo/rando

## Sécurité

- **Changer** `DB_PASSWORD` et `SECRET_KEY` absolument
- **HTTPS obligatoire** via reverse proxy (Traefik, Caddy)
- Sauvegarder le volume `endurain_uploads` (fichiers GPX/FIT) et `endurain_db` (`pg_dump`)
- Les traces GPX contiennent des **données de localisation** : sécuriser l'accès
- **Activer les migrations** lors de chaque upgrade (lire le CHANGELOG)

## Ressources

- **GitHub** : https://github.com/Endurain/endurain
- **Site officiel** : https://endurain.com/
- **selfh.st** : https://selfh.st/apps/?tag=fitness

## Pages Liées

- [[cat-fitness]]
- [[recettes-docker-compose]]
- [[app-fittrackee]] — alternative mature
- [[app-statistics-for-strava]] — pour stats Strava
- [[app-wger]] — orienté musculation
