Self-Hosting Tandoor Recipes: Your Personal Recipe Manager
Recipe websites are broken. Every recipe is buried under a wall of ads, pop-ups, and a 2,000-word life story before you get to the ingredients. Tandoor Recipes is a self-hosted recipe manager that strips away the noise and gives you a clean, fast, searchable recipe collection that works offline from your kitchen.
Why Self-Host a Recipe Manager?
If you cook regularly, you probably have recipes scattered across bookmarks, screenshots, apps, and physical cards. A self-hosted recipe manager centralizes everything:
- Import from any website — paste a URL, get a clean recipe without ads
- Meal planning — plan your week and auto-generate shopping lists
- Shopping lists — shared, real-time lists for household members
- Offline access — works as a PWA, so recipes load even without internet
- No subscriptions — recipe apps like Paprika and Mealime charge $5–10/month for premium features
- Your data — recipes stay on your server, not locked in someone else's database
Docker Setup
Tandoor uses Django (Python) with a PostgreSQL database:
# docker-compose.yml
services:
tandoor:
image: vabene1111/recipes
ports:
- "8080:8080"
environment:
DB_ENGINE: django.db.backends.postgresql
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_USER: tandoor
POSTGRES_PASSWORD: your-secure-password
POSTGRES_DB: tandoor
SECRET_KEY: your-random-secret-key
TIMEZONE: America/Los_Angeles
ENABLE_SIGNUP: 0
volumes:
- ./staticfiles:/opt/recipes/staticfiles
- ./mediafiles:/opt/recipes/mediafiles
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: tandoor
POSTGRES_PASSWORD: your-secure-password
POSTGRES_DB: tandoor
volumes:
- ./pgdata:/var/lib/postgresql/data
restart: unless-stopped
Start it:
docker compose up -d
Visit http://your-server:8080 and create your admin account.
Tip: Generate a strong
SECRET_KEYwith:openssl rand -hex 32
Importing Recipes
From a Website
The fastest way to build your collection. Click "Create" → "Import" → paste a URL. Tandoor uses recipe schema parsers to extract:
- Title
- Ingredients (parsed into amounts, units, and items)
- Instructions (split into steps)
- Prep/cook time
- Servings
- Photo
It works on most recipe sites — any site using Schema.org Recipe markup (which is most of them, since it helps their SEO).
Browser Extension
Install the Tandoor bookmarklet or browser extension. When you find a recipe you like, click it to send the recipe directly to your Tandoor instance.
Manual Entry
For family recipes, handwritten cards, or recipes from cookbooks, the manual editor lets you type or paste everything. The ingredient parser understands natural language:
2 cups all-purpose flour
1/2 tsp salt
3 large eggs, beaten
1 14oz can coconut milk
Tandoor automatically separates quantities, units, and food items.
Bulk Import
Tandoor can import from:
- Other Tandoor instances (JSON export)
- Mealie (API)
- Paprika (
.paprikarecipesformat) - Nextcloud Cookbook
- Plain text/markdown files
Key Features
Meal Planning
The meal plan calendar lets you:
- Drag recipes onto days of the week
- Plan multiple meals per day (breakfast, lunch, dinner)
- Share the plan with household members
- Auto-populate shopping lists from the plan
Shopping Lists
Shopping lists are generated from meal plans or individual recipes. They:
- Combine duplicate ingredients (two recipes needing onions → one entry)
- Organize by food category (produce, dairy, pantry)
- Support real-time sync between devices
- Can be checked off as you shop
- Handle unit conversion (combine 1 cup + 250ml)
Cookbooks
Organize recipes into cookbooks (collections):
- "Weeknight Dinners" — quick recipes under 30 minutes
- "Baking" — breads, cakes, pastries
- "Holiday Favorites" — seasonal recipes
- "Meal Prep" — batch cooking recipes
Scaling
Adjust serving sizes and all ingredient quantities scale automatically. Making the recipe for 8 instead of 4? Click the serving adjuster and every measurement updates.
Nutritional Information
Tandoor can pull nutritional data from the Open Food Facts database. Enable it in settings to see calories, macros, and micronutrients per serving.
Multi-User
Add family members with their own accounts. Each user can:
- Have personal recipe collections
- Share recipes with the household
- Maintain their own shopping lists
- Comment on and rate recipes
Mobile Experience
Tandoor works as a Progressive Web App (PWA). On your phone:
- Open Tandoor in your browser
- Tap "Add to Home Screen"
- It installs as an app-like experience with offline support
The PWA caches recipes you've viewed, so you can access them without internet — perfect for when you're in the kitchen with messy hands and spotty Wi-Fi.
Reverse Proxy Setup
Behind Caddy:
recipes.yourdomain.com {
reverse_proxy tandoor:8080
}
Behind Nginx:
server {
server_name recipes.yourdomain.com;
client_max_body_size 128M; # For recipe photo uploads
location / {
proxy_pass http://tandoor:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Tandoor vs Mealie vs Paprika
| Feature | Tandoor | Mealie | Paprika |
|---|---|---|---|
| Self-hosted | Yes | Yes | No |
| Cost | Free | Free | $5 one-time (per platform) |
| Web import | Yes | Yes | Yes |
| Meal planning | Yes | Yes | No |
| Shopping lists | Yes (real-time) | Yes | Yes (basic) |
| Multi-user | Yes | Yes | No |
| Offline/PWA | Yes | Yes | Native app |
| Nutritional info | Yes (OpenFoodFacts) | Yes | No |
| API | Yes (full REST) | Yes (full REST) | No |
| Ingredient parsing | Excellent | Good | Good |
| Recipe scaling | Yes | Yes | Yes |
| Cookbooks/collections | Yes | Yes (categories/tags) | Yes |
| Active development | Very active | Very active | Slow |
When to Choose Tandoor
- You want the most fully-featured self-hosted option
- Meal planning and shopping lists are important
- You have multiple household members who cook
- You want nutritional tracking
When to Choose Mealie
- You prefer a simpler, cleaner UI
- You want strong API integration for automation
- You don't need as advanced ingredient parsing
- You want webhook support for notifications
When to Choose Paprika
- You don't want to self-host
- You primarily use mobile (native apps are smoother)
- You only need personal recipe management (no sharing)
- One-time purchase appeals to you
Backup Strategy
Tandoor stores data in PostgreSQL and recipe images on disk. Back up both:
#!/bin/bash
# backup-tandoor.sh
BACKUP_DIR="/backups/tandoor"
# Database dump
docker exec tandoor-db pg_dump -U tandoor tandoor | \
gzip > "$BACKUP_DIR/db-$(date +%Y%m%d).sql.gz"
# Media files
tar czf "$BACKUP_DIR/media-$(date +%Y%m%d).tar.gz" ./mediafiles
# Keep last 14 days
find "$BACKUP_DIR" -mtime +14 -delete
Verdict
Tandoor Recipes is the most complete self-hosted recipe manager available. The web import works reliably, meal planning is genuinely useful, and the shared shopping lists are a household game-changer. If you cook regularly and want to break free from ad-ridden recipe websites and subscription-based apps, Tandoor gives you everything you need.
Install it alongside your other self-hosted services, import your bookmarked recipes, and you'll wonder why you tolerated recipe websites for so long.