Files
2026-06-09 18:40:21 +02:00

4.7 KiB


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é)

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)

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

Pages Liées