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

144 lines
4.7 KiB
Markdown

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