Comment auto-héberger Mealie en 2026 : importation de recettes, utilisateurs et sauvegardes
Guide pratique pour auto-héberger Mealie avec Docker : ports, données persistantes, TLS, sécurité, sauvegardes et problèmes qui empêchent une utilisation en production. Étape par étape.
La démonstration Mealie la plus simple prouve qu’un processus écoute sur le port 9000. La production exige des preuves plus solides. Elle doit réussir ce scénario même après le remplacement du conteneur : importer l’URL d’une recette, vérifier son image, l’ajouter à un plan de repas et générer une liste de courses à partir de plusieurs recettes.
Mealie est déployé dans un but précis : gérer des recettes, des plans de repas et des listes de courses. Le piège de déploiement le plus courant est la disparition des images de recettes parce que /app/data n’est pas persistant. La gestion des URL publiques et la conservation durable de l’état doivent donc bénéficier de la même attention que le démarrage de l’image.
Délimiter l’environnement d’exécution de Mealie
La topologie Mealie minimale et responsable comprend un seul listener privé sur le port 9000, une route d’ingress et une limite d’état documentée. Le contrat réseau de Mealie prévoit Postgres pour un déploiement de production multi-utilisateur et SMTP pour les invitations. Gardez les endpoints privés sur un DNS interne, n’autorisez que les appels sortants nécessaires et attribuez à Mealie un identifiant de service aux permissions limitées.
Validez la topologie en demandant à un client vierge d’importer l’URL d’une recette, de vérifier son image, de l’ajouter à un plan de repas et de générer une liste de courses à partir de plusieurs recettes. Pendant l’exécution, surveillez les imports de recettes, le stockage des images, les requêtes de base de données, les tâches en arrière-plan et les utilisateurs simultanés du foyer. Le résultat vous indique si la prochaine amélioration concerne la mémoire, le stockage, le réseau ou un worker séparé, plutôt que de vous inciter à dimensionner arbitrairement le conteneur.
Vérifications de capacité et de mise à niveau
Un health check exécuté au repos ne dit pas grand-chose sur Mealie. Surveillez les imports de recettes, le stockage des images, les requêtes de base de données, les tâches en arrière-plan et les utilisateurs simultanés du foyer, puis déclenchez des alertes sur le symptôme observé par les utilisateurs : l’échec de l’action « importer l’URL d’une recette, vérifier son image, l’ajouter à un plan de repas et générer une liste de courses à partir de plusieurs recettes ». Gardez la liveness locale et peu coûteuse ; laissez la readiness signaler les migrations ou l’initialisation sans provoquer une tempête de redémarrages.
La zone de mise à niveau la plus risquée est que les migrations de base de données et les changements de l’analyseur d’ingrédients peuvent affecter les recettes stockées. Testez donc les imports et les enregistrements existants. Lisez les notes de version, créez un snapshot de l’état, déployez la version cible sur une copie restaurée et répétez l’action de validation. Si les images de recettes disparaissent parce que /app/data n’est pas persistant, corrélez la requête client avec la première entrée pertinente du journal de l’application au lieu de supprimer l’état ou d’ajouter des redirections à l’aveugle.
La gate de mise en production de Mealie
Une release candidate de Mealie mérite de recevoir du trafic lorsqu’elle réussit un scénario fixe : importer l’URL d’une recette, vérifier son image, l’ajouter à un plan de repas et générer une liste de courses à partir de plusieurs recettes. Capturez le digest de l’image, la configuration effective non secrète, l’origine publique et les horodatages associés à ce scénario. Les données de test doivent être supprimables, tout en restant suffisamment réalistes pour emprunter le même parcours que les utilisateurs.
Exécutez ce test après avoir remplacé l’environnement d’exécution, puis reconstruisez le service à partir de la base de données, des images de recettes, des assets et des paramètres de l’application. La récupération est validée lorsque les recettes, les images, les utilisateurs, les plans de repas et les listes de courses sont restaurés et qu’une recette connue s’affiche correctement. Comparez avec la version précédente les mesures de ressources liées aux imports de recettes, au stockage des images, aux requêtes de base de données, aux tâches en arrière-plan et aux utilisateurs simultanés du foyer, puis analysez toute dérive significative avant la promotion.
Enfin, provoquez cet incident contrôlé : refusez temporairement à l’identité de test l’accès à Postgres pour un déploiement de production multi-utilisateur et à SMTP pour les invitations. Vérifiez que Mealie explique l’échec, ne dégrade pas l’état existant et reprend son fonctionnement lorsque la condition valide est rétablie. Conservez un extrait de journal expurgé ainsi que le temps de récupération. Ensemble, ces contrôles couvrent le comportement, la durabilité et l’exploitabilité, plutôt que la simple disponibilité du processus.
Créer un conteneur Mealie remplaçable
Rendez l’invocation initiale de Mealie suffisamment reproductible pour pouvoir être relue dans une pull request.
docker run -d \
--name mealie \
--restart unless-stopped \
-p 127.0.0.1:9000:9000 \
-v mealie-data:/app/data \
-e BASE_URL=https://app.example.com \
ghcr.io/mealie-recipes/mealie:latest
Ne vous fiez pas à latest dès que de vraies données existent. Notez le digest utilisé, l’utilisateur du conteneur et les permissions du montage. Suivez le journal de l’application pendant un test complet — importer l’URL d’une recette, vérifier son image, l’ajouter à un plan de repas et générer une liste de courses à partir de plusieurs recettes — et notez les éventuelles migrations avant de placer la route derrière le trafic de production.
Repérer chaque octet durable de Mealie
Inventoriez chaque artefact durable : base de données, images de recettes, assets et paramètres de l’application. Montez /app/data avant le bootstrap, écrivez des données d’exemple inoffensives et remplacez le conteneur pour prouver que ce chemin est réellement persistant. Incluez la configuration qui modifie l’interprétation des données stockées, et pas uniquement le répertoire le plus volumineux.
Définissez une politique de rétention, copiez les sauvegardes hors de l’hôte et effectuez une restauration en clean room. L’exercice Mealie est terminé lorsque les recettes, les images, les utilisateurs, les plans de repas et les listes de courses sont restaurés et qu’une recette connue s’affiche correctement. Si les snapshots font partie du plan, utilisez le guide PITR versus snapshots pour documenter ce que chaque mécanisme permet de récupérer.
Router Mealie sans induire HTTPS en erreur
Définissez BASE_URL sur l’origine HTTPS externe. Faites pointer le hostname choisi vers le port 9000 du conteneur, transmettez l’hôte d’origine et le schéma HTTPS, et évitez de publier une seconde origine directe.
Testez Mealie depuis un client externe vierge. Distinguez une défaillance de l’ingress de la limite applicative connue — les images de recettes disparaissent parce que /app/data n’est pas persistant. Une erreur de certificat, de DNS ou de type 502 relève du routage ; une requête qui atteint Mealie puis échoue relève de l’état applicatif, de la capacité ou d’une exigence du service. Le guide TLS pour les domaines personnalisés couvre le premier groupe.
Réduire les privilèges détenus par Mealie
Après la première connexion, vérifiez ce qu’un visiteur anonyme, un utilisateur standard et un administrateur peuvent chacun faire. Le problème à éviter avec Mealie est de laisser les inscriptions ouvertes ou de conserver le mot de passe initial de l’administrateur. La politique attendue consiste à remplacer le mot de passe initial de l’administrateur, à fermer les inscriptions une fois l’enrôlement terminé et à protéger les données privées du foyer.
BASE_URL est une configuration, pas un secret ; gardez sa valeur explicite tout en protégeant les identifiants distincts utilisés par Mealie. Séparez les comptes des dépendances des comptes humains, refusez les communications sortantes inutiles lorsque c’est possible et plafonnez la charge induite par les imports de recettes, le stockage des images, les requêtes de base de données, les tâches en arrière-plan et les utilisateurs simultanés du foyer.
Un déploiement Dockup nécessite toujours un test de validation Mealie
Le routage, les certificats, le remplacement des services et le stockage attaché sont des cibles d’automatisation raisonnables. Dockup les prend en charge pour Mealie et peut provisionner la base de données managée associée ou se connecter à des services hébergés sur le serveur du client.
Ce que Dockup ne doit pas inventer, en revanche, c’est la politique de confiance de Mealie. Après le déploiement, définissez BASE_URL sur l’origine HTTPS externe, appliquez cette limite — remplacez le mot de passe initial de l’administrateur, fermez les inscriptions une fois l’enrôlement terminé et protégez les données privées du foyer — puis vérifiez le résultat du scénario suivant : importer l’URL d’une recette, vérifier son image, l’ajouter à un plan de repas et générer une liste de courses à partir de plusieurs recettes. Vous obtenez ainsi une infrastructure en un clic accompagnée d’un test de validation spécifique à l’application.
Foire aux questions
De quoi Mealie a-t-il besoin pour un déploiement de production ?
Acheminez le conteneur Mealie sur le port 9000 via une seule origine HTTPS. L’exigence réseau associée est Postgres pour un déploiement de production multi-utilisateur et SMTP pour les invitations. Ne considérez pas Mealie comme prêt tant que vous ne pouvez pas importer l’URL d’une recette, vérifier son image, l’ajouter à un plan de repas et générer une liste de courses à partir de plusieurs recettes.
Quelles données Mealie doivent figurer dans une sauvegarde ?
Rendez /app/data persistant et incluez la base de données, les images de recettes, les assets et les paramètres de l’application dans le même manifeste de récupération. Une restauration Mealie propre n’est validée que lorsque les recettes, les images, les utilisateurs, les plans de repas et les listes de courses sont restaurés et qu’une recette connue s’affiche correctement.
Mealie nécessite-t-il HTTPS derrière un reverse proxy ?
Utilisez HTTPS pour l’origine publique de Mealie et conservez le port 9000 sur la route interne. Appliquez correctement le paramètre Mealie : définissez BASE_URL sur l’origine HTTPS externe. Pour Mealie, HTTPS protège les identifiants ou le contenu utilisateur pendant le transport et garantit un comportement cohérent du client, sensible à l’origine.
Comment tester une mise à niveau de Mealie ?
Restaurez l’état actuel de Mealie dans un déploiement isolé, appliquez la version candidate et répétez sa transaction de validation. Soyez particulièrement attentif, car les migrations de base de données et les changements de l’analyseur d’ingrédients peuvent affecter les recettes stockées. Testez donc les imports et les enregistrements existants. Conservez l’image Mealie précédente jusqu’à ce que les limites de migration des données et de rollback soient comprises.
