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
| Layer | Component | Role |
|---|---|---|
| OS | Ubuntu 24.04 LTS | Stable, long-term supported Linux base |
| Container Runtime | Docker / Docker Compose | Runs Mealie and supporting services |
| Application | Mealie (Python + FastAPI) | Recipe management, meal planning, API |
| Database | PostgreSQL | Stores recipes, users, and metadata |
| Reverse Proxy | Nginx | HTTPS termination, routing, compression |
| TLS | Let’s Encrypt / PKI | Secure 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 / Capability | Mealie | Paprika | Yummly | Tandoor |
|---|---|---|---|---|
| Hosting | Self-hosted | App-based | Cloud only | Self-hosted |
| Meal planning | ✅ Yes | ✅ Yes | ❌ Limited | ✅ Yes |
| Shopping lists | ✅ Yes | ✅ Yes | ❌ Limited | ✅ Yes |
| Multi-user | ✅ Yes | ❌ No | ❌ No | ✅ Yes |
| Privacy | Full control | App-dependent | Cloud-based | Full control |
| Cost | Free, open-source | Paid app | Free / Paid | Free |
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.

Choose a data center location close to your users.

Select a VPS plan with at least:
2 CPU cores
4 GB RAM
30 GB SSD storage

Choose Ubuntu 24.04 (64-bit) as the operating system.
Create the instance and wait for provisioning to complete.

Copy the public IP address of the server.
This instance will host Docker, Mealie, PostgreSQL, Nginx, and SSL services.

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.

3.2 Install Required Dependencies
apt install ca-certificates curl gnupg lsb-release

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.

3.4 Install Docker and Docker Compose
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

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

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

3.7 Create Persistent Storage Directories
mkdir -p /opt/mealie/db
mkdir -p /opt/mealie/data

3.8 Start Mealie
docker compose pull
Downloads the latest Mealie and PostgreSQL images.
docker compose up -d
Starts the containers in detached mode.

Step 4: Configure Nginx Reverse Proxy
4.1 Install and Check Nginx
apt install nginx

systemctl status nginx

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;
}
}

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

Step 5: Enable SSL with Let’s Encrypt
apt install certbot python3-certbot-nginx

certbot --nginx -d ubuntu-tutorials.shape.host

Replace with your actual domain if needed:
yourdomain.com
Certbot will automatically:
- Issue a free SSL certificate
- Configure Nginx for HTTPS
- Enable automatic renewal


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.