Journal-IndexDockup / Feldnotiz
Note / self-host-mealie

Mealie 2026 selbst hosten: Rezeptimporte, Benutzer und Backups

Ein praxisnaher Leitfaden zum Self-Hosting von Mealie mit Docker, Ports, persistenten Daten, TLS, Sicherheit, Backups und den Fehlern, die einen produktiven Betrieb verhindern. Schritt für Schritt.

Die kürzeste Mealie-Demo zeigt, dass ein Prozess auf Port 9000 lauscht. Für den produktiven Betrieb sind belastbarere Nachweise erforderlich. Dieses Szenario muss auch nach dem Ersetzen des Containers funktionieren: Eine Rezept-URL importieren, das zugehörige Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen.

Mealie wird für einen klaren Zweck eingesetzt: Rezepte, Speisepläne und Einkaufslisten. Die häufigste Falle bei der Bereitstellung besteht darin, dass Rezeptbilder verschwinden, weil /app/data nicht persistent ist. Deshalb müssen der Umgang mit öffentlichen URLs und der dauerhafte Zustand genauso sorgfältig behandelt werden wie der Start des Images.

Die Laufzeitgrenze von Mealie abstecken

Die kleinste verantwortungsvoll betriebene Mealie-Topologie umfasst einen privaten Listener auf Port 9000, eine Ingress-Route und eine dokumentierte Grenze für persistente Daten. Der Netzwerkvertrag für Mealie sieht bei einer produktiven Bereitstellung mit mehreren Benutzern Postgres und für Einladungen SMTP vor. Halte private Endpunkte im internen DNS, erlaube nur notwendige ausgehende Verbindungen und gib Mealie ein Service-Credential mit eingeschränktem Geltungsbereich.

Validiere die Topologie, indem du einen sauberen Client eine Rezept-URL importieren, das Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen lässt. Beobachte währenddessen Rezeptimporte, Bildspeicherung, Datenbankabfragen, Hintergrundaufgaben und gleichzeitig aktive Benutzer im Haushalt. Das Ergebnis zeigt, ob die nächste Verbesserung Arbeitsspeicher, Speicherplatz, Netzwerk oder einen separaten Worker betrifft, statt zu einer beliebigen Dimensionierung des Containers zu verleiten.

Kapazitäts- und Upgrade-Prüfungen

Ein inaktiver Health Check sagt wenig über Mealie aus. Beobachte Rezeptimporte, Bildspeicherung, Datenbankabfragen, Hintergrundaufgaben und gleichzeitig aktive Benutzer im Haushalt. Löse anschließend anhand des Symptoms aus, das Benutzer tatsächlich erleben: dem Fehlschlagen der Aktion „Eine Rezept-URL importieren, das Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen“. Halte Liveness lokal und kostengünstig; Readiness sollte Migrationen oder die Initialisierung melden, ohne eine Restart-Schleife auszulösen.

Der kritische Bereich bei Upgrades besteht darin, dass Datenbankmigrationen und Änderungen am Ingredient-Parser gespeicherte Rezepte beeinflussen können. Teste daher Importe und vorhandene Datensätze. Lies die Release Notes, erstelle einen Snapshot des Zustands, stelle die Zielversion anhand einer wiederhergestellten Kopie bereit und wiederhole die Abnahmetransaktion. Wenn Rezeptbilder verschwinden, weil /app/data nicht persistent ist, ordne die Client-Anfrage dem ersten relevanten Anwendungslog zu, statt den Zustand zu löschen oder blind Redirects hinzuzufügen.

Das Mealie-Release-Gate

Ein Release Candidate für Mealie erhält produktiven Traffic erst, wenn ein festgelegtes Szenario erfolgreich abgeschlossen wird: Eine Rezept-URL importieren, das Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen. Erfasse den Image-Digest, die effektive Konfiguration ohne Secrets, die öffentliche Origin und die Zeitstempel dieses Szenarios. Die Testdaten sollten löschbar, aber realistisch genug sein, um denselben Pfad wie bei echten Benutzern auszuführen.

Führe den Test nach dem Ersetzen der Laufzeitumgebung aus. Baue anschließend den Service aus Datenbank, Rezeptbildern, Assets und Anwendungseinstellungen neu auf. Die Wiederherstellung ist erfolgreich, wenn Rezepte, Bilder, Benutzer, Speisepläne und Einkaufslisten zurückkehren und ein bekanntes Rezept korrekt gerendert wird. Vergleiche die Ressourcenmessungen für Rezeptimporte, Bildspeicherung, Datenbankabfragen, Hintergrundaufgaben und gleichzeitig aktive Benutzer im Haushalt mit dem vorherigen Release. Untersuche relevante Abweichungen, bevor du die Version freigibst.

Führe schließlich diesen kontrollierten Fehlerfall aus: Verweigere der Testidentität vorübergehend den Zugriff auf Postgres für eine produktive Bereitstellung mit mehreren Benutzern und auf SMTP für Einladungen. Überprüfe, dass Mealie den Fehler verständlich erklärt, vorhandene Daten nicht beschädigt und nach Wiederherstellung der korrekten Bedingung fortgesetzt werden kann. Speichere einen bereinigten Logauszug und die Wiederherstellungszeit. Zusammen decken diese Prüfungen Verhalten, Dauerhaftigkeit und Betriebsfähigkeit ab, statt lediglich zu prüfen, ob der Prozess läuft.

Einen ersetzbaren Mealie-Container erstellen

Halte den ersten Mealie-Aufruf so reproduzierbar, dass er in einem Pull Request überprüft werden kann.

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

Verlasse dich nicht auf latest, sobald echte Daten vorhanden sind. Erfasse den funktionierenden Digest, den Container-Benutzer und die Eigentumsrechte des Mounts. Verfolge das Anwendungslog durch einen vollständigen Test — eine Rezept-URL importieren, das Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen — und notiere alle Migrationen, bevor du die Route für produktiven Traffic freigibst.

Jedes persistente Byte in Mealie finden

Erfasse jedes persistente Artefakt: Datenbank, Rezeptbilder, Assets und Anwendungseinstellungen. Binde /app/data vor dem Bootstrap ein, schreibe harmlose Beispieldaten und ersetze den Container, um nachzuweisen, dass dieser Pfad tatsächlich persistent ist. Berücksichtige auch Konfigurationen, die die Interpretation gespeicherter Daten verändern, nicht nur das größte Verzeichnis.

Lege Aufbewahrungsfristen fest, kopiere Backups auf einen anderen Host und führe eine Wiederherstellung in einer isolierten Umgebung durch. Die Mealie-Wiederherstellungsübung ist abgeschlossen, wenn Rezepte, Bilder, Benutzer, Speisepläne und Einkaufslisten zurückkehren und ein bekanntes Rezept korrekt gerendert wird. Wenn Snapshots Bestandteil des Plans sind, dokumentiere mithilfe der Anleitung zu PITR im Vergleich zu Snapshots, was mit welchem Mechanismus wiederhergestellt werden kann.

Mealie routen, ohne bei HTTPS falsche Sicherheit vorzutäuschen

Setze BASE_URL auf die externe HTTPS-Origin. Leite den gewählten Hostnamen an den Container-Port 9000 weiter, übertrage den ursprünglichen Host und das HTTPS-Schema und veröffentliche keine zweite direkte Origin.

Teste Mealie von einem sauberen externen Client aus. Trenne Ingress-Fehler von der bekannten Anwendungsgrenze — Rezeptbilder verschwinden, weil /app/data nicht persistent ist. Ein Zertifikats-, DNS- oder 502-Fehler gehört zum Routing; eine Anfrage, die Mealie erreicht und erst später fehlschlägt, gehört zum Anwendungszustand, zur Kapazität oder zu einer unterstützenden Abhängigkeit. Die Anleitung zu TLS für benutzerdefinierte Domains behandelt die erste Gruppe.

Die von Mealie gehaltenen Berechtigungen reduzieren

Überprüfe nach der ersten Anmeldung, was ein anonymer Besucher, ein normaler Benutzer und ein Administrator jeweils tun können. Der zu vermeidende Mealie-Fehler besteht darin, die Registrierung offen zu lassen oder das erste Administratorpasswort unverändert zu lassen. Die vorgesehene Richtlinie lautet: das erste Administratorpasswort ersetzen, die Registrierung nach Ende der Anmeldung schließen und private Haushaltsdaten schützen.

BASE_URL ist Konfiguration und kein Secret. Halte den Wert explizit, während du die separaten Zugangsdaten schützt, die Mealie verwendet. Trenne Konten für Abhängigkeiten von menschlichen Benutzerkonten, untersage nicht benötigte ausgehende Verbindungen, soweit praktikabel, und begrenze die durch Rezeptimporte, Bildspeicherung, Datenbankabfragen, Hintergrundaufgaben und gleichzeitig aktive Benutzer im Haushalt beeinflusste Arbeit.

Auch ein Dockup-Deployment benötigt einen Mealie-Abnahmetest

Routing, Zertifikate, das Ersetzen von Services und angebundener Speicher sind sinnvolle Ziele für die Automatisierung. Dockup übernimmt diese Aufgaben für Mealie und kann die zugehörige verwaltete Datenbank bereitstellen oder eine Verbindung zu Services auf dem eigenen Server eines Kunden herstellen.

Was Dockup nicht erfinden sollte, ist die Mealie-Vertrauensrichtlinie. Setze nach dem Deployment BASE_URL auf die externe HTTPS-Origin, erzwinge diese Grenze — ersetze das erste Administratorpasswort, schließe die Registrierung nach Ende der Anmeldung und schütze private Haushaltsdaten — und überprüfe das Ergebnis dieses Szenarios: Eine Rezept-URL importieren, das Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen. Das Ergebnis ist eine Infrastruktur mit One-Click-Bereitstellung und einem anwendungsspezifischen Abnahmetest.

Häufig gestellte Fragen

Was benötigt Mealie für eine produktive Bereitstellung?

Leite den Mealie-Container auf Port 9000 über eine einzige HTTPS-Origin. Die unterstützenden Netzwerkanforderungen sind Postgres für eine produktive Bereitstellung mit mehreren Benutzern und SMTP für Einladungen. Erkläre Mealie erst dann für bereit, wenn du eine Rezept-URL importieren, das Bild überprüfen, das Rezept einem Speiseplan hinzufügen und aus mehreren Rezepten eine Einkaufsliste erstellen kannst.

Welche Mealie-Daten gehören in ein Backup?

Mache /app/data persistent und nimm Datenbank, Rezeptbilder, Assets und Anwendungseinstellungen in dasselbe Wiederherstellungsmanifest auf. Eine saubere Mealie-Wiederherstellung ist erst erfolgreich, wenn Rezepte, Bilder, Benutzer, Speisepläne und Einkaufslisten zurückkehren und ein bekanntes Rezept korrekt gerendert wird.

Benötigt Mealie hinter einem Reverse Proxy HTTPS?

Verwende HTTPS für die öffentliche Mealie-Origin und halte Port 9000 auf der internen Route. Setze die Mealie-Einstellung korrekt: BASE_URL muss auf die externe HTTPS-Origin zeigen. Bei Mealie schützt HTTPS Zugangsdaten oder Benutzerinhalte während der Übertragung und sorgt für ein konsistentes Client-Verhalten, das von der Origin abhängt.

Wie sollte ein Mealie-Upgrade getestet werden?

Stelle den aktuellen Mealie-Zustand in einem isolierten Deployment wieder her, spiele die Zielversion ein und wiederhole die Abnahmetransaktion. Gehe besonders sorgfältig vor, da Datenbankmigrationen und Änderungen am Ingredient-Parser gespeicherte Rezepte beeinflussen können. Teste daher Importe und vorhandene Datensätze. Bewahre das vorherige Mealie-Image auf, bis die Grenzen der Datenmigration und des Rollbacks verstanden sind.