Your Recipe Collection Deserves Better Than a Notes App
Saving recipes across browser bookmarks, screenshot folders, and dog-eared cookbooks is a system that works until it doesn’t. When you can’t find that pasta recipe you made six months ago, or your handwritten notes are unreadable, the real problem becomes clear: there’s no single place that owns your culinary data. Tandoor is an open-source, self-hosted recipe manager that gives you a proper database for your cooking life – searchable, taggable, and entirely under your control.
Unlike cloud-based recipe apps that lock your data behind an account and may disappear without warning, Tandoor runs on your own hardware. It supports recipe scraping from thousands of websites, nutrition tracking, meal planning, and shopping list generation. The interface is clean enough for daily use, and the backend is built on Django with a PostgreSQL database, meaning your recipes are stored in a real, portable format. Getting it running takes less than an hour with Docker, and the payoff is a private recipe database that nobody can paywalled or shut down.

What You Need Before You Start
Tandoor runs on any machine capable of running Docker – a home server, a Raspberry Pi 4 or later, a spare laptop, or a VPS. You’ll need Docker and Docker Compose installed on your host system. If you’re new to self-hosting containers, the Docker documentation covers installation for Linux, macOS, and Windows clearly enough to get you through it. Beyond that, you’ll want a text editor, terminal access to your server, and a domain or local hostname if you plan to access Tandoor from other devices on your network.
Port availability matters here. Tandoor’s web interface runs on port 8080 by default, but you can map it to any open port on your host. If you’re running other services on the same machine – a Pi-hole instance, for example – check for port conflicts before you begin. A reverse proxy like Nginx Proxy Manager or Caddy is optional but recommended if you want HTTPS access or a clean local domain like recipes.home.
Setting Up Tandoor with Docker Compose
Start by creating a directory for Tandoor’s files. On Linux, something like /opt/tandoor works well. Inside that directory, you’ll create a docker-compose.yml file and an .env file for environment variables. Tandoor’s official GitHub repository includes a ready-made docker-compose.yml template – pulling that directly is the most reliable starting point, since it includes both the application container and the PostgreSQL database container with the correct configuration already wired together.
Open the .env file and set your database credentials. You’ll define POSTGRES_DB, POSTGRES_USER, and POSTGRES_PASSWORD. Choose a strong password here even if this is a local-only setup – good habits around credentials matter. You’ll also set SECRET_KEY, which Django uses for cryptographic signing. Generate a random string of at least 50 characters for this; a password manager or a quick Python one-liner in your terminal can handle that.
With the environment file saved, run docker compose up -d from your Tandoor directory. Docker will pull the required images – the Tandoor application image and the official PostgreSQL image – and start both containers. The first pull takes a few minutes depending on your connection speed. Once both containers report as healthy, navigate to http://your-server-ip:8080 in a browser. You’ll land on the Tandoor setup page, where you create your admin account.
After logging in for the first time, go into the settings panel and configure your space. Tandoor uses a multi-user, multi-space model, which means you can set up separate spaces for different household members if needed, each with their own recipe collections. For a single-user setup, the default space works fine. Set your preferred units, nutrition targets, and language, then you’re ready to start adding recipes.

Importing Recipes and Getting Organized
Tandoor’s recipe scraper is where the real productivity starts. From the recipe list page, click the import button and paste any URL from a major recipe site. Tandoor parses the structured data embedded in most recipe pages and populates fields automatically – title, ingredients, steps, prep time, and serving size. Results vary by site, but for well-structured recipe blogs and major food publications, the import is clean and requires minimal cleanup.
For recipes you have saved as PDFs, images, or plain text, Tandoor supports manual entry and file attachments. You can photograph a recipe card, attach the image to a manual entry, and keep everything in one place. The tagging system is flexible: create tags for cuisine type, dietary restrictions, cooking method, or anything else that fits your workflow. Combined with the search function, tags make retrieval fast even when your database grows into the hundreds of recipes.
Keeping Tandoor Running and Up to Date
Tandoor updates regularly, and keeping your instance current is straightforward with Docker. Pull the latest image by running docker compose pull in your Tandoor directory, then restart with docker compose up -d. The PostgreSQL database persists in a named Docker volume, so your recipes survive container restarts and updates without any extra steps.
Backups are non-negotiable for anything you care about. Tandoor includes a built-in export tool that packages your recipes as JSON, which you can then store off-site or on a NAS. For a more complete backup, you can also snapshot the PostgreSQL volume directly using standard database dump commands. Schedule whichever method fits your existing backup routine – weekly is reasonable for a recipe database, daily if you add recipes frequently.
If you want Tandoor accessible outside your home network, a VPN like Tailscale is the cleanest option – it avoids exposing Tandoor directly to the internet while keeping access available from your phone at the grocery store. Tailscale installs in minutes on both your server and your mobile device, and from that point your Tandoor instance appears on a private network address that only your authorized devices can reach. That combination – self-hosted data, private remote access, no third-party accounts – is exactly the setup that makes Tandoor worth the initial configuration time.

Frequently Asked Questions
What hardware do I need to run Tandoor?
Tandoor runs on any machine that supports Docker, including a Raspberry Pi 4, a home server, or a VPS. A modern Raspberry Pi handles it comfortably for single-user use.
Can Tandoor import recipes from cooking websites automatically?
Yes. Tandoor includes a built-in recipe scraper that parses structured data from thousands of recipe sites, filling in ingredients, steps, and timing automatically.





