Så självhostar du Mealie 2026: receptimport, användare och säkerhetskopior
En praktisk guide till självhosting av Mealie med Docker, portar, beständiga data, TLS, säkerhet, säkerhetskopior och problemen som hindrar produktionsanvändning. Steg för steg.
Den kortaste Mealie-demonstrationen visar att en process lyssnar på port 9000. Produktion kräver starkare bevis. Den måste klara följande scenario även efter att containern har ersatts: importera en recept-URL, verifiera bilden, lägga till receptet i en måltidsplan och skapa en inköpslista från flera recept.
Mealie distribueras för ett tydligt ändamål: recept, måltidsplaner och inköpslistor. Den vanligaste fallgropen vid distribution är att receptbilder försvinner eftersom /app/data inte är beständig. Därför kräver hantering av publika URL:er och beständigt tillstånd lika mycket uppmärksamhet som uppstart av bilden.
Rita upp Mealie-körningsgränsen
Den minsta ansvarsfulla Mealie-topologin innehåller en privat lyssnare på 9000, en ingressrutt och en dokumenterad tillståndsgräns. Mealie behöver Postgres för en produktionsdistribution med flera användare och SMTP för inbjudningar. Håll privata endpoints på intern DNS, tillåt endast nödvändiga utgående anrop och ge Mealie en tjänstautentisering med begränsad behörighet.
Validera topologin genom att låta en ren klient importera en recept-URL, verifiera bilden, lägga till receptet i en måltidsplan och skapa en inköpslista från flera recept. Övervaka receptimporter, bildlagring, databasfrågor, bakgrundsuppgifter och samtidiga hushållsanvändare medan scenariot körs. Resultatet visar om nästa förbättring hör hemma i minne, lagring, nätverk eller en separat worker, i stället för att uppmuntra till godtycklig storlek på containern.
Kapacitets- och uppgraderingskontroller
En inaktiv health check säger inte mycket om Mealie. Övervaka receptimporter, bildlagring, databasfrågor, bakgrundsuppgifter och samtidiga hushållsanvändare och larma utifrån det symptom användarna upplever: att åtgärden ”importera en recept-URL, verifiera bilden, lägga till receptet i en måltidsplan och skapa en inköpslista från flera recept” misslyckas. Håll liveness lokal och billig; låt readiness rapportera migreringar eller initiering utan att orsaka en omstartsloop.
Det riskfyllda vid uppgraderingar är att databas-migreringar och ändringar i ingrediensparsern kan påverka lagrade recept. Testa därför importer och befintliga poster. Läs versionsanteckningarna, skapa en snapshot av tillståndet, distribuera målversionen mot en återställd kopia och upprepa acceptanstestet. Om receptbilder försvinner eftersom /app/data inte är beständig ska du korrelera klientanropet med den första relevanta applikationsloggen i stället för att radera tillstånd eller lägga till omdirigeringar på måfå.
Mealies releasegrind
En releasekandidat för Mealie får trafik genom att slutföra ett fast scenario: importera en recept-URL, verifiera bilden, lägga till receptet i en måltidsplan och skapa en inköpslista från flera recept. Dokumentera bildens digest, effektiv icke-hemlig konfiguration, publik origin och tidsstämplar för scenariot. Testdata ska kunna kastas bort, men vara tillräckligt realistiska för att använda samma flöde som användarna.
Kör testet efter att körningsmiljön har ersatts och bygg sedan om tjänsten från databas, receptbilder, tillgångar och applikationsinställningar. Återställningen är godkänd när recept, bilder, användare, måltidsplaner och inköpslistor återkommer och ett känt recept renderas korrekt. Jämför resursmätningar för receptimporter, bildlagring, databasfrågor, bakgrundsuppgifter och samtidiga hushållsanvändare med föregående release och undersök betydande avvikelser innan lansering.
Testa slutligen följande kontrollerade fel: neka tillfälligt testidentiteten åtkomst till Postgres för en produktionsdistribution med flera användare och till SMTP för inbjudningar. Kontrollera att Mealie förklarar felet, inte skadar befintligt tillstånd och återupptar driften när det korrekta villkoret återställs. Spara ett avidentifierat loggutdrag och återställningstiden. Tillsammans täcker dessa kontroller funktion, beständighet och driftbarhet – inte bara att processen är igång.
Bygg en utbytbar Mealie-container
Gör den första Mealie-anropningen tillräckligt reproducerbar för att kunna granskas i en 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
Förlita dig inte på latest när riktiga data väl finns. Dokumentera den fungerande digestens värde, containeranvändaren och ägarskapet för monteringen. Följ applikationsloggen genom ett komplett test – importera en recept-URL, verifiera bilden, lägg till receptet i en måltidsplan och skapa en inköpslista från flera recept – och notera eventuella migreringar innan du lägger rutten bakom produktionstrafik.
Hitta varje beständigt byte i Mealie
Inventera alla beständiga artefakter: databas, receptbilder, tillgångar och applikationsinställningar. Montera /app/data före bootstrap, skriv harmlösa exempeldata och ersätt containern för att bevisa att sökvägen faktiskt är beständig. Ta med konfiguration som ändrar hur lagrade data tolkas, inte bara den största katalogen.
Definiera retention, kopiera säkerhetskopior till en annan värd och genomför en återställning i en ren miljö. Mealie-övningen är klar när recept, bilder, användare, måltidsplaner och inköpslistor återkommer och ett känt recept renderas korrekt. Om snapshots ingår i planen kan du använda vägledningen om PITR kontra snapshots för att dokumentera vad varje mekanism kan återställa.
Dirigera Mealie utan att vilseleda om HTTPS
Sätt BASE_URL till den externa HTTPS-originen. Skicka det valda värdnamnet till containerns port 9000, vidarebefordra det ursprungliga värdnamnet och HTTPS-schemat och undvik att publicera en andra direkt origin.
Testa Mealie från en ren extern klient. Separera ingressfel från den kända applikationsgränsen – receptbilder försvinner eftersom /app/data inte är beständig. Ett certifikat-, DNS- eller 502-fel hör till routningen; ett anrop som når Mealie och misslyckas senare hör till applikationens tillstånd, kapacitet eller ett stödjande krav. Guiden för TLS med anpassade domäner täcker den första gruppen.
Begränsa den behörighet Mealie har
Efter den första inloggningen ska du granska vad en anonym besökare, en vanlig användare och en administratör kan göra. Mealie-felet du ska undvika är att lämna registreringen öppen eller behålla det första administratörslösenordet. Den avsedda policyn är att byta det första administratörslösenordet, stänga registreringen när användarupptaget är klart och skydda privata hushållsdata.
BASE_URL är konfiguration, inte en hemlighet. Håll värdet explicit samtidigt som du skyddar de separata autentiseringsuppgifter som Mealie använder. Håll beroendekonton åtskilda från personliga konton, neka oanvänd utgående trafik där det är praktiskt möjligt och begränsa arbete som påverkas av receptimporter, bildlagring, databasfrågor, bakgrundsuppgifter och samtidiga hushållsanvändare.
En Dockup-distribution behöver fortfarande ett Mealie-acceptanstest
Routning, certifikat, tjänsteersättning och ansluten lagring är rimliga mål för automatisering. Dockup hanterar detta för Mealie och kan provisionera den relaterade hanterade databasen eller ansluta till tjänster på kundens egen server.
Det som Dockup inte ska hitta på är Mealie-policy för tillit. Efter distributionen ska du sätta BASE_URL till den externa HTTPS-originen, tillämpa denna gräns – byt det första administratörslösenordet, stäng registreringen när användarupptaget är klart och skydda privata hushållsdata – och verifiera resultatet av följande scenario: importera en recept-URL, verifiera bilden, lägg till receptet i en måltidsplan och skapa en inköpslista från flera recept. Resultatet är infrastruktur med ett klick och ett applikationsspecifikt acceptanstest.
Vanliga frågor
Vad behöver Mealie för en produktionsdistribution?
Dirigera Mealie-containern på port 9000 via en enda HTTPS-origin. Det stödjande nätverkskravet är Postgres för en produktionsdistribution med flera användare och SMTP för inbjudningar. Anse inte att Mealie är redo förrän du kan importera en recept-URL, verifiera bilden, lägga till receptet i en måltidsplan och skapa en inköpslista från flera recept.
Vilka Mealie-data ska ingå i en säkerhetskopia?
Gör /app/data beständig och inkludera databas, receptbilder, tillgångar och applikationsinställningar i samma återställningsmanifest. En ren Mealie-återställning är godkänd först när recept, bilder, användare, måltidsplaner och inköpslistor återkommer och ett känt recept renderas korrekt.
Kräver Mealie HTTPS bakom en reverse proxy?
Använd HTTPS för den publika Mealie-originen och håll port 9000 på den interna rutten. Tillämpa Mealie-inställningen korrekt: sätt BASE_URL till den externa HTTPS-originen. För Mealie skyddar HTTPS autentiseringsuppgifter eller användarinnehåll under överföring och gör klientbeteende som är känsligt för origin konsekvent.
Hur ska en Mealie-uppgradering testas?
Återställ det aktuella Mealie-tillståndet i en isolerad distribution, tillämpa kandidatversionen och upprepa dess acceptanstransaktion. Var särskilt uppmärksam eftersom databas-migreringar och ändringar i ingrediensparsern kan påverka lagrade recept. Testa därför importer och befintliga poster. Behåll den tidigare Mealie-bilden tills gränserna för datamigrering och rollback är klarlagda.
