---
title: wger
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, fitness, workout, nutrition, python, django, agpl]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=fitness, https://github.com/wger-project/wger, https://wger.de]
---

# wger 🏋️

> Application **FLOSS de gestion d'entraînements, nutrition et poids** écrite en Python/Django, avec API REST. Référence open source auto-hébergeable pour le suivi fitness complet.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://wger.de/ |
| **GitHub** | https://github.com/wger-project/wger |
| **License** | AGPL-3.0-or-later |
| **Langage** | Python (Django) |
| **Étoiles** | ⭐6.2k (GitHub) / ⭐917 (selfh.st rank) |
| **Dernière MAJ** | 2026-06-04 |
| **Catégorie** | [[cat-fitness]] |

## Description

wger (prononcé « vɛɡɐ ») est une application web **libre et open source** de gestion d'entraînements, de nutrition et de poids corporel. Écrit principalement en Python avec le framework **Django**, le projet vise à fournir une alternative crédible aux services commerciaux comme MyFitnessPal, Strong ou Jefit, tout en gardant un contrôle total sur ses données de santé.

Côté fonctionnalités, wger offre un **gestionnaire de routines d'entraînement** flexible avec règles de progression automatique, une **base de données d'exercices** collaborative (wiki), un **tracker de poids et mesures corporelles**, un **journal nutritionnel** s'appuyant sur la base collaborative **Open Food Facts**, une **galerie de photos** de progression, et un **mode multi-utilisateurs** basique permettant la gestion d'une petite salle de sport. Une **API REST** complète permet l'intégration avec des outils tiers et des automatisations (Home Assistant, scripts de nutrition, etc.).

L'**écosystème est multi-plateforme** : le backend web s'accompagne d'apps natives pour **Android** (Google Play et F-Droid), **iOS**, et **Flathub** (Linux desktop), toutes basées sur Flutter et consommant l'API REST. La **traduction est gérée par Weblate** (multilingue, dont français complet). Le projet est **261 contributeurs**, **9000+ commits**, et un rythme de release soutenu (v2.5 en avril 2026, suivi Django 6, Python 3.14 supporté).

## Installation

### Via Docker (recommandé)

Le repo dédié [wger-project/docker](https://github.com/wger-project/docker) fournit un template prêt à l'emploi :

```yaml
# docker-compose.yml
services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    volumes:
      - wger-db:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: wger
      POSTGRES_PASSWORD: wger
      POSTGRES_DB: wger
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U wger"]
      interval: 10s
      timeout: 5s
      retries: 5

  app:
    image: wger/server:latest
    container_name: wger
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      DJANGO_SETTINGS_MODULE: wger.settings
      DJANGO_SECRET_KEY: change-me-with-pwgen-50
      DJANGO_ALLOWED_HOSTS: "wger.example.com,localhost"
      SITE_URL: https://wger.example.com
      EMAIL_HOST: smtp.example.com
      EMAIL_PORT: 587
      EMAIL_HOST_USER: wger@example.com
      EMAIL_HOST_PASSWORD: smtp-secret
      EMAIL_USE_TLS: "True"
      POSTGRES_HOST: db
      POSTGRES_PORT: 5432
      POSTGRES_USER: wger
      POSTGRES_PASSWORD: wger
      POSTGRES_DB: wger
    ports:
      - "8080:80"
    volumes:
      - wger-media:/home/wger/media

volumes:
  wger-db:
  wger-media:
```

```bash
# Premier lancement : créer le super-utilisateur
docker compose run --rm app wger create-superuser admin admin@example.com
```

### Installation manuelle

1. **Pré-requis** : Python 3.10+, PostgreSQL 14+, Node.js (pour le build frontend), `uv` recommandé.
2. **Cloner** : `git clone https://github.com/wger-project/wger && cd wger`
3. **Dépendances** : `uv sync` (lockfile `uv.lock` fourni).
4. **Base de données** : créer un utilisateur et une DB PostgreSQL (`createdb wger`).
5. **Variables d'environnement** : copier `.env.example` en `.env`, ajuster `DJANGO_SECRET_KEY`, `POSTGRES_*`, `EMAIL_*`.
6. **Migrations** : `uv run wger migrate`.
7. **Collectstatic** : `uv run wger collectstatic --noinput`.
8. **Serveur de dev** : `uv run wger runserver 0.0.0.0:8000`.
9. **Production** : Gunicorn + reverse proxy (Traefik/Caddy).

## Configuration

- **Premier lancement** : créer un super-utilisateur, se connecter, configurer la langue et l'unité (kg/lbs).
- **Calendrier** : créer des routines, ajouter exercices avec sets/reps/poids, planifier les jours.
- **Progression auto** : configurer des règles (ex : +2.5kg à chaque semaine complétée).
- **Nutrition** : la base d'aliments est synchronisée depuis Open Food Facts (tâche cron).
- **Mesures** : tracker poids, tour de taille, body fat %, etc. avec graphiques.
- **API tokens** : créer des tokens dans le profil utilisateur pour intégrations tierces.
- **Backups** : `pg_dump wger_db` + sauvegarde du volume `wger-media` (photos uploadées).
- **HTTPS obligatoire** via reverse proxy.
- **Email** : configurer SMTP pour envoi de notifications et réinitialisation de mot de passe.

## Alternatives

### Open Source
- [[app-workout-cool]] — Plateforme coaching moderne (TypeScript/Next.js)
- [[app-sparkyfitness]] — MyFitnessPal-like avec IA (TypeScript)
- [[app-workout-tracker]] — Tracker GPX + musculation (Go)
- [[app-wingfit]] — Fitness minimaliste français (Angular + FastAPI)
- **Hevy / Strong** clones — FitNotes (Android natif)

### Propriétaires
- **MyFitnessPal** — référence nutrition, freemium, partage de données problématique
- **Strong** (iOS/Android) — app muscu fluide, 10$/mois en premium
- **JEFIT** — routines muscu, app + web
- **Hevy** — moderne, social, 10$/mois
- **FitNotes** — gratuit mais Android only

## Sécurité

- **Chiffrement mot de passe** : Django gère nativement (PBKDF2 par défaut, Argon2 possible).
- **HTTPS obligatoire** via reverse proxy (Traefik/Caddy).
- **API tokens** : révocables, scopes à limiter par intégration.
- **2FA** : non natif dans wger core — à ajouter via reverse proxy (Authelia/Authentik).
- **CSRF, XSS, SQL injection** : protégés par défaut par Django ORM et templates.
- **Permissions** : multi-utilisateurs avec rôles (admin, utilisateur standard).
- **Uploads** : photos stockées dans le volume, valider la sanitisation des EXIF.
- **AGPL-3.0** : si vous modifiez wger et l'exposez publiquement, vous **devez** redistribuer les sources.
- **Backups** : `pg_dump` quotidien + rsync des médias photos.

## Ressources
- Site officiel : https://wger.de/
- Documentation : https://wger.readthedocs.io/
- Code source : https://github.com/wger-project/wger
- Docker template : https://github.com/wger-project/docker
- Weblate traductions : https://hosted.weblate.org/engage/wger/
- API docs : https://wger.readthedocs.io/en/latest/api.html
- Discord : https://discord.gg/rPWFv6W
- Mastodon : @wger@fosstodon.org
- selfh.st : https://selfh.st/apps/?tag=fitness

## Pages Liées
- [[cat-fitness]] — Catégorie parente
- [[app-workout-cool]] — Alternative moderne (TypeScript)
- [[app-sparkyfitness]] — Alternative nutrition+IA
- [[app-workout-tracker]] — Alternative Go
- [[app-wingfit]] — Alternative minimaliste FR
- [[recettes-docker-compose]] — Templates de déploiement
- [[securisation-home-lab]] — Bonnes pratiques sécurité
