Come fare il self-hosting di Mealie nel 2026: importazione di ricette, utenti e backup
Una guida pratica al self-hosting di Mealie con Docker, porte, dati persistenti, TLS, sicurezza, backup e problemi che impediscono l'uso in produzione. Passo dopo passo.
La demo più semplice di Mealie dimostra che un processo è in ascolto sulla porta 9000. La produzione richiede prove più solide. Deve superare questo scenario anche dopo la sostituzione del container: importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette.
Mealie viene distribuito per uno scopo preciso: gestire ricette, piani pasti e liste della spesa. Il problema di deployment più comune è che le immagini delle ricette scompaiono perché /app/data non è persistente; per questo la gestione degli URL pubblici e lo stato persistente devono ricevere la stessa attenzione dell'avvio dell'immagine.
Definire il perimetro di runtime di Mealie
La topologia minima responsabile di Mealie comprende un solo listener privato sulla porta 9000, una route di ingresso e un confine dello stato documentato. Il contratto di rete di Mealie prevede Postgres per un deployment di produzione multiutente e SMTP per gli inviti. Mantieni gli endpoint privati sul DNS interno, consenti solo le chiamate in uscita necessarie e assegna a Mealie credenziali di servizio con autorizzazioni limitate.
Valida la topologia chiedendo a un client pulito di importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette. Durante l'esecuzione, osserva le importazioni delle ricette, l'archiviazione delle immagini, le query al database, le attività in background e gli utenti dello stesso ambiente domestico collegati contemporaneamente. Il risultato indica se il prossimo miglioramento riguarda memoria, storage, rete o un worker separato, invece di incoraggiare un dimensionamento arbitrario del container.
Controlli di capacità e aggiornamento
Un health check in condizioni di inattività dice poco su Mealie. Osserva le importazioni delle ricette, l'archiviazione delle immagini, le query al database, le attività in background e gli utenti dello stesso ambiente domestico collegati contemporaneamente, quindi genera alert sul sintomo percepito dagli utenti: il fallimento dell'azione “importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette”. Mantieni il liveness locale e poco costoso; lascia che il readiness segnali migrazioni o inizializzazione senza provocare una raffica di riavvii.
L'area più rischiosa degli aggiornamenti è il fatto che le migrazioni del database e le modifiche all'ingredient-parser possono influire sulle ricette memorizzate; per questo devi testare le importazioni e i record esistenti. Leggi le note di rilascio, crea uno snapshot dello stato, distribuisci la versione target su una copia ripristinata e ripeti l'azione di accettazione. Se le immagini delle ricette scompaiono perché /app/data non è persistente, correla la richiesta del client con il primo log applicativo rilevante invece di eliminare lo stato o aggiungere redirect alla cieca.
Il gate di rilascio di Mealie
Una release candidate di Mealie si guadagna il traffico completando uno scenario fisso: importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette. Acquisisci l'image digest, la configurazione effettiva priva di segreti, l'origine pubblica e i timestamp relativi a quello scenario. I dati di test devono essere eliminabili, ma abbastanza realistici da esercitare lo stesso percorso seguito dagli utenti.
Eseguilo dopo aver sostituito il runtime, quindi ricostruisci il servizio a partire da database, immagini delle ricette, asset e impostazioni dell'applicazione. Il ripristino va considerato riuscito quando ricette, immagini, utenti, piani pasti e liste della spesa tornano disponibili e una ricetta nota viene visualizzata correttamente. Confronta le misurazioni delle risorse relative a importazioni delle ricette, archiviazione delle immagini, query al database, attività in background e utenti dello stesso ambiente domestico collegati contemporaneamente con quelle della versione precedente e analizza ogni variazione significativa prima della promozione.
Infine, esegui questo guasto controllato: nega temporaneamente all'identità di test l'accesso a Postgres per un deployment di produzione multiutente e a SMTP per gli inviti. Verifica che Mealie spieghi il problema, non danneggi lo stato esistente e riprenda a funzionare quando la condizione valida viene ripristinata. Salva un estratto del log redatto e il tempo di recupero. Insieme, questi controlli coprono comportamento, durabilità e operatività, non solo l'uptime del processo.
Creare un container Mealie sostituibile
Mantieni l'invocazione iniziale di Mealie sufficientemente riproducibile da poter essere revisionata in una 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
Non affidarti a latest dopo che esistono dati reali. Acquisisci il digest funzionante, l'utente del container e la proprietà del mount. Segui il log dell'applicazione durante un test completo — importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette — e annota eventuali migrazioni prima di mettere la route dietro il traffico di produzione.
Individuare ogni byte persistente in Mealie
Fai l'inventario di ogni artefatto persistente: database, immagini delle ricette, asset e impostazioni dell'applicazione. Monta /app/data prima del bootstrap, scrivi dati di esempio innocui e sostituisci il container per dimostrare che quel percorso è effettivamente persistente. Includi le configurazioni che modificano il modo in cui i dati memorizzati vengono interpretati, non solo la directory più grande.
Imposta la retention, copia i backup fuori dall'host ed esegui un ripristino in un ambiente pulito. Il test di Mealie è completo quando ricette, immagini, utenti, piani pasti e liste della spesa tornano disponibili e una ricetta nota viene visualizzata correttamente. Se gli snapshot fanno parte del piano, usa le indicazioni su PITR e snapshot per documentare ciò che ogni meccanismo è in grado di recuperare.
Instradare Mealie senza fingere che HTTPS sia configurato
Imposta BASE_URL sull'origine HTTPS esterna. Invia l'hostname scelto alla porta 9000 del container, inoltra l'host originale e lo schema HTTPS ed evita di pubblicare una seconda origine diretta.
Testa Mealie da un client esterno pulito. Distingui il problema di ingress dal confine applicativo noto — le immagini delle ricette scompaiono perché /app/data non è persistente. Un errore di certificato, DNS o 502 riguarda il routing; una richiesta che raggiunge Mealie e fallisce in seguito riguarda lo stato dell'applicazione, la capacità o un requisito di supporto. La guida al TLS per domini personalizzati tratta il primo gruppo.
Ridurre le autorizzazioni detenute da Mealie
Dopo il primo accesso, verifica cosa possono fare rispettivamente un visitatore anonimo, un utente normale e un amministratore. Il problema da evitare in Mealie è lasciare aperta la registrazione o mantenere invariata la prima password di amministratore. La policy prevista consiste nel sostituire la prima password di amministratore, chiudere la registrazione al termine dell'iscrizione e proteggere i dati privati dell'ambiente domestico.
BASE_URL è una configurazione, non un segreto; mantieni esplicito il suo valore proteggendo le credenziali separate utilizzate da Mealie. Mantieni distinti gli account delle dipendenze da quelli degli utenti, nega quando possibile il traffico in uscita non utilizzato e limita il lavoro influenzato dalle importazioni delle ricette, dall'archiviazione delle immagini, dalle query al database, dalle attività in background e dagli utenti dello stesso ambiente domestico collegati contemporaneamente.
Anche un deployment Dockup richiede un test di accettazione di Mealie
Routing, certificati, sostituzione dei servizi e storage collegato sono obiettivi ragionevoli per l'automazione. Dockup li gestisce per Mealie e può predisporre il database gestito correlato oppure connettersi ai servizi sul server del cliente.
Non dovrebbe invece inventare la policy di attendibilità di Mealie. Dopo il deployment, imposta BASE_URL sull'origine HTTPS esterna, applica questo confine — sostituire la prima password di amministratore, chiudere la registrazione al termine dell'iscrizione e proteggere i dati privati dell'ambiente domestico — e verifica il risultato di questo scenario: importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette. Il risultato è un'infrastruttura con un clic accompagnata da un test di accettazione specifico per l'applicazione.
Domande frequenti
Di cosa ha bisogno Mealie per un deployment di produzione?
Instrada il container Mealie sulla porta 9000 attraverso un'unica origine HTTPS. Il requisito di rete di supporto è Postgres per un deployment di produzione multiutente e SMTP per gli inviti. Non considerare Mealie pronto finché non puoi importare l'URL di una ricetta, verificarne l'immagine, aggiungerla a un piano pasti e generare una lista della spesa a partire da più ricette.
Quali dati di Mealie devono rientrare in un backup?
Rendi persistente /app/data e includi database, immagini delle ricette, asset e impostazioni dell'applicazione nello stesso manifest di ripristino. Un ripristino pulito di Mealie è riuscito solo quando ricette, immagini, utenti, piani pasti e liste della spesa tornano disponibili e una ricetta nota viene visualizzata correttamente.
Mealie richiede HTTPS dietro un reverse proxy?
Usa HTTPS per l'origine pubblica di Mealie e mantieni la porta 9000 nella route interna. Applica correttamente l'impostazione di Mealie: imposta BASE_URL sull'origine HTTPS esterna. Per Mealie, HTTPS protegge le credenziali o i contenuti degli utenti durante il transito e mantiene coerente il comportamento del client sensibile all'origine.
Come si deve testare un aggiornamento di Mealie?
Ripristina lo stato corrente di Mealie in un deployment isolato, applica la versione candidata e ripeti la relativa transazione di accettazione. Presta particolare attenzione perché le migrazioni del database e le modifiche all'ingredient-parser possono influire sulle ricette memorizzate; per questo devi testare le importazioni e i record esistenti. Conserva l'immagine precedente di Mealie finché non avrai compreso i limiti della migrazione dei dati e del rollback.
