Tengo el problema clásico de las recetas. Encuentro algo bueno en Instagram, en YouTube, en un blog cualquiera. Lo guardo en algún sitio. Lo olvido. Tres meses después recuerdo que tenía esa receta de salmón con miso pero no recuerdo dónde la guardé. O peor, el blog desapareció y el link está muerto.
He probado muchas soluciones. Marcadores de Chrome organizados en carpetas. Notion con una base de datos de recetas con etiquetas y todo. Una carpeta en Obsidian con markdown para cada receta. Paprika, que es la app de gestión de recetas más conocida y que funciona bastante bien pero es de pago y no tiene self-hosting.
Hace unos meses monté Mealie. Y por primera vez en años tengo las recetas organizadas de una forma que realmente uso.
Qué es Mealie#
Mealie es un gestor de recetas open source. Se instala en tu servidor, tienes los datos en casa, y tiene una interfaz web bastante cuidada. Lo desarrolla una persona (hay contribuidores pero hay un maintainer principal muy activo). El proyecto está en GitHub y lleva varios años de desarrollo.
Las funciones principales son:
- Importar recetas desde URLs (scraping automático desde miles de webs de recetas)
- Subir recetas manualmente o desde foto con OCR
- Planificación de menú semanal
- Lista de la compra generada automáticamente desde el menú
- API REST completa para automatizaciones
- Multiusuario con grupos y permisos
- Soporte de unidades, conversiones y escalado de porciones
Nada de esto es especialmente novedoso. Lo que lo hace bueno es que funciona bien. La importación desde URLs, que es la función que más uso, reconoce los ingredientes y los pasos de cocina correctamente en la mayoría de webs conocidas. No es perfecta, pero es mucho mejor que copiar y pegar a mano.
Instalación con Docker Compose#
La instalación es sencilla. Mealie tiene imagen oficial en Docker Hub y la documentación de instalación está bien mantenida.
Este es el compose que uso:
| |
Para la base de datos uso SQLite porque mi instancia tiene tres usuarios y no necesito más. Si tienes muchos usuarios o quieres más rendimiento, soporta PostgreSQL también.
El puerto 9925 lo expongo en el host y luego un reverse proxy lo sirve con HTTPS. Si usas Nginx Proxy Manager o Traefik, el proceso es el mismo que con cualquier otro contenedor.
Primer arranque:
| |
Accedes a http://tu-servidor:9925, creas el usuario admin y ya está. El setup inicial lleva menos de cinco minutos.
Importar recetas desde URLs#
Esta es la función que más usas al principio. Pegas una URL de cualquier blog de recetas y Mealie intenta extraer los ingredientes, los pasos y la imagen automáticamente.
Funciona muy bien con webs que usan el estándar de recetas de schema.org. La mayoría de blogs de cocina grandes lo hacen porque así aparecen en los resultados de Google con los ingredientes visibles. Mealie aprovecha exactamente ese metadato estructurado.
Con webs más oscuras o blogs artesanales sin el estándar, la importación falla o lo hace a medias. En esos casos tienes que editar la receta manualmente para corregir lo que se importó mal. No es el fin del mundo pero conviene saber que no es magia absoluta.
Las webs que me funcionan siempre: Bon Appétit, Serious Eats, Allrecipes, la mayoría de blogs españoles de cocina populares como Directo al Paladar o Recetas de Rechupete. También funciona bastante bien con los enlaces de Instagram cuando la cuenta tiene el link a una web externa.
Lo que no funciona: vídeos de YouTube (solo la URL del vídeo, no extrae receta del texto de descripción), PDFs, capturas de pantalla a menos que uses la función de OCR.
OCR desde foto o captura#
Mealie tiene integración opcional con servicios de OCR para reconocer recetas desde imágenes. Tengo esto desactivado porque no lo necesito mucho, pero existe y funciona razonablemente bien con texto claro en la foto.
Si tienes recetas en papel que quieres digitalizar, puedes configurar el OCR y tomarte una tarde para fotografiar todo. No es un proceso ágil pero es mejor que escribir a mano.
Planificación de menú#
Aquí está una de las razones por las que Mealie supera a la mayoría de alternativas.
Tienes un calendario semanal donde arrastras recetas a los días. Puedes planificar desayuno, comida y cena por separado. Una vez tienes el menú montado, puedes generar la lista de la compra automáticamente sumando los ingredientes de todas las recetas de la semana.
La lista de la compra agrupa ingredientes iguales. Si el lunes necesitas 200g de tomates cherry y el miércoles otros 300g, Mealie suma los 500g en un solo ítem de la lista. Eso suena básico pero cuando lo tienes funcionando te preguntas cómo planificabas la compra antes.
La lista se puede compartir. Si mi pareja tiene cuenta en la misma instancia, puede ver y editar la lista desde su móvil mientras está en el supermercado. La app web es responsive y funciona bastante bien desde el teléfono sin necesidad de instalar nada.
También puedes marcar ítems de la lista como comprados mientras vas por las secciones del supermercado. Los ítems marcados se atenúan visualmente pero no desaparecen hasta que limpias la lista. Me parece el comportamiento correcto porque a veces necesito mirar atrás para confirmar que no me dejé nada.
Escalado de porciones#
Una cosa que parece menor pero uso bastante. Cada receta tiene un número de porciones. Puedes cambiarlo y Mealie recalcula automáticamente todos los ingredientes.
La receta original es para 4 personas. Quiero hacerla para 2. Cambio el número y los 400g de pasta pasan a 200g, el 1 diente de ajo pasa a medio diente de ajo (sí, lo divide aunque suene raro), y así con todo.
Para cocinar solo o para cuando hay más gente de la habitual, esto ahorra el cálculo manual que siempre acaba en “¿cuánto era la mitad de 3/4 de taza?”.
API y automatizaciones#
Mealie tiene una API REST completa con documentación en Swagger. Esto lo hace interesante si quieres integrarlo con otras cosas del homelab.
Algunos usos que he visto en la comunidad:
- Importar recetas automáticamente desde un canal de Telegram donde guardas links
- Integrar el menú semanal con Home Assistant para mostrar la cena del día en un display
- Generar un PDF semanal del menú para imprimirlo en la nevera
- Sincronizar la lista de la compra con apps externas como OurGroceries
Yo tengo una automatización sencilla en n8n que cuando comparto una URL de receta en un chat me la importa directamente a Mealie sin tener que abrir la aplicación. Funciona con la API de Mealie y un webhook de n8n. Lo monté en una tarde y ha resultado ser más útil de lo que esperaba.
Comparativa con alternativas#
Paprika es la opción de pago más popular para recetas. Tiene apps nativas para iOS, Android y Mac. La experiencia de usuario es excelente. El problema es que es de pago (unos 30 euros entre todas las plataformas), no es self-hosted y tus datos están en sus servidores. Si te da igual eso, Paprika probablemente sea mejor experiencia en móvil. A mí me importa el self-hosting así que no era opción.
Tandoor es otro gestor de recetas open source similar a Mealie. Tiene una UI algo diferente y algunas funciones que Mealie no tiene, como estadísticas de nutrición más detalladas. También usa PostgreSQL por defecto mientras Mealie permite SQLite. La comunidad es algo más pequeña. He visto gente que prefiere Tandoor por la nutrición, pero para mi uso Mealie gana por la facilidad de setup y la planificación de menú.
RecipeSage tiene un nivel gratuito con self-hosting limitado. No lo he probado a fondo.
Notion o Obsidian son opciones que uso para otras cosas pero para recetas no funcionan tan bien. La importación desde URL no existe de forma nativa. La lista de la compra hay que crearla a mano. El escalado de porciones tampoco. Son herramientas de texto, no gestores de recetas.
Rendimiento y recursos#
Mealie es muy ligero. En mi servidor tiene asignados 256MB de RAM como límite y rara vez pasa de 150MB. El CPU es mínimo salvo cuando hace un scraping de URL, que tarda unos segundos y vuelve a bajar.
Con SQLite no hay ningún servicio de base de datos adicional que mantener. Un contenedor, un volumen, listo.
He tenido Mealie corriendo durante meses sin reinicios ni problemas. Las actualizaciones las hago cambiando el tag de la imagen en el compose y haciendo docker compose pull && docker compose up -d. Hasta ahora no he tenido ninguna migración rota ni pérdida de datos.
Lo que le falta#
Con una instancia pequeña como la mía, Mealie hace lo que necesito y no le pido más. Pero hay cosas que echo en falta.
No tiene aplicación móvil nativa. Funciona desde el navegador del móvil con diseño responsive, que no está mal, pero no es lo mismo que una app. Hay una app no oficial en desarrollo pero no la he probado.
La importación de recetas en español desde webs menos conocidas falla más que con webs en inglés. El scraper está entrenado más con sitios anglosajones. No es un problema grave pero hay que editar recetas manualmente más a menudo cuando la fuente es un blog español pequeño.
Las notificaciones no existen. Si alguien de tu grupo edita o añade recetas, no hay forma de enterarte a menos que entres a mirar. Para un uso familiar esto no importa mucho, pero si usas Mealie en un contexto de más usuarios sería útil.
Cómo está organizado mi Mealie#
Tengo 180 recetas actualmente. Las organizo con categorías (desayunos, comidas, cenas, snacks, repostería) y con etiquetas más específicas (rápido, sin gluten, temporada invierno, para preparar con antelación).
Cada semana dedico diez minutos el domingo a montar el menú de la semana siguiente. Genero la lista de la compra, la repaso y añado lo que falta de despensa. Luego hago la compra con la lista en el móvil. Ha reducido bastante los olvidos en el supermercado y las dudas de “¿qué comemos mañana?”.
No suena revolucionario. Pero es uno de esos servicios pequeños del homelab que tienen un impacto cotidiano real que no esperaba cuando lo monté.
Para empezar#
Si quieres probarlo, el proceso es sencillo:
- Copia el docker-compose de antes, ajusta el puerto y la URL base
- Levanta el contenedor
- Crea el usuario admin en la primera pantalla
- Importa cinco recetas desde URLs que uses habitualmente
- Monta el menú de una semana y genera la lista de la compra
Ese proceso te llevará menos de una hora. Si después de probarlo una semana no lo usas, el contenedor ocupa poco y lo puedes tirar sin pena.
Si acabas usándolo, actualiza la URL base en el compose y ponle HTTPS con tu reverse proxy. Merece la pena tenerlo accesible desde fuera de casa para poder añadir recetas cuando las ves en el móvil.
El proyecto tiene buen ritmo de actualizaciones y la comunidad en Discord es activa. No es el proyecto más famoso del self-hosting pero hace lo que promete y lo hace bien.