Instalación de Mealie en un VPS: organización y gestión de tu colección de recetas
TL;DR
En esta guía detallada, configuraremos paso a paso Mealie —una moderna plataforma self-hosted para la gestión de recetas— en tu servidor privado virtual (VPS). Aprenderás cómo preparar el servidor, instalar Docker, desplegar Mealie usando Docker Compose, configurar acceso seguro vía HTTPS utilizando Caddy e implementar una estrategia de copia de seguridad para que tu colección de recetas esté siempre bajo control.
- Configuraremos Mealie 2.x (versión actual a 2026) en Ubuntu 24.04 LTS.
- Utilizaremos Docker y Docker Compose para un despliegue y gestión sencillos de la aplicación.
- Garantizaremos acceso seguro vía HTTPS con obtención automática de certificados Let's Encrypt usando Caddy.
- Desarrollaremos una estrategia de copia de seguridad de datos de Mealie simple pero efectiva.
- Analizaremos en detalle los requisitos mínimos del VPS y la preparación básica del servidor.
- Proporcionaremos comandos prácticos y ejemplos de archivos de configuración listos para usar.
Qué configuramos y por qué
Mealie es una moderna plataforma self-hosted para la gestión de recetas, diseñada para quienes desean organizar su colección culinaria, planificar comidas y generar listas de compras. Ofrece una interfaz web intuitiva, la capacidad de importar recetas de varios sitios web, así como funciones para compartir y comentar. En un contexto de creciente número de sitios culinarios y fuentes de recetas, Mealie se convierte en una herramienta indispensable para el almacenamiento centralizado y el acceso conveniente a tus platos favoritos.
En resumen, al seguir este tutorial, obtendrás una instancia de Mealie completamente funcional, segura y fácil de mantener, accesible a través de tu propio nombre de dominio desde cualquier dispositivo. Esto te permitirá olvidarte para siempre de los marcadores dispersos, capturas de pantalla y notas de recetas, y simplificará la planificación del menú semanal y las compras.
Existen diferentes enfoques para la gestión de recetas. Puedes utilizar servicios en la nube como Paprika, AnyList o BigOven, que ofrecen comodidad de uso sin necesidad de configurar un servidor. Sin embargo, suelen requerir una suscripción y almacenan tus datos en servidores de terceros, lo que puede generar preocupaciones de privacidad. Las aplicaciones de escritorio o incluso simples archivos de texto son una alternativa.
La elección de una solución self-hosted en un VPS, como Mealie, se justifica por varias ventajas clave. En primer lugar, ofrece control total sobre tus datos y su privacidad. Tú decides dónde y cómo se almacenan tus recetas. En segundo lugar, las soluciones self-hosted a menudo ofrecen mayor flexibilidad en la configuración e integración con otros servicios domésticos. En tercer lugar, es económicamente ventajoso a largo plazo, ya que solo pagas por el VPS y no por una suscripción mensual. Finalmente, para desarrolladores y entusiastas técnicos, es una excelente oportunidad para ampliar sus habilidades en administración de servidores y despliegue de aplicaciones.
Qué configuración de VPS se necesita para esta tarea
Para instalar Mealie en un VPS, los requisitos de recursos son bastante modestos, especialmente si planeas usarlo para fines personales o un equipo pequeño. Mealie puede funcionar con una configuración básica, pero para un funcionamiento cómodo y la posibilidad de escalar, se recomienda tener un pequeño margen.
Requisitos mínimos (para 1-5 usuarios):
- CPU: 1 núcleo (arquitectura x86-64). Los procesadores VPS modernos son lo suficientemente potentes para manejar las solicitudes de Mealie.
- RAM: 1 GB. Esto será suficiente para el sistema operativo, los contenedores Docker de Mealie y Caddy. Si planeas usar PostgreSQL en lugar de SQLite, es posible que necesites un poco más.
- Disco: 20-30 GB SSD. Mealie almacena la base de datos (SQLite por defecto) y las imágenes subidas. Un SSD acelerará significativamente las operaciones de entrada/salida.
- Red: Puerto de 100 Mbps con tráfico ilimitado (o volumen suficiente para tu uso). Mealie no es un servicio de alta carga, por lo que los requisitos de ancho de banda de red son mínimos.
- Sistema operativo: Ubuntu 24.04 LTS (o cualquier otra distribución moderna de Linux).
Plan de VPS recomendado para la tarea (para 5-20 usuarios o con margen):
Para un funcionamiento más cómodo, considerando futuras actualizaciones y la posibilidad de ejecutar servicios adicionales en el mismo VPS, se recomienda la siguiente configuración:
- CPU: 2 núcleos.
- RAM: 2 GB.
- Disco: 50 GB SSD.
- Red: Puerto de 1 Gbps, preferiblemente con tráfico ilimitado.
Un VPS con las características indicadas garantizará un funcionamiento estable de Mealie y te permitirá no preocuparte por la falta de recursos en un futuro cercano. Al elegir un proveedor, presta atención a la posibilidad de escalar recursos de forma flexible.
Cuándo se necesita un servidor dedicado y no un VPS:
Para Mealie, un servidor dedicado no suele ser necesario. Solo tiene sentido considerarlo en casos excepcionales:
- Si planeas atender a cientos o miles de usuarios (lo cual es poco probable para Mealie).
- Si ya utilizas un servidor dedicado para otros servicios de alta carga y quieres alojar Mealie junto a ellos.
- Si tienes requisitos muy específicos de hardware o seguridad que no pueden ser satisfechos en un VPS.
Para la gran mayoría de los usuarios de Mealie, incluso con un uso activo y una gran colección de recetas, un VPS será más que suficiente y económicamente ventajoso.
Ubicación: qué factores influyen
La elección de la ubicación del VPS influye en varios factores:
- Latencia: Cuanto más cerca esté el servidor de tus usuarios principales, menor será la latencia y más rápida la respuesta de la interfaz web de Mealie. Para uso personal, elige una ubicación cercana a ti.
- Legislación: En algunas jurisdicciones puede haber leyes más estrictas sobre el almacenamiento de datos. Asegúrate de que la ubicación elegida cumpla con tus requisitos de privacidad.
- Costo: Los precios de los VPS pueden variar ligeramente según la región.
- Disponibilidad de servicios: Algunos proveedores ofrecen diferentes paquetes de servicios en distintos centros de datos.
Para Mealie, no hay requisitos críticos de ubicación, a menos que planees usarlo en un equipo muy distribuido geográficamente. En la mayoría de los casos, basta con elegir una ubicación que proporcione el mejor ping para ti y tus usuarios principales.
Preparación del servidor
Una vez que hayas alquilado un VPS y obtenido acceso, es necesario realizar una configuración básica para mejorar la seguridad y la comodidad del trabajo futuro. Asumiremos que estás utilizando Ubuntu 24.04 LTS (Lunar Lobster), que será relevante y compatible hasta 2029.
1. Conexión al servidor por SSH
Utiliza un cliente SSH para conectarte a tu servidor. Reemplaza your_username por el nombre de usuario proporcionado por el proveedor (a menudo root o ubuntu) y your_vps_ip por la dirección IP de tu VPS.
ssh your_username@your_vps_ip
2. Actualización del sistema
Lo primero es siempre actualizar los paquetes a las versiones más recientes.
sudo apt update && sudo apt upgrade -y # Actualizamos la lista de paquetes e instalamos las actualizaciones disponibles
3. Creación de un nuevo usuario con permisos sudo (si trabajas como root)
Trabajar con la cuenta root no es seguro. Crea un nuevo usuario y otórgale permisos sudo.
sudo adduser newuser # Creamos un nuevo usuario
sudo usermod -aG sudo newuser # Añadimos el usuario al grupo sudo
Luego, sal de la sesión actual de root e inicia sesión con el nuevo usuario.
exit # Salimos de la sesión de root
ssh newuser@your_vps_ip # Iniciamos sesión con el nuevo usuario
4. Configuración de claves SSH (recomendado)
Para mejorar la seguridad y la comodidad, se recomienda usar claves SSH en lugar de contraseñas. Si aún no tienes un par de claves, genéralas en tu máquina local:
ssh-keygen -t rsa -b 4096 # Generamos una nueva clave SSH en la máquina local
Luego, copia la clave pública a tu VPS:
ssh-copy-id newuser@your_vps_ip # Copiamos la clave pública al servidor
Después de configurar correctamente las claves SSH, puedes deshabilitar la autenticación por contraseña en el archivo /etc/ssh/sshd_config para mejorar la seguridad. Busca las líneas PasswordAuthentication yes y PermitRootLogin yes y cámbialas a no.
sudo nano /etc/ssh/sshd_config # Abrimos el archivo de configuración del servidor SSH
Cambia:
#PasswordAuthentication yes
PasswordAuthentication no
#PermitRootLogin yes
PermitRootLogin no
Guarda el archivo (Ctrl+O, Enter) y sal (Ctrl+X). Luego, reinicia el servicio SSH:
sudo systemctl restart sshd # Reiniciamos el servicio SSH para aplicar los cambios
Importante: ¡Asegúrate de poder iniciar sesión con la clave SSH antes de deshabilitar la autenticación por contraseña!
5. Configuración del firewall (UFW)
UFW (Uncomplicated Firewall) es una herramienta conveniente para configurar reglas de firewall. Permite el tráfico SSH y HTTP/HTTPS.
sudo ufw allow ssh # Permitimos el tráfico SSH (puerto 22)
sudo ufw allow http # Permitimos el tráfico HTTP (puerto 80)
sudo ufw allow https # Permitimos el tráfico HTTPS (puerto 443)
sudo ufw enable # Habilitamos el firewall
sudo ufw status # Verificamos el estado del firewall
6. Instalación de Fail2Ban
Fail2Ban ayuda a proteger contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se realizan intentos fallidos de inicio de sesión.
sudo apt install fail2ban -y # Instalamos Fail2Ban
sudo systemctl enable fail2ban # Habilitamos el inicio automático de Fail2Ban al arrancar el sistema
sudo systemctl start fail2ban # Iniciamos el servicio Fail2Ban
Fail2Ban protege SSH por defecto. Se pueden realizar configuraciones adicionales en los archivos /etc/fail2ban/jail.conf o, preferiblemente, en /etc/fail2ban/jail.local.
Ahora tu servidor está listo para la instalación de Mealie.
Instalación de software — paso a paso
Mealie se implementa mejor utilizando Docker y Docker Compose, lo que proporciona aislamiento de la aplicación, simplifica la gestión de dependencias y facilita las actualizaciones. Utilizaremos las versiones actuales de Docker Engine y Docker Compose, con miras al año 2026.
1. Instalación de Docker Engine
Eliminaremos las versiones antiguas de Docker, si las hay:
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done # Eliminamos todos los paquetes antiguos de Docker
Instalaremos los paquetes necesarios para instalar Docker a través de HTTPS:
sudo apt update # Actualizamos la lista de paquetes
sudo apt install ca-certificates curl gnupg -y # Instalamos las utilidades necesarias
Añadiremos la clave GPG oficial de Docker:
sudo install -m 0755 -d /etc/apt/keyrings # Creamos el directorio para las claves GPG
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Descargamos y guardamos la clave GPG de Docker
sudo chmod a+r /etc/apt/keyrings/docker.gpg # Establecemos los permisos de acceso a la clave
Añadiremos el repositorio de Docker a las fuentes de APT:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Añadimos el repositorio de Docker
Instalaremos Docker Engine (versión 25.x o posterior, actual para 2026):
sudo apt update # Actualizamos la lista de paquetes teniendo en cuenta el nuevo repositorio
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y # Instalamos Docker Engine y los plugins
Añadiremos su usuario al grupo docker para no tener que usar sudo para cada comando de Docker:
sudo usermod -aG docker $USER # Añadimos el usuario actual al grupo docker
newgrp docker # Aplicamos los cambios para la sesión actual (o reconéctese por SSH)
Verificaremos la instalación de Docker:
docker run hello-world # Ejecutamos un contenedor de prueba para verificar la instalación de Docker
Si ve el mensaje "Hello from Docker!", significa que Docker se ha instalado correctamente.
2. Preparación del directorio para Mealie
Crearemos un directorio donde se almacenarán los archivos de configuración de Mealie y Docker Compose:
mkdir -p ~/mealie # Creamos el directorio para Mealie en la carpeta de inicio del usuario
cd ~/mealie # Nos movemos al directorio creado
3. Descarga de la configuración de Docker Compose para Mealie
Mealie proporciona archivos oficiales de Docker Compose. Los descargaremos directamente.
Para 2026, Mealie está en desarrollo activo, y utilizaremos la versión actual 2.x, que ofrece una arquitectura y funciones mejoradas. Si desea utilizar una versión anterior, consulte la documentación de Mealie.
curl -o docker-compose.yml https://raw.githubusercontent.com/mealie-recipes/mealie/v2.0/docker-compose.yml # Descargamos el docker-compose.yml actual para Mealie 2.x
curl -o .env-example https://raw.githubusercontent.com/mealie-recipes/mealie/v2.0/.env-example # Descargamos el archivo .env de ejemplo
cp .env-example .env # Copiamos el ejemplo al archivo .env actual
4. Configuración del archivo .env
El archivo .env contiene variables de entorno para Mealie y Docker Compose. Ábralo para editar:
nano .env # Abrimos el archivo .env para editar
Debe configurar los siguientes parámetros:
TZ: Establezca su zona horaria, por ejemplo,Europe/Moscow.PUIDyPGID: ID de usuario y grupo bajo los cuales se ejecutarán los contenedores. Esto asegura los permisos de archivo correctos. Puede obtenerlos con el comandoid $USER.APP_HOST: Establezca la dirección IP de su servidor o el nombre de dominio si ya ha configurado el DNS.DB_TYPE: Por defecto se usasqlite, lo cual es adecuado para la mayoría de las instalaciones pequeñas. Si necesita una base de datos más potente (por ejemplo, PostgreSQL), cambie este parámetro y configure el servicio correspondiente endocker-compose.yml. Para simplificar, dejaremossqlite.SECRET_KEY: Genere una clave larga y aleatoria. Por ejemplo, puede usaropenssl rand -hex 32.MEDIA_LOCATION: Directorio para almacenar archivos multimedia. Por defecto es/app/data/media, pero se puede cambiar a algo como/var/lib/mealie/mediasi desea mover los datos fuera del contenedor. En este caso, utilizaremos el montaje de volúmenes de Docker, por lo que la ruta dentro del contenedor permanecerá por defecto.
Ejemplo de una parte del archivo .env después de la edición:
TZ=Europe/Moscow
PUID=1000 # Reemplace con su PUID
PGID=1000 # Reemplace con su PGID
APP_HOST=your.domain.com # Reemplace con su dominio o IP
PORT=9000
DB_TYPE=sqlite
SECRET_KEY=SU_CLAVE_SECRETA_ALEATORIA_DE_64_CARACTERES
MEDIA_LOCATION=/app/data/media
Puede generar SECRET_KEY directamente en el servidor:
openssl rand -hex 32 # Genera una clave hexadecimal de 64 caracteres
Copie la clave generada e insértela en el archivo .env.
5. Inicio de Mealie con Docker Compose
Después de configurar el archivo .env, puede iniciar Mealie:
docker compose up -d # Iniciamos los contenedores de Mealie en segundo plano
Esto descargará las imágenes Docker necesarias e iniciará Mealie. El proceso puede tardar varios minutos la primera vez que se ejecuta.
6. Verificación del estado de los contenedores
Asegúrese de que todos los contenedores estén en ejecución y funcionando:
docker compose ps # Verificamos el estado de los contenedores en ejecución
Debería ver los contenedores de Mealie en estado "running".
Ahora Mealie está en funcionamiento y accesible en el puerto 9000 de su VPS (http://your_vps_ip:9000). Sin embargo, por ahora solo es accesible a través de HTTP y no tiene un nombre de dominio atractivo. En la siguiente sección, configuraremos HTTPS y el dominio.