Indeks dziennikaDockup / notatka terenowa
Note / self-host-mealie

Jak hostować Mealie samodzielnie w 2026 roku: import przepisów, użytkownicy i kopie zapasowe

Praktyczny przewodnik po samodzielnym hostowaniu Mealie: Docker, porty, dane trwałe, TLS, bezpieczeństwo, kopie zapasowe i problemy blokujące użycie produkcyjne. Krok po kroku.

Najkrótsza demonstracja Mealie potwierdza jedynie, że proces nasłuchuje na porcie 9000. Środowisko produkcyjne wymaga mocniejszych dowodów. Musi przejść ten scenariusz nawet po zastąpieniu kontenera: zaimportować adres URL przepisu, zweryfikować jego obraz, dodać go do planu posiłków i wygenerować listę zakupów na podstawie kilku przepisów.

Mealie wdraża się w konkretnym celu: do obsługi przepisów, planów posiłków i list zakupów. Najczęstsza pułapka wdrożeniowa polega na znikaniu obrazów przepisów, ponieważ /app/data nie jest trwałe, dlatego obsługa publicznego adresu URL i trwałość danych wymagają takiej samej uwagi jak uruchomienie obrazu.

Wyznacz granicę środowiska uruchomieniowego Mealie

Najmniejsza odpowiedzialna topologia Mealie obejmuje jeden prywatny listener na porcie 9000, trasę ingress oraz udokumentowaną granicę stanu. Kontrakt sieciowy Mealie obejmuje Postgres w przypadku produkcyjnego wdrożenia dla wielu użytkowników oraz SMTP do obsługi zaproszeń. Prywatne endpointy pozostaw w wewnętrznym DNS, zezwalaj wyłącznie na wymagane połączenia wychodzące i nadaj Mealie ograniczone uprawnienia poświadczeń usługi.

Zweryfikuj topologię, prosząc czystego klienta o zaimportowanie adresu URL przepisu, sprawdzenie jego obrazu, dodanie go do planu posiłków oraz wygenerowanie listy zakupów na podstawie kilku przepisów. Podczas działania obserwuj import przepisów, przechowywanie obrazów, zapytania do bazy danych, zadania w tle i jednoczesnych użytkowników domowych. Wynik pokaże, czy kolejna poprawa powinna dotyczyć pamięci, storage’u, sieci czy osobnego workera, zamiast zachęcać do arbitralnego zwiększania zasobów kontenera.

Sprawdzanie wydajności i aktualizacji

Bezczynny health check niewiele mówi o Mealie. Obserwuj import przepisów, przechowywanie obrazów, zapytania do bazy danych, zadania w tle i jednoczesnych użytkowników domowych, a następnie skonfiguruj alerty na podstawie objawu odczuwanego przez użytkowników: niepowodzenia akcji „zaimportuj adres URL przepisu, zweryfikuj jego obraz, dodaj go do planu posiłków i wygeneruj listę zakupów na podstawie kilku przepisów”. Liveness utrzymuj lokalny i tani; readiness powinien informować o migracjach lub inicjalizacji bez wywoływania lawiny restartów.

Ryzykownym obszarem aktualizacji jest możliwość, że migracje bazy danych i zmiany parsera składników wpłyną na zapisane przepisy, dlatego należy przetestować importy i istniejące rekordy. Czytaj informacje o wydaniach, wykonaj snapshot stanu, wdroż wersję docelową na podstawie przywróconej kopii i powtórz akcję akceptacyjną. Jeśli obrazy przepisów znikają, ponieważ /app/data nie jest trwałe, skoreluj żądanie klienta z pierwszym odpowiednim wpisem w logu aplikacji, zamiast bez zastanowienia usuwać stan lub dodawać przekierowania.

Bramka wydania Mealie

Kandydat do wydania Mealie zasługuje na obsługę ruchu dopiero po wykonaniu ustalonego scenariusza: zaimportowaniu adresu URL przepisu, zweryfikowaniu jego obrazu, dodaniu go do planu posiłków i wygenerowaniu listy zakupów na podstawie kilku przepisów. Zapisz digest obrazu, efektywną konfigurację niezawierającą sekretów, publiczny origin i znaczniki czasu dla tego scenariusza. Dane testowe powinny być usuwalne, ale wystarczająco realistyczne, aby przećwiczyć tę samą ścieżkę co użytkownicy.

Uruchom test po zastąpieniu środowiska uruchomieniowego, a następnie odbuduj usługę z bazy danych, obrazów przepisów, assetów i ustawień aplikacji. Odzyskiwanie kończy się powodzeniem, gdy wracają przepisy, obrazy, użytkownicy, plany posiłków i listy zakupów, a znany przepis renderuje się poprawnie. Porównaj pomiary zasobów dla importu przepisów, przechowywania obrazów, zapytań do bazy danych, zadań w tle i jednoczesnych użytkowników domowych z poprzednim wydaniem, a przed awansem zbadaj istotne odchylenia.

Na koniec przećwicz kontrolowaną awarię: tymczasowo odbierz testowej tożsamości dostęp do Postgresa w przypadku produkcyjnego wdrożenia dla wielu użytkowników oraz do SMTP używanego do zaproszeń. Zweryfikuj, czy Mealie wyjaśnia przyczynę awarii, nie uszkadza istniejącego stanu i wznawia działanie po przywróceniu prawidłowych warunków. Zapisz zanonimizowany fragment logu oraz czas przywracania działania. Łącznie testy te obejmują zachowanie, trwałość i operacyjność, a nie tylko dostępność procesu.

Zbuduj wymienialny kontener Mealie

Początkowe uruchomienie Mealie powinno być na tyle powtarzalne, aby można było je sprawdzić w pull requeście.

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

Po pojawieniu się rzeczywistych danych nie polegaj na latest. Zapisz działający digest, użytkownika kontenera i właściciela zamontowanego katalogu. Prześledź log aplikacji przez cały test — zaimportuj adres URL przepisu, zweryfikuj jego obraz, dodaj go do planu posiłków i wygeneruj listę zakupów na podstawie kilku przepisów — oraz odnotuj wszelkie migracje przed skierowaniem trasy do ruchu produkcyjnego.

Znajdź każdy trwały bajt w Mealie

Zrób inwentaryzację wszystkich trwałych artefaktów: bazy danych, obrazów przepisów, assetów i ustawień aplikacji. Zamontuj /app/data przed bootstrapem, zapisz nieszkodliwe przykładowe dane i zastąp kontener, aby potwierdzić, że ta ścieżka rzeczywiście jest trwała. Uwzględnij konfigurację, która zmienia sposób interpretowania zapisanych danych, a nie tylko największy katalog.

Ustal retencję, kopiuj backupy poza hosta i wykonaj odtworzenie w clean roomie. Próba odtworzeniowa Mealie jest zakończona, gdy wracają przepisy, obrazy, użytkownicy, plany posiłków i listy zakupów, a znany przepis renderuje się poprawnie. Jeśli plan obejmuje snapshoty, skorzystaj z poradnika PITR a snapshoty, aby udokumentować, co można odzyskać za pomocą każdego mechanizmu.

Skieruj Mealie za HTTPS bez wprowadzania w błąd

Ustaw BASE_URL na zewnętrzny origin HTTPS. Skieruj wybraną nazwę hosta do portu kontenera 9000, przekazuj oryginalny host i schemat HTTPS oraz unikaj publikowania drugiego bezpośredniego originu.

Przetestuj Mealie z czystego klienta zewnętrznego. Oddziel awarię ingressu od znanej granicy aplikacji — obrazy przepisów znikają, ponieważ /app/data nie jest trwałe. Błąd certyfikatu, DNS lub 502 należy do routingu; żądanie, które dociera do Mealie, ale później kończy się niepowodzeniem, dotyczy stanu aplikacji, wydajności lub jej wymagania pomocniczego. Poradnik TLS dla własnej domeny obejmuje pierwszą grupę problemów.

Ogranicz uprawnienia Mealie

Po pierwszym logowaniu sprawdź, co może zrobić anonimowy odwiedzający, zwykły użytkownik i administrator. Należy unikać sytuacji, w której rejestracja pozostaje otwarta lub pierwsze hasło administratora nie zostaje zmienione. Docelowa polityka zakłada zmianę pierwszego hasła administratora, zamknięcie rejestracji po zakończeniu naboru oraz ochronę prywatnych danych domowników.

BASE_URL jest konfiguracją, a nie sekretem; jego wartość powinna pozostać jawna, natomiast należy chronić oddzielne dane uwierzytelniające używane przez Mealie. Konta zależności trzymaj oddzielnie od kont użytkowników, w miarę możliwości blokuj nieużywany ruch wychodzący i ograniczaj pracę wynikającą z importu przepisów, przechowywania obrazów, zapytań do bazy danych, zadań w tle i jednoczesnej aktywności użytkowników domowych.

Wdrożenie Dockup nadal wymaga testu akceptacyjnego Mealie

Routing, certyfikaty, wymiana usług i dołączony storage są rozsądnymi celami automatyzacji. Dockup obsługuje je dla Mealie i może utworzyć powiązaną zarządzaną bazę danych lub połączyć się z usługami na własnym serwerze klienta.

Nie powinien jednak wymyślać polityki zaufania Mealie. Po wdrożeniu ustaw BASE_URL na zewnętrzny origin HTTPS, zastosuj tę granicę — zmień pierwsze hasło administratora, zamknij rejestrację po zakończeniu naboru i chroń prywatne dane domowników — oraz zweryfikuj wynik następującego scenariusza: zaimportuj adres URL przepisu, zweryfikuj jego obraz, dodaj go do planu posiłków i wygeneruj listę zakupów na podstawie kilku przepisów. Rezultatem jest infrastruktura wdrażana jednym kliknięciem wraz z testem akceptacyjnym specyficznym dla aplikacji.

Najczęściej zadawane pytania

Czego Mealie potrzebuje do wdrożenia produkcyjnego?

Skieruj kontener Mealie na porcie 9000 przez jeden origin HTTPS. Wymagania sieciowe obejmują Postgresa w przypadku produkcyjnego wdrożenia dla wielu użytkowników oraz SMTP do obsługi zaproszeń. Nie uznawaj Mealie za gotowe, dopóki nie możesz zaimportować adresu URL przepisu, zweryfikować jego obrazu, dodać go do planu posiłków i wygenerować listy zakupów na podstawie kilku przepisów.

Które dane Mealie powinny znaleźć się w backupie?

Zachowaj /app/data i uwzględnij bazę danych, obrazy przepisów, assety oraz ustawienia aplikacji w tym samym manifeście odzyskiwania. Czyste odtworzenie Mealie kończy się powodzeniem tylko wtedy, gdy wracają przepisy, obrazy, użytkownicy, plany posiłków i listy zakupów, a znany przepis renderuje się poprawnie.

Czy Mealie wymaga HTTPS za reverse proxy?

Używaj HTTPS dla publicznego originu Mealie i pozostaw port 9000 na trasie wewnętrznej. Zastosuj prawidłowe ustawienie Mealie: ustaw BASE_URL na zewnętrzny origin HTTPS. W przypadku Mealie HTTPS chroni dane uwierzytelniające lub treści użytkowników podczas przesyłania i zapewnia spójność zachowania klienta zależnego od originu.

Jak testować aktualizację Mealie?

Odtwórz bieżący stan Mealie w odizolowanym wdrożeniu, zastosuj wersję kandydującą i powtórz transakcję akceptacyjną. Zwróć szczególną uwagę na to, że migracje bazy danych i zmiany parsera składników mogą wpłynąć na zapisane przepisy, dlatego przetestuj importy i istniejące rekordy. Zachowaj poprzedni obraz Mealie do czasu zrozumienia granic migracji danych i wycofywania zmian.