Mealie zelf hosten in 2026: recepten importeren, gebruikers en back-ups
Een praktische handleiding voor het zelf hosten van Mealie, met aandacht voor Docker, poorten, persistente gegevens, TLS, beveiliging, back-ups en problemen die productiegebruik verhinderen. Stap voor stap.
De kortste Mealie-demo bewijst dat een proces op poort 9000 luistert. Voor productie is sterker bewijs nodig. De volgende situatie moet ook werken nadat de container is vervangen: importeer een recept-URL, controleer de bijbehorende afbeelding, voeg het recept toe aan een maaltijdplanning en genereer een boodschappenlijst met meerdere recepten.
Mealie wordt met een duidelijk doel ingezet: recepten, maaltijdplanningen en boodschappenlijsten. De meest voorkomende valkuil bij de implementatie is dat receptafbeeldingen verdwijnen omdat /app/data niet persistent is. Daarom verdienen verwerking van publieke URL's en duurzame state evenveel aandacht als het opstarten van de image.
Baken de Mealie-runtime af
De kleinste verantwoorde Mealie-topologie bevat één private listener op poort 9000, een ingress-route en een gedocumenteerde stategrens. Het netwerkcontract voor Mealie bestaat uit Postgres voor een multi-user productieomgeving en SMTP voor uitnodigingen. Houd private endpoints op interne DNS, sta alleen vereiste uitgaande verbindingen toe en geef Mealie een servicecredential met beperkte scope.
Valideer de topologie door een schone client een recept-URL te laten importeren, de afbeelding te laten controleren, het recept aan een maaltijdplanning te laten toevoegen en een boodschappenlijst met meerdere recepten te laten genereren. Monitor tijdens deze test het importeren van recepten, de opslag van afbeeldingen, databasequeries, background tasks en gelijktijdige huishoudelijke gebruikers. Zo zie je of de volgende verbetering betrekking heeft op geheugen, opslag, netwerkverbindingen of een afzonderlijke worker, in plaats van dat je willekeurig de container groter maakt.
Capaciteits- en upgradecontroles
Een inactieve health check zegt weinig over Mealie. Monitor het importeren van recepten, de opslag van afbeeldingen, databasequeries, background tasks en gelijktijdige huishoudelijke gebruikers. Maak vervolgens een alert op het symptoom dat gebruikers ervaren: het mislukken van de actie “importeer een recept-URL, controleer de bijbehorende afbeelding, voeg het recept toe aan een maaltijdplanning en genereer een boodschappenlijst met meerdere recepten”. Houd liveness lokaal en goedkoop; laat readiness migraties of initialisatie rapporteren zonder een restart storm te veroorzaken.
Het risicovolle onderdeel van een upgrade is dat databasemigraties en wijzigingen in de ingredient-parser opgeslagen recepten kunnen beïnvloeden. Test daarom imports en bestaande records. Lees de release notes, maak een snapshot van de state, deploy de doelversie tegen een herstelde kopie en herhaal de acceptatieactie. Als receptafbeeldingen verdwijnen omdat /app/data niet persistent is, koppel dan het clientverzoek aan het eerste relevante applicatielogboek in plaats van blind state te verwijderen of redirects toe te voegen.
De Mealie-releasegate
Een release candidate voor Mealie verdient production traffic door een vaste situatie volledig af te handelen: importeer een recept-URL, controleer de bijbehorende afbeelding, voeg het recept toe aan een maaltijdplanning en genereer een boodschappenlijst met meerdere recepten. Leg voor deze situatie de image digest, de effectieve configuratie zonder secrets, de publieke origin en de timestamps vast. De testdata moet wegwerpbaar zijn, maar realistisch genoeg om hetzelfde pad als gebruikers te testen.
Voer deze test uit nadat je de runtime hebt vervangen en bouw de service daarna opnieuw op uit de database, receptafbeeldingen, assets en applicatie-instellingen. Recovery is geslaagd wanneer recepten, afbeeldingen, gebruikers, maaltijdplanningen en boodschappenlijsten terug zijn en een bekend recept correct wordt weergegeven. Vergelijk de metingen voor het importeren van recepten, de opslag van afbeeldingen, databasequeries, background tasks en gelijktijdige huishoudelijke gebruikers met de vorige release. Onderzoek betekenisvolle afwijkingen voordat je de release promoot.
Voer tot slot deze gecontroleerde fout uit: ontzeg de testidentiteit tijdelijk toegang tot Postgres voor een multi-user productieomgeving en tot SMTP voor uitnodigingen. Controleer of Mealie de fout uitlegt, bestaande state niet beschadigt en hervat zodra de geldige voorwaarde terugkeert. Bewaar een geredigeerd logfragment en de hersteltijd. Samen dekken deze controles gedrag, duurzaamheid en beheerbaarheid af, in plaats van alleen het feit dat het proces actief is.
Bouw een vervangbare Mealie-container
Houd de eerste Mealie-aanroep reproduceerbaar genoeg om in een pull request te kunnen beoordelen.
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
Vertrouw niet op latest zodra er echte data bestaat. Leg de werkende digest, de containergebruiker en de eigendom van de mounts vast. Volg het applicatielogboek tijdens een volledige test — importeer een recept-URL, controleer de bijbehorende afbeelding, voeg het recept toe aan een maaltijdplanning en genereer een boodschappenlijst met meerdere recepten — en noteer eventuele migraties voordat je de route achter production traffic plaatst.
Vind elke persistente byte in Mealie
Maak een inventaris van elk duurzaam artefact: database, receptafbeeldingen, assets en applicatie-instellingen. Mount /app/data voordat je bootstrap uitvoert, schrijf onschuldige voorbeelddata en vervang de container om te bewijzen dat dit pad daadwerkelijk persistent is. Neem ook configuratie op die bepaalt hoe opgeslagen data wordt geïnterpreteerd, niet alleen de grootste directory.
Stel retentie in, kopieer back-ups naar een andere host en voer een clean-room restore uit. De Mealie-oefening is voltooid wanneer recepten, afbeeldingen, gebruikers, maaltijdplanningen en boodschappenlijsten terug zijn en een bekend recept correct wordt weergegeven. Als snapshots onderdeel zijn van het plan, gebruik dan de handleiding over PITR versus snapshots om vast te leggen wat elk mechanisme kan herstellen.
Routeer Mealie zonder te doen alsof HTTPS actief is
Stel BASE_URL in op de externe HTTPS-origin. Stuur de gekozen hostname naar containerpoort 9000, stuur de oorspronkelijke host en het HTTPS-schema door en publiceer geen tweede directe origin.
Test Mealie vanaf een schone externe client. Maak onderscheid tussen een ingress-fout en de bekende applicatiegrens — receptafbeeldingen verdwijnen omdat /app/data niet persistent is. Een certificaat-, DNS- of 502-fout hoort bij routing; een verzoek dat Mealie bereikt en daarna mislukt, hoort bij applicatiestate, capaciteit of een ondersteunende vereiste. De handleiding voor TLS met een custom domain behandelt de eerste groep.
Beperk de bevoegdheden van Mealie
Controleer na de eerste login wat een anonieme bezoeker, een gewone gebruiker en een administrator elk kunnen doen. De Mealie-fout die je moet vermijden, is dat registratie open blijft staan of dat het eerste adminwachtwoord ongewijzigd blijft. Het beoogde beleid is: vervang het eerste adminwachtwoord, sluit registratie zodra de inschrijving is afgerond en bescherm privégegevens van het huishouden.
BASE_URL is configuratie en geen secret; houd de waarde expliciet en bescherm tegelijk de afzonderlijke credentials die Mealie gebruikt. Houd dependency-accounts gescheiden van gebruikersaccounts, blokkeer ongebruikte uitgaande verbindingen waar dat praktisch haalbaar is en begrens werk dat wordt beïnvloed door het importeren van recepten, de opslag van afbeeldingen, databasequeries, background tasks en gelijktijdige huishoudelijke gebruikers.
Ook een Dockup-deployment heeft een Mealie-acceptatietest nodig
Routing, certificaten, servicevervanging en gekoppelde opslag zijn redelijke doelen voor automation. Dockup regelt die voor Mealie en kan de bijbehorende managed database provisionen of verbinding maken met services op de eigen server van een klant.
Wat het niet zelf moet verzinnen, is het Mealie-vertrouwensbeleid. Stel na de deployment BASE_URL in op de externe HTTPS-origin, handhaaf deze grens — vervang het eerste adminwachtwoord, sluit registratie zodra de inschrijving is afgerond en bescherm privégegevens van het huishouden — en controleer het resultaat van deze situatie: importeer een recept-URL, controleer de bijbehorende afbeelding, voeg het recept toe aan een maaltijdplanning en genereer een boodschappenlijst met meerdere recepten. Het resultaat is infrastructuur met één klik en een applicatiespecifieke acceptatietest.
Veelgestelde vragen
Wat heeft Mealie nodig voor een productieomgeving?
Routeer de Mealie-container op poort 9000 via één HTTPS-origin. De ondersteunende netwerkvereisten zijn Postgres voor een multi-user productieomgeving en SMTP voor uitnodigingen. Beschouw Mealie pas als gereed wanneer je een recept-URL kunt importeren, de bijbehorende afbeelding kunt controleren, het recept aan een maaltijdplanning kunt toevoegen en een boodschappenlijst met meerdere recepten kunt genereren.
Welke Mealie-data hoort in een back-up?
Maak /app/data persistent en neem de database, receptafbeeldingen, assets en applicatie-instellingen op in hetzelfde recovery-manifest. Een schone Mealie-restore is pas geslaagd wanneer recepten, afbeeldingen, gebruikers, maaltijdplanningen en boodschappenlijsten terug zijn en een bekend recept correct wordt weergegeven.
Heeft Mealie HTTPS nodig achter een reverse proxy?
Gebruik HTTPS voor de publieke Mealie-origin en houd poort 9000 op de interne route. Pas de Mealie-instelling correct toe: stel BASE_URL in op de externe HTTPS-origin. Voor Mealie beschermt HTTPS credentials of gebruikerscontent tijdens transport en zorgt het ervoor dat clientgedrag dat afhankelijk is van de origin consistent blijft.
Hoe moet een Mealie-upgrade worden getest?
Herstel de huidige Mealie-state in een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let hier extra op, omdat databasemigraties en wijzigingen in de ingredient-parser opgeslagen recepten kunnen beïnvloeden. Test daarom imports en bestaande records. Bewaar de vorige Mealie-image totdat de grenzen voor datamigratie en rollback duidelijk zijn.
