Your Recipes, Your Server
Most recipe apps come with a catch – your data lives on someone else’s servers, features get paywalled, and the service can disappear without warning. Tandoor flips that model entirely. It is an open-source, self-hosted recipe manager that gives you full control over your cookbook, your meal plans, and your shopping lists, all running on hardware you own.

What Tandoor Actually Does
Tandoor is built around the idea that a recipe manager should work like a real kitchen – organized, practical, and built for how people actually cook. At its core, it stores recipes with ingredients, instructions, nutritional data, and photos. But the feature set goes further than a basic database. It supports meal planning across a calendar view, auto-generated shopping lists grouped by category, and a recipe importer that can pull structured data from most major cooking websites.
The interface runs entirely in the browser, which means you can access it from any device on your network – or expose it externally through a reverse proxy if you want to reach it while traveling. Tandoor also supports multiple users and households, so one instance can serve an entire family without everyone sharing a single account. Permissions are granular enough that you can give some users read-only access while others can add and edit recipes freely.
One underrated feature is the ingredient and unit normalization system. Tandoor maintains a database of foods and lets you define custom units, aliases, and conversions. When a recipe calls for “1 can of chickpeas” and another calls for “400g chickpeas,” Tandoor can treat them as the same item in a shopping list. For anyone who has tried cooking from a messy collection of clipped recipes and handwritten notes, that kind of logic is genuinely useful.
Tandoor also supports a “books” concept, which lets you organize recipes into curated collections – think thematic groupings like weeknight dinners, holiday baking, or cuisine by region. These books can be shared publicly or kept private, which makes the platform workable as a lightweight recipe-sharing tool within a small community or friend group, not just a personal archive.

Setting Up Tandoor with Docker
The fastest and most stable way to run Tandoor is through Docker Compose. The official repository provides a ready-made Compose file that spins up the application alongside a PostgreSQL database and an nginx proxy. Before starting, make sure Docker and Docker Compose are installed on your server or home machine. A Linux host is ideal, but Tandoor will run on Windows or macOS with Docker Desktop as well.
Start by cloning the official repository or downloading the Compose file directly from the Tandoor GitHub page. The repository includes a .env template file. Copy that file to .env and open it for editing. You will need to set a few required values: SECRET_KEY should be a long random string – you can generate one with Python by running python3 -c "import secrets; print(secrets.token_hex(50))" in your terminal. Set POSTGRES_PASSWORD to a strong password of your choice. The ALLOWED_HOSTS variable should be set to your server’s local IP address, hostname, or domain name if you plan to access Tandoor from outside your home network.
Once the environment file is configured, run docker compose up -d from the directory containing the Compose file. Docker will pull the required images and start the containers. The first launch takes a minute or two as the database initializes. After that, Tandoor should be accessible at http://localhost:8080 or whichever port your Compose file maps to the host. On the first visit, you will be prompted to create a superuser account – use a strong password here, since this account has full administrative access to the instance.
To access Tandoor from other devices on your local network, replace localhost with your server’s local IP address. If you want to reach it from anywhere, you will need to set up a reverse proxy such as nginx or Caddy, point a domain at your server, and configure HTTPS. Caddy is the simpler option for most self-hosters because it handles SSL certificate provisioning automatically through Let’s Encrypt. A basic Caddyfile for Tandoor only needs your domain and a proxy directive pointing to port 8080.
For data persistence, check that the Compose file is mapping the mediafiles and staticfiles volumes to local directories on your host. Without that mapping, recipe photos and other uploads will be lost if the container is recreated. Regular database backups are worth setting up too – a simple cron job that runs docker exec against the PostgreSQL container and dumps the database to a dated file will protect your recipe collection if something goes wrong. Tandoor does not include built-in backup tooling, so this step is entirely manual.
Importing Recipes and Day-to-Day Use
Once Tandoor is running, the recipe importer is the fastest way to start building your library. Paste a URL from a supported cooking site into the import field and Tandoor will parse the page’s structured data and pre-fill the recipe form with ingredients, steps, and sometimes even nutritional info. Not every site uses clean structured data, so some imports will need manual cleanup, but the tool saves significant time compared to retyping everything by hand. Tandoor also accepts imports from other recipe managers via JSON and supports a custom Tandoor export format for moving data between instances.

Meal planning works through a calendar view where you assign recipes to specific days and meal slots. Once a plan is set, Tandoor can generate a consolidated shopping list from all planned recipes, merging duplicate ingredients and adjusting quantities based on serving size. The shopping list can be viewed on a phone browser while you are at the store, or exported if you prefer a different format. If you are already running other self-hosted tools to manage your digital life – like Wallos for tracking subscriptions – Tandoor fits naturally into that same philosophy of keeping personal data off third-party platforms. The real advantage only becomes obvious after a few weeks of use, when your recipe collection has grown to a point where the search, filtering, and meal planning features start doing meaningful work.





