Back to articles
Technology Insight

Self-Hosting a Recipe and Meal Planning Application with Tandoor Recipes on a Home Docker VPS

June 2, 2026

Introduction: The Digital Culinary Revolution

In an era dominated by proprietary cloud applications and subscription-based software-as-a-service (SaaS) models, data sovereignty has become a crucial consideration for technology enthusiasts and professionals alike. Our recipes, meal plans, and dietary histories represent valuable personal data. Relying on third-party platforms exposes households to risks such as sudden service discontinuations, unexpected price hikes, and privacy breaches. This is where Tandoor Recipes (formerly known as RecipeSage) enters the picture as a powerful, open-source, and self-hosted solution.

Deploying Tandoor Recipes on a home Virtual Private Server (VPS) or dedicated home server using Docker provides a robust alternative to commercial applications. This comprehensive guide will walk you through the technical process of setting up, configuring, and maintaining your own enterprise-grade recipe and meal planning ecosystem, ensuring your family's culinary archive remains secure, private, and permanently accessible.


Why Choose Tandoor Recipes and Self-Hosting?

Before diving into the technical deployment, it is vital to understand the architectural benefits of Tandoor Recipes. Unlike simple markdown files or basic note-taking applications, Tandoor Recipes is a microservice-driven platform designed specifically for culinary management. Key advantages include:

  • Automated Recipe Parsing: Utilizing advanced scraping algorithms, the application can extract ingredients, instructions, and metadata from almost any culinary website with a single URL.
  • Advanced Meal Planning: An intuitive calendar interface allows users to plan meals days or weeks in advance, automatically aggregating required ingredients into dynamic shopping lists.
  • Inventory Management: Track your current pantry stock to minimize food waste and optimize grocery expenditures.
  • Granular Multi-User Management: Create distinct accounts for family members with specific read, write, or administrative permissions.
Self-hosting this infrastructure on a localized Docker VPS combines the flexibility of cloud computing with the security and cost-efficiency of local hardware.

Prerequisites and System Architecture

To ensure optimal performance and high availability, your home infrastructure should meet the following minimum hardware and software specifications:

1. Hardware Requirements

  • CPU: Dual-core processor (x86_64 or ARM64 architecture, such as a Raspberry Pi 4/5 or an Intel NUC).
  • RAM: Minimum 2 GB of available system memory (RAM).
  • Storage: 10 GB of solid-state drive (SSD) storage for the application binaries, database, and uploaded media assets.

2. Software Pre-requisites

  • A Linux-based operating system (Ubuntu Server 22.04 LTS or Debian 12 recommended).
  • Docker Engine (v20.10 or higher) and Docker Compose (v2.0 or higher) installed and configured.
  • A registered domain name or local DNS setup (e.g., Pi-hole) if you wish to route traffic via an internal Fully Qualified Domain Name (FQDN).

Step-by-Step Deployment Guide via Docker Compose

The most efficient and maintainable method for deploying Tandoor Recipes is utilizing a multi-container Docker Compose structure. This isolates the web application, the database, and the reverse proxy into distinct, secure network zones.

Step 1: Preparing the Directory Structure

First, access your home server via SSH and execute the following commands to create the necessary directories for persistent storage:

mkdir -p ~/tandoor/nginx
mkdir -p ~/tandoor/postgresql
mkdir -p ~/tandoor/staticfiles
mkdir -p ~/tandoor/mediafiles
cd ~/tandoor

Step 2: Configuring the Environment Variables

Create an environment file named .env to store sensitive cryptographic keys, database credentials, and localization settings. Ensure you modify the placeholder values with secure, randomized strings.

SECRET_KEY=super_secret_random_string_here
DB_ENGINE=django.db.backends.postgresql
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_USER=tandoor_user
POSTGRES_PASSWORD=secure_database_password_here
POSTGRES_DB=tandoor_db

TIME_ZONE=Asia/Ho_Chi_Minh
LANGUAGE=en-us
DEBUG=0

Step 3: Creating the Docker Compose Manifest

Now, create a file named docker-compose.yml. This file defines the microservices, networks, and storage volumes required for Tandoor Recipes to operate smoothly.

version: '3.8'

services:
  db:
    image: postgres:15-alpine
    container_name: tandoor_db
    volumes:
      - ./postgresql:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    restart: always
    networks:
      - tandoor_net

  web:
    image: vabene1111/recipes:latest
    container_name: tandoor_web
    env_file:
      - .env
    volumes:
      - ./staticfiles:/opt/recipes/staticfiles
      - ./mediafiles:/opt/recipes/mediafiles
    depends_on:
      - db
    restart: always
    networks:
      - tandoor_net

  nginx:
    image: nginx:alpine
    container_name: tandoor_nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./staticfiles:/opt/recipes/staticfiles
      - ./mediafiles:/opt/recipes/mediafiles
    depends_on:
      - web
    restart: always
    networks:
      - tandoor_net

networks:
  tandoor_net:
    driver: bridge

Step 4: Nginx Configuration and Service Initialization

Before launching the containers, you must supply Nginx with a configuration file to properly proxy incoming HTTP requests to the Django backend while serving static media directly from the disk. Download the official template configuration from the Tandoor repository and place it into your ./nginx directory, mapping the correct ports.

Once completed, initialize the infrastructure by executing the following command:

docker compose up -d

Verify that all containers are operational by checking the process logs: docker compose ps. You can now access the application interface by navigating to http://[YOUR_SERVER_IP]:8080 in your preferred web browser.


Post-Deployment Optimization and Best Practices

Deploying the software is merely the first phase; establishing proper operations management guarantees long-term system reliability.

1. Implementing Automated Backups

Your recipes and configurations are invaluable. Implement a cron job that executes a daily backup of your PostgreSQL database and media assets. A simple shell script executing pg_dump inside the database container, followed by a compressed archive of the mediafiles directory, should be backed up to an offsite location or local Network Attached Storage (NAS).

2. Secure Remote Access

To access your recipe database securely while away from home (e.g., at the grocery store), do not expose port 8080 directly to the internet. Instead, utilize a secure reverse proxy such as Nginx Proxy Manager or Traefik coupled with Let's Encrypt TLS certificates. Alternatively, route your traffic through an encrypted overlay network such as WireGuard or Tailscale for authenticated local access.


Conclusion

By leveraging Docker and a home VPS, you have successfully decoupled your personal culinary data from external corporations. Tandoor Recipes provides a streamlined, professional-grade solution to meal planning, grocery optimization, and recipe preservation. As your system matures, you can explore advanced integrations, such as connecting your shopping lists to local supermarket APIs or setting up smart-home display integrations for hands-free kitchen viewing.

Self-Hosting a Recipe and Meal Planning Application with Tandoor Recipes on a Home Docker VPS | DPTCloud