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

7.3 KiB


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 fournit un template prêt à l'emploi :

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

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

Pages Liées