bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de Mealie

calendar_month Sep 05, 2026 schedule 21 min de lectura visibility 13 vistas
Установка Mealie на VPS: организация и управление вашей коллекцией рецептов
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

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é

Diagrama: Qué configuramos y por qué
Diagrama: 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

Diagrama: Qué configuración de VPS se necesita para esta tarea
Diagrama: 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

Diagrama: Preparación del servidor
Diagrama: 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

Diagrama: Instalación de software — paso a paso
Diagrama: 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.
  • PUID y PGID: ID de usuario y grupo bajo los cuales se ejecutarán los contenedores. Esto asegura los permisos de archivo correctos. Puede obtenerlos con el comando id $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 usa sqlite, 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 en docker-compose.yml. Para simplificar, dejaremos sqlite.
  • SECRET_KEY: Genere una clave larga y aleatoria. Por ejemplo, puede usar openssl 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/media si 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.

Configuración

Diagrama: Configuración
Diagrama: Configuración

Después de iniciar Mealie con éxito usando Docker Compose, el siguiente paso será configurar el acceso seguro a través de HTTPS utilizando su nombre de dominio. Usaremos Caddy, un servidor web moderno que obtiene y renueva automáticamente los certificados SSL/TLS de Let's Encrypt.

1. Configuración de DNS

Antes de configurar Caddy, asegúrese de que su dominio o subdominio (por ejemplo, recipes.yourdomain.com) apunte a la dirección IP de su VPS. Para ello, cree o modifique un registro A en la configuración DNS de su registrador de dominios:

Tipo de registroNombreValorTTL
Arecipes (o @ si Mealie estará en el dominio principal)YOUR_VPS_IP_ADDRESSAutomatic / 3600

Espere un tiempo hasta que los cambios de DNS surtan efecto (esto puede tardar desde unos minutos hasta varias horas).

2. Instalación de Caddy

Ejecutaremos Caddy como un contenedor Docker separado para que pueda servir como proxy inverso para Mealie.

Cree un directorio para la configuración de Caddy:


mkdir -p ~/caddy/data ~/caddy/config # Creamos directorios para los datos y la configuración de Caddy
    

Cree el archivo Caddyfile en el directorio ~/caddy:


nano ~/caddy/Caddyfile # Abrimos el archivo Caddyfile para editar
    

Pegue la siguiente configuración, reemplazando recipes.yourdomain.com con su dominio:


recipes.yourdomain.com {
    # Habilitamos la compresión gzip para acelerar la carga
    encode gzip

    # Establecemos los encabezados de seguridad
    header {
        Strict-Transport-Security max-age=31536000;
        X-Frame-Options DENY
        X-Content-Type-Options nosniff
        X-XSS-Protection "1; mode=block"
        Referrer-Policy strict-origin-when-cross-origin
    }

    # Hacemos proxy de todas las solicitudes al contenedor Docker de Mealie
    reverse_proxy mealie:9000 {
        # Añadimos encabezados para el correcto funcionamiento de WebSocket y HTTP/2
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Habilitamos el registro (opcional)
    log {
        output file /var/log/caddy/access.log
    }
}
    

Guarde el archivo (Ctrl+O, Enter) y salga (Ctrl+X).

3. Adición de Caddy a Docker Compose

Ahora editaremos el archivo docker-compose.yml para añadir el servicio Caddy. Ábralo:


nano ~/mealie/docker-compose.yml # Abrimos docker-compose.yml
    

Añada el siguiente bloque caddy al final del archivo, con el mismo nivel de sangría que mealie:


  caddy:
    image: caddy:2.7.6-alpine # Versión actual de Caddy para 2026
    restart: unless-stopped
    ports:
      - "80:80" # HTTP para Let's Encrypt
      - "443:443" # HTTPS
    volumes:
      - ~/caddy/Caddyfile:/etc/caddy/Caddyfile # Montamos nuestro Caddyfile
      - ~/caddy/data:/data # Para certificados Let's Encrypt
      - ~/caddy/config:/config # Para la configuración de Caddy
      - ~/caddy/logs:/var/log/caddy # Para los logs de Caddy
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
    networks:
      - default # Conectamos a la misma red que Mealie
    depends_on:
      - mealie # Caddy debe iniciarse después de Mealie
    

Asegúrese de que mealie y caddy estén en la misma red Docker (por defecto, es la red creada por Docker Compose, nombrada según el directorio, por ejemplo, mealie_default). En este caso, networks: - default es suficiente.

Guarde los cambios en docker-compose.yml.

4. Inicio de Caddy y actualización de Mealie

Reinicie Docker Compose para que Caddy se inicie y Mealie se reconecte a la nueva configuración:


cd ~/mealie # Asegúrese de estar en el directorio con docker-compose.yml
docker compose down # Detenemos todos los contenedores actuales
docker compose up -d # Iniciamos todos los contenedores (Mealie y Caddy)
    

Caddy solicitará e instalará automáticamente un certificado SSL/TLS para su dominio. Esto puede tardar unos segundos.

5. Verificación del funcionamiento

Abra su dominio (por ejemplo, https://recipes.yourdomain.com) en un navegador web. Debería ver la página de inicio de sesión de Mealie con una conexión HTTPS activa.

También puede verificar la disponibilidad usando curl:


curl -v https://recipes.yourdomain.com # Verificamos la disponibilidad y el certificado
    

En la salida, debería ver información sobre el certificado de Let's Encrypt y un código de respuesta HTTP 200 OK.

Primer inicio de sesión en Mealie: Al iniciar sesión por primera vez, Mealie le pedirá que cree una cuenta de administrador. Rellene el formulario y obtendrá acceso al panel de control.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son cruciales para cualquier servicio autoalojado. Esto garantiza la seguridad de sus datos y el funcionamiento estable de Mealie.

1. Qué respaldar

Para Mealie, los componentes principales que deben respaldarse son:

  • Base de datos: Si utiliza SQLite (por defecto), es el archivo mealie.db. Si es PostgreSQL, es un volcado de la base de datos. Este archivo o volcado contiene todas sus recetas, categorías, usuarios y otra información estructurada.
  • Archivos multimedia: Las imágenes cargadas, como las fotos de platos, se almacenan en un directorio separado. Asegúrese de respaldar este directorio por completo.
  • Archivos de configuración: Los archivos .env y docker-compose.yml. Contienen configuraciones importantes y secretos necesarios para restaurar el servicio.
  • Configuración de Caddy: El archivo Caddyfile y los directorios data/config (para certificados Let's Encrypt).

2. Script simple de copia de seguridad automática

Crearemos un script simple que realizará copias de seguridad de la base de datos SQLite y los archivos multimedia, así como de los archivos de configuración. Luego configuraremos su ejecución a través de cron.

Cree un directorio para las copias de seguridad en el VPS:


mkdir -p ~/backups/mealie # Creamos el directorio para las copias de seguridad de Mealie
    

Cree el archivo de script backup_mealie.sh:


nano ~/backup_mealie.sh # Creamos el script de copia de seguridad
    

Pegue el siguiente contenido:


#!/bin/bash

# Rutas a los directorios
MEALIE_DIR="/home/$USER/mealie"
CADDY_DIR="/home/$USER/caddy"
BACKUP_DIR="/home/$USER/backups/mealie"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="$BACKUP_DIR/mealie_backup_$TIMESTAMP.tar.gz"

echo "Starting Mealie backup at $TIMESTAMP..."

# 1. Detenemos Mealie para asegurar la integridad de la BD (si se usa SQLite)
# Para Mealie 2.x con SQLite, normalmente se puede prescindir de la detención, pero para garantizarlo se puede detener.
# Si usa PostgreSQL, es mejor hacer un volcado a través de pg_dump sin detener Mealie.
# docker compose -f $MEALIE_DIR/docker-compose.yml stop mealie # Opcional: detenemos el servicio mealie

# 2. Copiamos el archivo de la base de datos SQLite
# Ruta al archivo mealie.db dentro del contenedor, si no está en un volumen separado
# Si mealie.db está en un volumen montado, estará disponible en el host.
# En nuestro docker-compose.yml, Mealie 2.x usa el volumen nombrado 'mealie_data'.
# Para obtener la ruta al archivo en el host, debe encontrar la ruta a este volumen.
# Lo más fácil es hacer un volcado desde el contenedor o copiar el archivo si el volumen está disponible.

# Obtenemos la ruta al volumen mealie_data en el host
MEALIE_VOLUME_PATH=$(docker volume inspect mealie_mealie_data --format '{{ .Mountpoint }}')

if [ -z "$MEALIE_VOLUME_PATH" ]; then
    echo "Error: Could not find mealie_data volume mountpoint. Exiting."
    exit 1
fi

echo "Backing up Mealie data from $MEALIE_VOLUME_PATH..."

# Creamos un directorio temporal para recopilar archivos
TEMP_BACKUP_DIR=$(mktemp -d)

# Copiamos la base de datos (si es SQLite)
cp "$MEALIE_VOLUME_PATH/mealie.db" "$TEMP_BACKUP_DIR/mealie.db"
echo "Copied mealie.db"

# Copiamos los archivos multimedia
cp -R "$MEALIE_VOLUME_PATH/media" "$TEMP_BACKUP_DIR/media"
echo "Copied media files"

# Copiamos los archivos de configuración de Mealie
cp "$MEALIE_DIR/.env" "$TEMP_BACKUP_DIR/mealie_env"
cp "$MEALIE_DIR/docker-compose.yml" "$TEMP_BACKUP_DIR/mealie_docker-compose.yml"
echo "Copied Mealie config files"

# Copiamos los archivos de configuración de Caddy
cp "$CADDY_DIR/Caddyfile" "$TEMP_BACKUP_DIR/caddy_Caddyfile"
# Datos y configuraciones de Caddy (certificados)
cp -R "$CADDY_DIR/data" "$TEMP_BACKUP_DIR/caddy_data"
cp -R "$CADDY_DIR/config" "$TEMP_BACKUP_DIR/caddy_config"
echo "Copied Caddy config and data"

# 3. Archivamos todo en un solo archivo
tar -czf "$BACKUP_FILE" -C "$TEMP_BACKUP_DIR" . # Archivamos el contenido del directorio temporal
echo "Created backup archive: $BACKUP_FILE"

# 4. Eliminamos el directorio temporal
rm -rf "$TEMP_BACKUP_DIR"
echo "Cleaned up temporary directory."

# 5. Iniciamos Mealie de nuevo (si lo detuvimos)
# docker compose -f $MEALIE_DIR/docker-compose.yml start mealie # Opcional: iniciamos el servicio mealie

# 6. Eliminamos copias de seguridad antiguas (por ejemplo, de más de 7 días)
find "$BACKUP_DIR" -type f -name 'mealie_backup_*.tar.gz' -mtime +7 -delete # Eliminamos copias de seguridad de más de 7 días
echo "Removed old backups."

echo "Mealie backup completed."
    

Haga que el script sea ejecutable:


chmod +x ~/backup_mealie.sh # Hacemos el script ejecutable
    

3. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que el servicio principal no es seguro. En caso de fallo del VPS, perderá tanto los datos como las copias de seguridad. Se recomienda utilizar una de las siguientes soluciones:

  • Almacenamiento externo compatible con S3: Por ejemplo, Amazon S3, DigitalOcean Spaces, Backblaze B2. Para esto, puede usar utilidades como rclone o s3cmd en su script.
  • VPS separado: Puede configurar un segundo VPS más económico y sincronizar las copias de seguridad allí usando rsync a través de SSH.
  • Almacenamiento local: Si tiene un NAS u otro servidor en casa, puede configurar rsync para copiar las copias de seguridad allí.

Por ejemplo, si desea copiar las copias de seguridad a otro servidor a través de SSH, agregue lo siguiente al script después de crear el archivo:


# Copia de seguridad a un servidor remoto
REMOTE_USER="backupuser"
REMOTE_HOST="your_backup_vps_ip"
REMOTE_PATH="/path/to/remote/mealie_backups"

rsync -avz "$BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" # Copiamos el archivo al servidor remoto
echo "Backup copied to remote server."
    

No olvide configurar las claves SSH para el acceso sin contraseña al servidor remoto.

4. Configuración de Cron para el inicio automático de la copia de seguridad

Abra la tabla Cron para el usuario actual:


crontab -e # Abrimos crontab para el usuario actual
    

Agregue la siguiente línea para que el script se ejecute diariamente a las 03:00 de la madrugada:


0 3 * * * /home/$USER/backup_mealie.sh > /dev/null 2>&1 # Ejecutar el script de copia de seguridad diariamente a las 03:00
    

Guarde y salga. Ahora las copias de seguridad se crearán automáticamente.

5. Actualizaciones: rolling vs ventana de mantenimiento

  • Actualizaciones de Mealie: Dado que Mealie se implementa a través de Docker Compose, las actualizaciones son muy sencillas. Solo necesita obtener las nuevas imágenes y reiniciar los contenedores.
    
    cd ~/mealie
    docker compose pull # Descargamos las nuevas versiones de las imágenes
    docker compose up -d # Recreamos los contenedores con las nuevas imágenes
                
    Se recomienda realizar estas actualizaciones en una "ventana de mantenimiento" cuando la actividad del usuario sea mínima, ya que el servicio estará brevemente no disponible. Verifique el repositorio oficial de Mealie en busca de cambios críticos o procedimientos de migración antes de actualizar.
  • Actualizaciones del sistema: Actualice regularmente el sistema operativo y los paquetes instalados:
    
    sudo apt update && sudo apt upgrade -y # Actualizamos los paquetes del sistema
                
    Esto se puede hacer una vez a la semana o una vez al mes. Después de grandes actualizaciones del kernel o de las bibliotecas del sistema, puede ser necesario reiniciar el servidor (sudo reboot). Planifique estos reinicios también en la ventana de mantenimiento.
  • Actualizaciones de Docker: La actualización de Docker Engine también se realiza a través de apt upgrade. Después de actualizar Docker Engine, se recomienda reiniciar todos los contenedores.

Mantenga un registro de cambios y versiones para todos los componentes, esto ayudará en la resolución de problemas.

Solución de problemas + Preguntas frecuentes

Mealie no se inicia, los contenedores se reinician constantemente. ¿Qué hacer?

Este es un problema común. Primero, verifique los registros del contenedor de Mealie. Vaya al directorio donde se encuentra docker-compose.yml (~/mealie) y ejecute: docker compose logs mealie. Busque errores, como problemas con la base de datos, variables de entorno faltantes, errores del sistema de archivos o permisos incorrectos. Asegúrese de que el archivo .env esté configurado correctamente, especialmente SECRET_KEY y PUID/PGID.

No puedo acceder a Mealie por HTTPS a través del dominio.

Verifique varias cosas: 1) ¿El registro A en el DNS para su dominio está configurado correctamente y apunta a la IP de su VPS? Use dig your.domain.com o herramientas en línea. 2) ¿Caddy está funcionando? Verifique los registros de Caddy: docker compose logs caddy. Busque errores al obtener el certificado Let's Encrypt (por ejemplo, "certificate acquisition failed"). Asegúrese de que los puertos 80 y 443 estén abiertos en UFW (sudo ufw status). Es posible que Caddy no pueda comunicarse con Mealie, verifique el nombre del servicio en Caddyfile (debería ser mealie:9000).

¿Cuál es la configuración mínima de VPS adecuada para Mealie?

Para Mealie, utilizado por una sola persona o una familia pequeña, un VPS con 1 núcleo de CPU, 1 GB de RAM y 20-30 GB de SSD es mínimamente suficiente. Esto será suficiente para el sistema operativo, Docker y Mealie con SQLite. Sin embargo, para un funcionamiento más cómodo y para el futuro, se recomiendan 2 núcleos de CPU, 2 GB de RAM y 50 GB de SSD.

¿Qué elegir: un VPS o un servidor dedicado para esta tarea?

Para Mealie, un VPS es casi siempre suficiente. Los servidores dedicados son excesivos en potencia y costo para una aplicación como esta, a menos que planee atender a un número muy grande de usuarios (cientos o miles, lo cual no es típico para Mealie) o si ya tiene un servidor dedicado para otras tareas de alta carga y desea alojar Mealie en él. Un VPS ofrece mejor flexibilidad y economía para la mayoría de los casos.

¿Cómo actualizar Mealie a una nueva versión?

Para actualizar Mealie, ejecutado a través de Docker Compose, vaya al directorio ~/mealie. Luego ejecute docker compose pull para descargar las nuevas imágenes. Después de eso, ejecute docker compose up -d para recrear los contenedores con las nuevas imágenes. Antes de actualizar, siempre se recomienda revisar la documentación oficial de Mealie en GitHub, ya que puede haber cambios críticos o pasos de migración entre versiones principales.

Olvidé la contraseña de administrador de Mealie. ¿Cómo la restablezco?

En Mealie 2.x, puede restablecer la contraseña de administrador utilizando la utilidad de línea de comandos dentro del contenedor. Primero, encuentre el nombre o ID del contenedor de Mealie en ejecución: docker ps | grep mealie. Luego, ejecute el comando de restablecimiento de contraseña, reemplazando mealie-container-name con el nombre de su contenedor y new_password con la nueva contraseña deseada:


docker exec -it mealie-container-name python src/app/main.py users reset-password admin --new-password new_password
    

Asegúrese de usar el nombre de contenedor y el nombre de usuario correctos (admin por defecto).

¿Cómo cambiar el puerto en el que se ejecuta Mealie dentro de Docker?

Por defecto, Mealie escucha en el puerto 9000. Si necesita cambiar este puerto, puede editar el archivo docker-compose.yml. Busque el servicio mealie y cambie el puerto en el que escucha, ya sea en la sección ports o en la variable de entorno PORT en el archivo .env. Si cambia el puerto interno de Mealie, también deberá actualizar la configuración de Caddy (reverse_proxy mealie:NUEVO_PUERTO) para que apunte al nuevo puerto.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado Mealie con éxito en su VPS, asegurando el acceso seguro a través de HTTPS e implementando una estrategia de copia de seguridad. Ahora tiene una herramienta potente y flexible para gestionar su colección de recetas, completamente bajo su control. Esto no solo organizará sus notas culinarias, sino que también le brindará una valiosa experiencia en la administración de servidores y la implementación de aplicaciones utilizando Docker.

Como próximos pasos, puede considerar:

  • Configuración de monitoreo: Integre su VPS con sistemas de monitoreo, como Prometheus + Grafana, para rastrear el uso de recursos y el rendimiento de Mealie.
  • Optimización del rendimiento: Si su colección de recetas crece significativamente, considere migrar a PostgreSQL para la base de datos, lo que puede mejorar el rendimiento en comparación con SQLite.
  • Integración con otros servicios: Explore las posibilidades de integrar Mealie con otros servicios domésticos, como planificadores de tareas o asistentes inteligentes, para automatizar los procesos culinarios.
  • Refuerzo de la seguridad: Agregue autenticación de dos factores para acceder a Mealie, si está disponible en futuras versiones, o considere configurar una VPN para acceder al VPS.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Instalación de Mealie en VPS: organización y gestión de tu colección de recetas
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.