Rejstřík deníkuDockup / terénní poznámka
Note / self-host-mealie

Jak provozovat Mealie ve vlastní režii v roce 2026: import receptů, uživatelé a zálohy

Praktický průvodce provozem Mealie ve vlastní režii, který pokrývá Docker, porty, trvalá data, TLS, zabezpečení, zálohy a problémy bránící produkčnímu nasazení. Krok za krokem.

Nejkratší demonstrace Mealie dokáže, že proces naslouchá na portu 9000. Produkce vyžaduje přesvědčivější důkazy. Tento scénář musí fungovat i po nahrazení kontejneru: importovat URL receptu, ověřit jeho obrázek, přidat recept do jídelního plánu a z několika receptů vygenerovat nákupní seznam.

Mealie nasazujete s jasným účelem: pro recepty, jídelní plány a nákupní seznamy. Nejčastějším problémem při nasazení je mizení obrázků receptů, protože /app/data není persistentní. Stejnou pozornost jako spuštění aplikace proto vyžadují i práce s veřejnými URL a trvalý stav.

Vymezte hranice běhového prostředí Mealie

Nejmenší zodpovědná topologie Mealie obsahuje jeden privátní listener na portu 9000, ingressovou route a zdokumentovanou hranici stavu. Síťový kontrakt Mealie pro produkční nasazení s více uživateli tvoří Postgres a pro pozvánky SMTP. Privátní endpointy ponechte na interním DNS, povolte pouze potřebná odchozí spojení a Mealie přidělte omezené oprávnění service accountu.

Topologii ověřte tak, že čistý klient importuje URL receptu, ověří jeho obrázek, přidá ho do jídelního plánu a z několika receptů vygeneruje nákupní seznam. Během testu sledujte importy receptů, ukládání obrázků, databázové dotazy, background tasky a současné uživatele v domácnosti. Výsledek ukáže, zda další zlepšení patří do oblasti paměti, úložiště, sítě nebo samostatného workeru, místo abyste pouze náhodně navyšovali kapacitu kontejneru.

Kontroly kapacity a aktualizací

Idle health check o Mealie mnoho neřekne. Sledujte importy receptů, ukládání obrázků, databázové dotazy, background tasky a současné uživatele v domácnosti a upozorňujte na symptom, který uživatel skutečně pocítí: selhání akce „importovat URL receptu, ověřit jeho obrázek, přidat ho do jídelního plánu a z několika receptů vygenerovat nákupní seznam“. Liveness kontrolu ponechte lokální a nenáročnou; readiness by měla hlásit migrace nebo inicializaci, aniž by způsobila restart storm.

Rizikovou oblastí při aktualizaci je skutečnost, že migrace databáze a změny parseru ingrediencí mohou ovlivnit uložené recepty. Proto testujte importy i existující záznamy. Projděte release notes, vytvořte snapshot stavu, nasaďte cílovou verzi nad obnovenou kopií a akceptační akci zopakujte. Pokud obrázky receptů mizí, protože /app/data není persistentní, spojte požadavek klienta s prvním relevantním aplikačním logem, místo abyste naslepo mazali stav nebo přidávali redirecty.

Release gate pro Mealie

Release candidate pro Mealie si zaslouží provozní traffic až poté, co dokončí pevně definovaný scénář: importovat URL receptu, ověřit jeho obrázek, přidat ho do jídelního plánu a z několika receptů vygenerovat nákupní seznam. Pro tento scénář zaznamenejte digest image, efektivní konfiguraci bez tajných údajů, veřejný origin a časová razítka. Testovací data by měla být zlikvidovatelná, ale dostatečně realistická, aby ověřila stejnou cestu jako u skutečných uživatelů.

Spusťte test po nahrazení běhového prostředí a poté službu sestavte z databáze, obrázků receptů, assetů a nastavení aplikace. Obnova je úspěšná, když se vrátí recepty, obrázky, uživatelé, jídelní plány a nákupní seznamy a známý recept se správně vykreslí. Porovnejte měření zdrojů pro importy receptů, ukládání obrázků, databázové dotazy, background tasky a současné uživatele v domácnosti s předchozím releasem a před nasazením prozkoumejte významné odchylky.

Nakonec proveďte tento řízený výpadek: testovací identitě dočasně odepřete přístup k Postgres pro produkční nasazení s více uživateli a k SMTP pro pozvánky. Ověřte, že Mealie výpadek srozumitelně vysvětlí, nepoškodí existující stav a po obnovení platných podmínek se znovu rozběhne. Uložte redigovaný výňatek z logu a dobu obnovy. Tyto kontroly společně ověřují chování, trvalost i provozuschopnost, nikoli pouze dostupnost procesu.

Vytvořte nahraditelný kontejner Mealie

Počáteční spuštění Mealie udržujte dostatečně reprodukovatelné, aby ho bylo možné zkontrolovat v pull requestu.

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

Jakmile existují skutečná data, nespoléhejte na latest. Zaznamenejte funkční digest, uživatele kontejneru a vlastníka mountu. Sledujte aplikační log během celého testu — importujte URL receptu, ověřte jeho obrázek, přidejte ho do jídelního plánu a z několika receptů vygenerujte nákupní seznam — a před vystavením route produkčnímu trafficu si poznamenejte případné migrace.

Najděte v Mealie každý trvalý bajt

Zaevidujte každý trvalý artefakt: databázi, obrázky receptů, assety a nastavení aplikace. Připojte /app/data ještě před bootstrapem, zapište neškodná vzorová data a nahraďte kontejner, abyste prokázali, že je tato cesta skutečně persistentní. Zahrňte i konfiguraci, která mění interpretaci uložených dat, nejen největší adresář.

Nastavte retenční pravidla, kopírujte zálohy mimo hostitele a proveďte obnovu v čistém prostředí. Zkouška Mealie je dokončena, když se vrátí recepty, obrázky, uživatelé, jídelní plány a nákupní seznamy a známý recept se správně vykreslí. Pokud jsou součástí plánu snapshoty, použijte srovnání PITR a snapshotů a zdokumentujte, co lze jednotlivými mechanismy obnovit.

Směrujte Mealie bez předstírání HTTPS

Nastavte BASE_URL na externí HTTPS origin. Zvolený hostname směrujte na port kontejneru 9000, předávejte původní host a HTTPS scheme a nezveřejňujte druhý přímý origin.

Otestujte Mealie z čistého externího klienta. Oddělte selhání ingressu od známé hranice aplikace — obrázky receptů mizí, protože /app/data není persistentní. Chyba certifikátu, DNS nebo 502 patří do oblasti routingu; požadavek, který dorazí do Mealie a selže až později, patří do oblasti stavu aplikace, kapacity nebo podpůrné závislosti. První skupině se věnuje průvodce vlastní doménou a automatickým TLS.

Omezte oprávnění, která Mealie má

Po prvním přihlášení zkontrolujte, co může dělat anonymní návštěvník, běžný uživatel a administrátor. Selháním, kterému je třeba předejít, je ponechaná otevřená registrace nebo nezměněné počáteční heslo administrátora. Zamýšlená politika je změnit počáteční heslo administrátora, po skončení registrace registraci uzavřít a chránit soukromá data domácnosti.

BASE_URL je konfigurace, nikoli tajný údaj; její hodnotu udržujte explicitní a chraňte samostatné přihlašovací údaje používané Mealie. Účty závislostí oddělte od účtů lidí, tam, kde je to praktické, zakažte nepotřebný odchozí provoz a omezte práci vyvolanou importy receptů, ukládáním obrázků, databázovými dotazy, background tasky a současnými uživateli v domácnosti.

Nasazení přes Dockup stále potřebuje akceptační test Mealie

Routing, certifikáty, nahrazování služby a připojené úložiště jsou rozumné cíle pro automatizaci. Dockup je pro Mealie řeší a může zřídit související managed databázi nebo se připojit ke službám na vlastním serveru zákazníka.

Nemělo by ale vymýšlet bezpečnostní politiku Mealie. Po nasazení nastavte BASE_URL na externí HTTPS origin, vynucujte tuto hranici — změňte počáteční heslo administrátora, po skončení registrace registraci uzavřete a chraňte soukromá data domácnosti — a ověřte výsledek tohoto scénáře: importujte URL receptu, ověřte jeho obrázek, přidejte ho do jídelního plánu a z několika receptů vygenerujte nákupní seznam. Výsledkem je infrastruktura na jedno kliknutí s akceptačním testem specifickým pro aplikaci.

Často kladené otázky

Co Mealie potřebuje pro produkční nasazení?

Směrujte kontejner Mealie na portu 9000 přes jediný HTTPS origin. Síťovou podporou pro produkční nasazení s více uživateli je Postgres a pro pozvánky SMTP. Mealie nepovažujte za připravené, dokud nedokážete importovat URL receptu, ověřit jeho obrázek, přidat ho do jídelního plánu a z několika receptů vygenerovat nákupní seznam.

Která data Mealie patří do zálohy?

Zajistěte persistenci /app/data a do stejného recovery manifestu zahrňte databázi, obrázky receptů, assety a nastavení aplikace. Čistá obnova Mealie je úspěšná pouze tehdy, když se vrátí recepty, obrázky, uživatelé, jídelní plány a nákupní seznamy a známý recept se správně vykreslí.

Vyžaduje Mealie za reverse proxy HTTPS?

Pro veřejný origin Mealie používejte HTTPS a port 9000 ponechte na interní route. Nastavení Mealie aplikujte správně: nastavte BASE_URL na externí HTTPS origin. V případě Mealie HTTPS chrání přihlašovací údaje nebo obsah uživatelů při přenosu a zajišťuje konzistentní chování klienta závislé na originu.

Jak testovat aktualizaci Mealie?

Obnovte aktuální stav Mealie do izolovaného nasazení, aplikujte kandidátní verzi a zopakujte její akceptační transakci. Zvláštní pozornost věnujte tomu, že migrace databáze a změny parseru ingrediencí mohou ovlivnit uložené recepty. Proto testujte importy i existující záznamy. Předchozí image Mealie ponechte, dokud nebudete rozumět hranici migrace dat a rollbacku.