Mealie (Recipe Manager) on Ubuntu 24.04

Mealie is a modern, open-source self-hosted recipe manager and meal-planning platform designed to help you organize recipes, plan meals, generate shopping lists, and collaborate with family or teams. It supports recipe imports from popular websites, Markdown editing, nutrition calculations, and multi-user access, making it an excellent alternative to cloud-based cooking apps.

Unlike SaaS recipe platforms, Mealie keeps all your data on your own server. Nothing is shared with third parties, which makes it ideal for privacy-conscious users, families, and home-lab enthusiasts.

Running Mealie on Ubuntu 24.04 LTS (Noble Numbat) provides a secure, modern, and long-term supported base system. Ubuntu 24.04 includes systemd 255, OpenSSL 3, and excellent Docker support, making it a solid choice for deploying Mealie with Docker, PostgreSQL, Nginx, and HTTPS (SSL) in a production-ready setup.


Architecture Overview

LayerComponentRole
OSUbuntu 24.04 LTSStable, long-term supported Linux base
Container RuntimeDocker / Docker ComposeRuns Mealie and supporting services
ApplicationMealie (Python + FastAPI)Recipe management, meal planning, API
DatabasePostgreSQLStores recipes, users, and metadata
Reverse ProxyNginxHTTPS termination, routing, compression
TLSLet’s Encrypt / PKISecure encrypted web access

Mealie’s containerized architecture makes it easy to deploy, upgrade, and back up, even on small VPS instances.


Why Use Mealie?

  • Self-hosted recipe manager – full ownership of your cooking data
  • Recipe importers – save recipes directly from supported websites
  • Meal planning & calendars – plan meals days or weeks ahead
  • Automatic shopping lists – generate lists from meal plans
  • Multi-user support – perfect for families or shared kitchens
  • Nutrition & unit conversions – helpful for diet tracking
  • Clean, modern UI – responsive and mobile-friendly
  • Open-source & actively developed – transparent and extensible

Mealie is designed for users who want organization, automation, and privacy in their kitchen workflow.


Mealie vs Other Recipe Platforms

Feature / CapabilityMealiePaprikaYummlyTandoor
HostingSelf-hostedApp-basedCloud onlySelf-hosted
Meal planning✅ Yes✅ Yes❌ Limited✅ Yes
Shopping lists✅ Yes✅ Yes❌ Limited✅ Yes
Multi-user✅ Yes❌ No❌ No✅ Yes
PrivacyFull controlApp-dependentCloud-basedFull control
CostFree, open-sourcePaid appFree / PaidFree

Mealie strikes an excellent balance between ease of use, collaboration, and self-hosting.


Security & Best Practices on Ubuntu 24.04

  • Run Mealie behind Nginx with HTTPS enabled.
  • Keep Mealie and PostgreSQL restricted to internal Docker networks.
  • Store secrets (DB passwords, JWT secrets) using environment variables.
  • Enable UFW and allow only ports 80 and 443.
  • Automate SSL certificate renewal with Certbot.
  • Regularly update Ubuntu, Docker, and Mealie images.
  • Back up:
    • PostgreSQL database
    • Mealie configuration
    • Uploaded images and assets
  • Create separate user accounts and restrict admin access.
  • Use strong passwords and disable public registration if not needed.

Typical Use Cases

  • Personal recipe collection – replace cloud cooking apps
  • Family meal planning – shared recipes and shopping lists
  • Home labs & self-hosted dashboards – private lifestyle tools
  • Diet & nutrition tracking – structured recipes and portions
  • Content creators – manage and organize recipe libraries
  • Small communities – collaborative cooking platforms

Deploying Mealie on Ubuntu 24.04 with Docker and SSL gives you a secure, private, and feature-rich recipe management platform — combining modern meal planning tools with full data ownership and long-term reliability.


Step 1: Set Up a Server Instance on Shape.Host

Before installing Mealie, you need a server instance.

Log in to your Shape.Host account at https://shape.host.

From the dashboard, click Create → Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Choose a data center location close to your users.

Shape.host instance form with the data center location selector highlighted.

Select a VPS plan with at least:

2 CPU cores

4 GB RAM

30 GB SSD storage

Shape.host instance form with the operating system image selector highlighted.

Choose Ubuntu 24.04 (64-bit) as the operating system.

Create the instance and wait for provisioning to complete.

Shape.host instance form with the Create Instance button highlighted.

Copy the public IP address of the server.

This instance will host Docker, Mealie, PostgreSQL, Nginx, and SSL services.

Shape.host Resources dashboard with the server IP address highlighted.

Step 2: Connect to Your Ubuntu 24.04 Server

Linux / macOS

ssh root@YOUR_SERVER_IP

Windows

Use PowerShell, Windows Terminal, or PuTTY:

ssh root@YOUR_SERVER_IP

After connecting, you should be logged in as root.


Step 3: Install Mealie Using Docker Compose

3.1 Update the System

apt update

Updates the package index.

apt upgrade -y

Upgrades all installed packages to their latest versions.

Terminal showing APT package management commands and output.

3.2 Install Required Dependencies

apt install ca-certificates curl gnupg lsb-release
Terminal showing APT package management commands and output.

Installs packages required to securely add external repositories.

mkdir -p /etc/apt/keyrings

Creates a directory to store trusted repository keys.


3.3 Add Docker Repository

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Downloads and registers Docker’s official GPG key.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Adds the Docker repository for Ubuntu 24.04.

apt update

Refreshes the package list including Docker packages.

Terminal showing APT package management commands and output.

3.4 Install Docker and Docker Compose

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Terminal showing APT package management commands and output.

Installs Docker Engine and Docker Compose plugin.

docker --version

Verifies Docker installation.

docker compose version

Verifies Docker Compose availability.


3.5 Create Mealie Project Directory

mkdir -p /opt/mealie
cd /opt/mealie
Terminal showing the installed Docker Compose version.

3.6 Create Docker Compose Configuration

nano docker-compose.yml

Paste the following content:

services:
  db:
    image: postgres:16
    container_name: mealie-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: mealie
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: strong_db_password
    volumes:
      - /opt/mealie/db:/var/lib/postgresql/data

  mealie:
    image: ghcr.io/mealie-recipes/mealie:latest
    container_name: mealie
    restart: unless-stopped
    ports:
      - "127.0.0.1:9000:9000"
    environment:
      ALLOW_SIGNUP: "false"
      DB_ENGINE: postgres
      POSTGRES_DB: mealie
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: strong_db_password
      POSTGRES_SERVER: db
      POSTGRES_PORT: 5432
      BASE_URL: https://mealie.example.com
    volumes:
      - /opt/mealie/data:/app/data
    depends_on:
      - db

This configuration:

  • Uses PostgreSQL 16 as the database backend
  • Restricts Mealie to localhost access
  • Prepares Mealie for reverse proxy and HTTPS
Terminal showing the GNU nano editor and configuration text.

3.7 Create Persistent Storage Directories

mkdir -p /opt/mealie/db
mkdir -p /opt/mealie/data
Terminal showing file and directory setup commands.

3.8 Start Mealie

docker compose pull

Downloads the latest Mealie and PostgreSQL images.

docker compose up -d

Starts the containers in detached mode.

Terminal showing container image download progress.

Step 4: Configure Nginx Reverse Proxy

4.1 Install and Check Nginx

apt install nginx
Terminal showing APT package management commands and output.
systemctl status nginx
Terminal showing systemd service management commands or output.

4.2 Create Nginx Virtual Host for Mealie

nano /etc/nginx/sites-available/mealie

Paste:

server {
    listen 80;
    server_name mealie.example.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
Terminal showing web server configuration text.

4.3 Enable the Site

ln -s /etc/nginx/sites-available/mealie /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t
systemctl reload nginx
Terminal showing systemd service management commands or output.

Step 5: Enable SSL with Let’s Encrypt

apt install certbot python3-certbot-nginx
Terminal showing APT package management commands and output.
certbot --nginx -d ubuntu-tutorials.shape.host
Terminal showing Certbot certificate commands and messages.

Replace with your actual domain if needed:

yourdomain.com

Certbot will automatically:

  • Issue a free SSL certificate
  • Configure Nginx for HTTPS
  • Enable automatic renewal
Mealie sign-in form with an informational banner.
Mealie welcome screen with an option to create a recipe.

You have successfully installed Mealie on Ubuntu 24.04 using Docker Compose, connected it to a PostgreSQL database, exposed it through Nginx, and secured it with SSL using Let’s Encrypt. This setup is robust, secure, and ideal for personal or family recipe management.

For hosting applications like Mealie with high reliability, full root access, and excellent performance, Shape.Host Linux SSD VPS provides a scalable infrastructure tailored for modern self-hosted services.