Skip to content

Mealie Docker : gestionnaire de recettes auto-hébergé

Brandon
Published date:

💡 TL;DR

  • Mealie est un gestionnaire de recettes auto-hébergé open-source sous licence AGPL-3.0
  • Tu l’installes en 10 minutes avec Mealie Docker, SQLite intégré et une interface Vue.js
  • Import automatique de recettes depuis n’importe quel site web, planification de repas, listes de courses
  • Alternative plus légère et moderne à Tandoor pour les familles et les petites équipes
  • Docker Compose complet, variables d’environnement détaillées et comparatif des alternatives ci-dessous

Table des matières

Table des matières

Pourquoi un gestionnaire de recettes auto-hébergé ?

Tu connais la scène. Tu trouves une recette géniale sur un site de cuisine. Tu la bookmark, elle disparaît dans tes 400 onglets ouverts. Trois semaines plus tard, le site a changé de design, la recette est derrière un paywall, ou pire, le site a fermé. Ta recette est partie avec lui.

Les solutions cloud type Paprika ou les apps mobiles propriétaires ne règlent pas le problème. Tes recettes vivent sur leurs serveurs, formatées dans leurs formats fermés, et si l’app disparaît un jour, tu perds tout. Sans parler du tracking : ces apps savent exactement ce que tu cuisines, quand tu cuisines et combien de personnes tu nourris. Des données parfaites pour te vendre des produits ou alimenter des profils publicitaires.

Mealie est la réponse technique à ce problème. C’est un gestionnaire de recettes auto-hébergé développé en Python (backend API REST) et Vue.js (frontend réactif), sous licence AGPL-3.0. Il scrape automatiquement les recettes depuis des centaines de sites, les stocke dans une base de données locale, et te donne une interface propre pour organiser, planifier et cuisiner. Tes recettes restent chez toi, toujours accessibles, même si Internet coupe.

Dans mon guide des services essentiels à auto-héberger avec Docker, je recommande de commencer par les outils de productivité du quotidien. Mealie Docker rentre pile dans cette catégorie : il remplace un usage quotidien (chercher des recettes, les organiser, les retrouver) par une solution que tu contrôles totalement. Après Vaultwarden pour les mots de passe et Memos pour les notes, Mealie est souvent le troisième service que je déploie sur un nouvel homelab.

Qu’est-ce que Mealie exactement ?

Mealie est né d’un constat simple : les gestionnaires de recettes existants sont soit trop basiques (des dossiers de bookmarks), soit trop complexes (des apps lourdes avec synchronisation cloud obligatoire). Mealie Docker vise le juste milieu : une interface web élégante, une API REST complète, et un scraper intelligent qui comprend la structure des recettes sur le web.

Voici ce qu’il propose concrètement :

L’image officielle ghcr.io/mealie-recipes/mealie:v3.19.2 (version stable au moment de la rédaction) est maintenue activement et supporte amd64 ainsi qu’arm64. L’équipe Mealie recommande de toujours spécifier un tag de version explicite plutôt que latest, afin de contrôler les mises à jour et lire les notes de release.

Si tu cherches un outil de notes rapide pour noter tes idées de recettes en cours de développement, j’ai aussi couvert Memos avec Docker, un bloc-notes auto-hébergé ultra-léger et minimaliste.

Prérequis

Mealie est raisonnablement léger. Pour une utilisation familiale avec SQLite, un VPS modeste ou même un Raspberry Pi 4 suffisent amplement. L’équipe recommande de fixer une limite mémoire explicite de 1000 Mo car Python peut pré-allouer plus de RAM que nécessaire sur des machines bien pourvues.

Si tu débutes avec Docker et que les concepts de volumes, réseaux et reverse proxy te semblent flous, commence par mon article sur les services essentiels à auto-héberger avec Docker. Les bases y sont expliquées clairement, et Mealie est un excellent second service pour mettre en pratique.

Déploiement Mealie Docker avec SQLite

Pour une utilisation familiale de 1 à 20 utilisateurs, SQLite est le choix parfait. Zero configuration, zero dépendance externe, et des performances excellentes pour cette échelle.

Crée un dossier dédié et un fichier docker-compose.yml :

mkdir -p ~/mealie && cd ~/mealie

Voici le Docker Compose complet et prêt à l’emploi pour installer mealie docker :

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:v3.19.2
    container_name: mealie
    restart: always
    ports:
      - "9925:9000"
    deploy:
      resources:
        limits:
          memory: 1000M
    volumes:
      - mealie-data:/app/data/
    environment:
      ALLOW_SIGNUP: "false"
      PUID: 1000
      PGID: 1000
      TZ: Europe/Paris
      BASE_URL: https://recettes.tondomaine.com
      TOKEN_TIME: 48
      API_PORT: 9000
      LOG_LEVEL: info

volumes:
  mealie-data:

Explication des variables d’environnement

VariableValeurDescription
ALLOW_SIGNUP"false""Désactive l’inscription publique. Tu crées les comptes toi-même. Depuis la version 1.4.0, cette valeur est false par défaut pour des raisons de sécurité.
PUID1000ID utilisateur Linux pour les permissions sur les fichiers du volume. Doit correspondre à l’utilisateur qui lance Docker.
PGID1000ID groupe Linux pour les permissions sur les fichiers du volume.
TZEurope/ParisFuseau horaire pour les dates et heures des recettes, planifications et logs.
BASE_URLhttps://recettes.tondomaine.comURL publique de ton instance. Utilisée pour les liens dans les notifications et pour l’authentification OIDC si tu l’actives.
TOKEN_TIME48Durée de validité des tokens d’authentification en heures. Maximum 9600 heures (400 jours).
API_PORT9000Port interne de l’API. Ne change pas cette valeur si tu utilises Docker. Le port exposé sur l’hôte se règle dans ports.
LOG_LEVELinfoNiveau de verbosité des logs : critical, error, warning, info ou debug.

Lance le conteneur :

docker compose up -d

Attends une dizaine de secondes que le service démarre, puis accède à http://IP-du-serveur:9925. Le premier utilisateur qui s’inscrit devient automatiquement administrateur.

Déploiement avec PostgreSQL (optionnel)

Si tu prévois de nombreux utilisateurs concurrents, ou si tu stockes les données sur un NAS (Network Attached Storage), PostgreSQL est recommandé. SQLite n’est pas conçu pour fonctionner sur du stockage réseau et peut provoquer des corruptions de données.

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:v3.19.2
    container_name: mealie
    restart: always
    ports:
      - "9925:9000"
    deploy:
      resources:
        limits:
          memory: 1000M
    volumes:
      - mealie-data:/app/data/
    environment:
      ALLOW_SIGNUP: "false"
      PUID: 1000
      PGID: 1000
      TZ: Europe/Paris
      BASE_URL: https://recettes.tondomaine.com
      DB_ENGINE: postgres
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: super_secret_password_a_changer
      POSTGRES_SERVER: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: mealie
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    container_name: postgres_mealie
    image: postgres:17
    restart: always
    volumes:
      - mealie-pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: super_secret_password_a_changer
      POSTGRES_USER: mealie
      PGUSER: mealie
      POSTGRES_DB: mealie
    healthcheck:
      test: ["CMD", "pg_isready"]
      interval: 30s
      timeout: 20s
      retries: 3

volumes:
  mealie-data:
  mealie-pgdata:

Variables spécifiques à PostgreSQL :

VariableDescription
DB_ENGINE"postgres"" pour activer PostgreSQL au lieu de SQLite
POSTGRES_USERNom d’utilisateur PostgreSQL
POSTGRES_PASSWORDMot de passe PostgreSQL (à changer impérativement)
POSTGRES_SERVERNom d’hôte du conteneur PostgreSQL (ici postgres)
POSTGRES_PORTPort PostgreSQL (5432 par défaut)
POSTGRES_DBNom de la base de données

Configuration initiale et premiers pas

1. Créer le compte administrateur Le premier utilisateur inscrit obtient automatiquement les droits admin. Choisis un mot de passe fort et un email valide. Active le 2FA (TOTP) dans les paramètres de sécurité si ton instance est exposée sur Internet.

2. Importer ta première recette Clique sur “Créer une recette”, choisis “Importer depuis une URL”, et colle l’adresse d’un site de cuisine. Mealie va scraper automatiquement les ingrédients, les étapes, les images et les métadonnées. Teste avec plusieurs sites pour vérifier la compatibilité. La plupart des sites utilisant du schema.org Recipe sont supportés nativement.

3. Créer une recette manuelle Pour les recettes familiales transmises de génération en génération, utilise l’éditeur intégré. Tu peux ajouter des images, formater les étapes, indiquer les temps et les portions. Les recettes manuelles sont souvent plus jolies car tu contrôles totalement la mise en page.

4. Organiser avec des tags Crée une structure de tags cohérente dès le début. Voici ce que j’utilise :

5. Tester le calendrier de repas Glisse une recette sur un jour du calendrier hebdomadaire. Mealie calcule automatiquement la liste de courses nécessaire. C’est l’une des fonctionnalités les plus appréciées des familles qui planifient leurs repas à l’avance.

6. Configurer les thèmes (optionnel) Mealie permet de personnaliser les couleurs via des variables d’environnement. Tu peux changer les couleurs primaires, secondaires, d’accent, et les couleurs de messages d’erreur/succès pour les modes clair et sombre.

Mealie vs Tandoor vs les alternatives

|| Critère | Mealie | Tandoor | Paprika | Nextcloud Cookbook | ||---------|--------|---------|---------|-------------------| || Licence | AGPL-3.0 | MIT-like (avec restrictions) | Propriétaire | AGPL-3.0 | || Auto-hébergé | Oui | Oui | Non (sync cloud) | Oui (via app Nextcloud) | || Gratuit | Totalement | Totalement | Payant (app + sync) | Totalement | || Interface | Moderne, Vue.js | Fonctionnelle, Django | Native iOS/Android | Intégrée Nextcloud | || Import URL | Excellent, scrape intelligent | Bon, parfois moins fiable | Excellent (payant) | Bon | || Planification repas | Oui, calendrier hebdo | Oui, très complet | Oui | Non | || Liste de courses | Oui, auto-générée | Oui, très avancée | Oui | Non | || Gestion des stocks | Basique | Avancée | Non | Non | || Multi-utilisateur | Oui, avec rôles | Oui | Non (compte individuel) | Oui (via Nextcloud) | || API REST | Complète | Complète | Non | Oui (WebDAV) | || Recherche floue | Oui (avec PostgreSQL) | Non | Non | Non | || Ressources RAM | ~1000 Mo (limite recommandée) | ~1500 Mo | N/A (cloud) | Variable (Nextcloud lourd) | || Base de données | SQLite ou PostgreSQL | PostgreSQL | Cloud propriétaire | MySQL/PostgreSQL (Nextcloud) | || App mobile | Web responsive (PWA) | Web responsive | Native iOS/Android | Nextcloud Files | || Facilité de déploiement | Très simple (Docker) | Simple (Docker) | N/A (app store) | Complexe (Nextcloud complet) |

Mon verdict pour un homelab ou une utilisation familiale :

Pour sécuriser ton serveur et protéger tes services exposés, j’ai aussi publié un guide sur AdGuard Home avec Docker qui te permet de bloquer les trackers et les publicités à l’échelle de tout ton réseau.

Sécuriser l’accès et les données

HTTPS partout Ne laisse jamais Mealie en HTTP si tu l’exposes sur Internet. Ton reverse proxy doit forcer le HTTPS, activer HSTS et bloquer les versions obsolètes de TLS. Caddy gère ça nativement avec une ligne.

Sauvegardes automatisées Le volume mealie-data contient la base de données (SQLite ou pas) et les images des recettes. C’est le seul dossier à sauvegarder :

#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar czf "/backup/mealie_$DATE.tar.gz" /var/lib/docker/volumes/mealie_mealie-data/_data

Si tu utilises PostgreSQL, sauvegarde aussi le volume mealie-pgdata. Pour une solution de sauvegarde complète et chiffrée vers le cloud ou un NAS, Duplicati avec Docker est un excellent choix.

Mises à jour L’équipe Mealie publie régulièrement des versions. Mets à jour une fois par mois en lisant les notes de release sur GitHub :

cd ~/mealie
docker compose pull
docker compose up -d

Authentification double facteur Mealie supporte le TOTP (Google Authenticator, Authy, Bitwarden Authenticator, etc.). Active-le dans les paramètres de sécurité.

Restreindre les inscriptions Garde ALLOW_SIGNUP: "false"" et crée les comptes utilisateurs manuellement depuis le panneau d’administration.

Authentification externe (optionnel) Mealie supporte LDAP et OpenID Connect (OIDC) depuis la version 1.4.0. Si tu as déjà un serveur d’authentification centralisé (Authelia, Keycloak, Authentik), tu peux y brancher Mealie pour une authentification unique (SSO).

Intégrations et astuces avancées

Utiliser la recherche floue avec PostgreSQL Si tu déploies avec PostgreSQL, la recherche floue est activée automatiquement. Elle te permet de trouver une recette même si tu ne te souviens plus exactement du nom. “ratatouille” trouvera “ratatouille provençale” et “ratatouille au four”.

Exporter les recettes Mealie peut exporter tes recettes au format JSON standardisé. C’est utile pour migrer vers un autre outil ou pour archiver tes recettes en dehors de Mealie. Le format est basé sur schema.org Recipe, donc compatible avec la plupart des outils du marché.

Partage public avec URL courte Chaque recette peut être rendue publique avec une URL partageable. L’ami qui reçoit le lien voit la recette complète sans besoin de compte. Parfait pour partager ta recette de brownies avec le monde entier.

Utiliser comme PWA sur mobile L’interface web de Mealie est responsive et fonctionne très bien sur mobile. Ajoute-la à l’écran d’accueil de ton téléphone pour une expérience proche d’une app native. Pas besoin d’app store, pas de tracking SDK.

Intégration avec l’API REST L’API REST de Mealie est documentée et accessible directement depuis l’interface. Tu peux automatiser l’import de recettes depuis tes scripts, synchroniser la planification de repas avec d’autres calendriers, ou générer des listes de courses depuis des routines domotiques.

Personnalisation des couleurs Via les variables d’environnement, tu peux changer toute la palette de couleurs de Mealie. Utile pour adapter l’interface à tes goûts ou à la charte graphique de ton homelab.

Gestionnaire de fichiers en complément Pour stocker les photos de tes plats finis, les scans de vieilles recettes manuscrites ou les PDF de magazines de cuisine, File Browser avec Docker s’intègre parfaitement à côté de Mealie. Tu stockes les fichiers dans File Browser et tu références les liens dans tes notes de recettes.

FAQ

Mealie est-il traduit en français ? Oui, l’interface est entièrement traduite en français et dans de nombreuses autres langues. La langue se change dans les paramètres utilisateur.

Puis-je importer des recettes depuis Paprika, ChefTap ou d’autres apps ? Mealie supporte l’import de fichiers JSON au format schema.org Recipe. Si ton app actuelle exporte dans ce format, la migration est directe. Sinon, des scripts de conversion existent dans la communauté.

Les recettes importées restent-elles si le site source disparaît ? Oui, une fois importée dans Mealie, la recette est entièrement stockée dans ta base de données locale avec ses images. Le site source peut fermer, tu gardes ta recette.

Puis-je héberger Mealie sur un Raspberry Pi ? Oui, l’image supporte ARM64. Un Raspberry Pi 4 avec 2 Go de RAM suffit pour une utilisation familiale avec SQLite. Prévois un stockage externe rapide si tu stockes beaucoup d’images haute résolution.

Mealie gère-t-il les allergies alimentaires ? Tu peux taguer les recettes avec des tags comme sans-gluten, sans-arachide ou sans-lactose. Mealie ne fait pas d’analyse automatique des allergènes, mais la recherche par tag te permet de filtrer rapidement.

Puis-je scanner des recettes manuscrites ? Pas directement dans Mealie. Mais tu peux scanner tes recettes manuscrites avec ton téléphone, les stocker dans File Browser avec Docker, et créer une recette dans Mealie avec un lien vers le scan.

Next
Navidrome Docker : ton Spotify auto-hébergé en 5 min