144 lines
4.7 KiB
Markdown
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
|