Die Rezeptdatenbank Tandoor Recipes wertet Rezepte auf vielfältige Weise in einer gefälligen Oberfläche aus.
In Zeiten der anhaltenden Pandemie, in denen man sich mit Restaurantbesuchen eher zurückhält und sich dank Homeoffice die Zeit besser einteilen kann, beginnen immer mehr Menschen, zu Hause zu kochen. Wer das bisher nicht ausgiebig getan hat, verfügt vermutlich nicht über eine Sammlung von Kochbüchern, die sich für Rezepte heranziehen ließen. Hier kommt eine digitale Rezeptverwaltung ins Spiel, die adäquat zur vermutlich bereits vorhandenen Medienverwaltung Kochrezepte in einer Datenbank sammelt und für weitere Zwecke aufbereitet.
Für Linux-Anwender und dem Datenschutz zugetane Mitmenschen ergeben sich bei der Suche nach einer geeigneten Anwendung einige zu erfüllende Kriterien: Die Rezeptverwaltung sollte unter einer freien Lizenz stehen und sich selbst hosten lassen. So kann man die gesammelten Rezepte jederzeit nutzen, egal, wo man sich befindet und welches Gerät – vom Laptop bis zum Smartphone – zur Verfügung steht. Zudem sollte die Software neben der reinen Verwaltung der Rezepte möglichst viel Zusatznutzen bieten.
Das schränkt die Auswahl auf wenige Anwendungen ein. Die von uns inspizierten Kandidaten heißen Mealie [1], Grocy [2] und Tandoor Recipes, kurz Tandoor [3]. Alle drei haben ihre Vor- und Nachteile, die Sie gut gegeneinander abwägen können, da die Kandidaten auf ihren Webseiten jeweils eine Demo anbieten. Wenn Sie lediglich Rezepte ohne Zusatzfunktionen sammeln möchten und eine Nextcloud Ihr Eigen nennen, sollten Sie sich die App Cookbook [4] ansehen (Abbildung 1).

Abbildung 1: Nextcloud bietet mit der App Cookbook eine Rezeptdatenbank, die allerdings keine zusätzliche Funktionalität bietet.
Der Autor hat alle drei Kandidaten ausgiebig getestet und blieb letztlich bei dem auf dem Python-Framework Django basierten Tandoor hängen. Ein Grund dafür war, dass es derzeit als einzige Anwendung des Trios die in den Rezepten genannten Mengen auf unterschiedliche Personenzahlen anpassen kann. Zudem hat uns Hauptentwickler Benedikt Sienz, im Netz als vabene1111 unterwegs, mit seiner Hingabe zu seiner Entwicklung überzeugt. Er ist auf Discord und Github ansprechbar, bemüht sich, gemeldete Fehler zeitnah zu beheben, und steht Vorschlägen für neue Funktionen immer offen.
Laut Einschätzung von Sienz bietet Mealie die etwas bessere Benutzerschnittstelle. Tandoor erlaubt dagegen mehr Funktionalität in der Tiefe, die noch nicht überall optimal in der Oberfläche durchscheint. Hier gilt es also abzuwägen, welche Funktionen für Sie ausschlaggebend sind.
Docker und Docker Compose
Wir richten in diesem Artikel die Open-Source-Rezeptdatenbank Tandoor mithilfe von Docker und Docker Compose ein, was insgesamt auch für mit Containern nicht vertraute Zeitgenossen in rund einer Stunde zu schaffen ist. Aber zunächst sehen wir uns an, was Tandoor bietet. Mit der Software richten Sie ein Rezeptarchiv ein, das Sie mit Familie und Freunden teilen können. Bei Bedarf machen Sie es mit einem zusätzlichen Reverse-Proxy auch von außen erreichbar.
Auf der Basis dieses Archivs planen Sie in Tandoor Mahlzeiten, erstellen Einkaufslisten, ordnen Zutaten verschiedenen Einkaufsquellen zu, wie Supermarkt, Bio-Laden oder Wochenmarkt, und vieles mehr. Rezepte importieren Sie entweder aus dem Internet oder tragen sie händisch ein. Eine Importfunktion für bestehende Rezeptsammlungen etwa aus Nextclouds Cookbook und vielen weiteren Apps gibt es ebenfalls. Bei unseren Tests stellte sich heraus, dass Rezepte von rund 95 Prozent der von uns besuchten Rezeptseiten im Internet den Import erlauben (Abbildung 2).

Abbildung 2: Ist die Datenbank erst einmal gefüllt, bietet Tandoor eine aufgeräumte Ansicht auf die Rezepte sowie zahlreiche Funktionen.
Will man eine einheitliche Formatierung in Tandoor erreichen, fällt beim Import meist etwas Nacharbeit an, stellenweise muss auch ein Foto händisch eingestellt werden. Nährwerte müssen Sie derzeit ebenfalls von Hand nachtragen – hier ist, genau wie bei den Import/Export-Funktionen [5], eine größere Aktualisierung [6] in Arbeit. Des Weiteren lässt sich eine Tandoor-Instanz über die Funktion Spaces auch von mehreren Personen so nutzen, dass sich die Bereiche nicht berühren. Damit sind die wichtigsten Funktionen genannt, viele weitere werden Sie beim Stöbern in der Oberfläche entdecken.
Zur Miete
Falls Sie die Anwendung nicht oder nicht gleich selbst hosten möchten, können Sie Tandoor für 4 Euro im Monat als Dienst abonnieren [7]. Ein späterer Import in eine selbst gehostete Instanz stellt kein Problem dar. Uns geht es aber heute um das Bereitstellen von Tandoor im Docker-Container. Zu den Voraussetzungen zählt ein Computer mit Linux, Docker und Docker Compose. Das kann ein Server im Netz, ein ausgedienter Rechner, ein NAS oder etwa ein Raspberry Pi zu Hause sein. Wichtig ist, dass Sie administrative Rechte auf dem System besitzen.
Wir haben als Unterbau Ubuntu gewählt, da es hier die meisten Anleitungen zur Bereitstellung von Docker und Docker Compose gibt [8]. Mit den Kommandos aus der ersten Zeile von Listing 1 laden Sie das Programm herunter und kopieren es nach /usr/local/bin/. Kleiner Tipp: In vielen älteren Anleitungen funktioniert für Docker Compose die Zeile zur Installation nicht, weil in der URL vor der Versionsnummer ein “v” fehlt. Zu guter Letzt versehen Sie die Datei docker-compose noch mit Ausführungsrechten (zweite Zeile).
Listing 1
Installation von Docker
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.4.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
Sobald die Vorbereitungen abgeschlossen sind und der Befehl docker-compose --version eine entsprechende Antwort gibt, kann es an die Installation von Tandoor, der Datenbank PostgreSQL und der Server-Komponente Nginx gehen. Eine passende Anweisungsdatei für Docker Compose erleichtert den Vorgang ganz wesentlich. Diese Datei beziehen Sie von der Github-Seite über die Installationsoptionen für Tandoor [9].
Zwei Dateien
Zunächst erstellen Sie im Home-Verzeichnis des gewählten Rechners den Ordner tandoor/. Dort laden Sie nun mit dem ersten Befehl aus Listing 2 die Datei mit den Anweisungen herunter, die Docker Compose anschließend ausführt. Ein Blick in die Datei docker-compose.yml erleichtert das Verständnis der Vorgänge.
Listing 2
Anweisungsdatei
$ wget https://raw.githubusercontent.com/vabene1111/recipes/develop/docs/install/docker/plain/docker-compose.yml $ wget https://raw.githubusercontent.com/vabene1111/recipes/develop/.env.template -O .env
Die Datei eignet sich nur für den Betrieb im lokalen Netz und nicht für den Zugriff von außen. Sie veröffentlicht Tandoor über Port 80 im lokalen Netzwerk. Wird darüber bereits eine andere Anwendung ausgeliefert, müssen Sie den Port in der YML-Datei von 80:80 auf beispielsweise 10003:80 oder einen freien Port Ihrer Wahl ändern.
Egal, welche der auf Github verfügbaren Varianten zur Installation Sie verwenden: Sie benötigen im gleichen Ordner eine zweite Datei namens .env, die Sie über das zweite Kommando aus Listing 2 von der Github-Seite beziehen. Achten Sie darauf, dass die versteckte Datei in dem Ordner den Namen .env erhält.
Öffnen Sie die Datei und editieren zumindest die Einträge POSTGRES_PASSWORD und SECRET_KEY. Einen geeigneten String für SECRET_KEY auf Basis eines Zufallsgenerators erstellen Sie auf der Kommandozeile mit dem Kommando base64 /dev/urandom | head -c30. Anschließend starten Sie die Installation mit dem Befehl sudo docker-compose up. Der Prozess dauert je nach Geschwindigkeit der eingesetzten Hardware eine Weile. Sie erhalten am Ende keinen Prompt zurück, die letzte Zeile nach Ablauf des Scripts lautet in etwa: [Info] Booting Worker with pid: 16.
Haben Sie Tandoor auf einem Rechner installiert, auf dem sonst kein Dienst über Port 80 lauscht, rufen Sie nun im Webbrowser Ihrer Wahl die URL http://IP-des-Installationsrechners auf. Sollten Sie wie oben beschrieben den Port geändert haben, tippen Sie stattdessen http://IP-des-Installationsrechners:NeuerPort in die Adresszeile. Die Verbindungsaufnahme sollte auf jedem Gerät im Heimnetz funktionieren. Lediglich Chrome weigerte sich bei uns unter Android, Tandoor anzuzeigen, Firefox hatte damit kein Problem.
Nach dem ersten Aufruf müssen Sie einen Benutzernamen und ein Kennwort festlegen. Danach geht es in die Oberfläche, die Sie nun mit Leben befüllen können. Dazu gibt es mehrere Wege, die zunächst über das Ausklappmenü des Pluszeichens rechts in der Bedienleiste und dort über die Option Rezept importieren führen. Hierüber können Sie einzelne Rezepte von Webseiten per URL importieren oder über Erstellen manuell in die Eingabemaske eingeben oder kopieren.
Eine weitere Möglichkeit, die Datenbank mit kulinarischen Genüssen zu füllen, besteht im Import aus einer anderen Anwendung, in der Sie bereits Rezepte gespeichert haben. Unter Importieren | Anwendung finden Sie vermutlich die Anwendung, aus der Sie Rezepte importieren möchten. Dazu erstellen Sie in der Quellanwendung eine Exportdatei, laden sie auf Ihren Rechner und geben sie in Tandoor zum Import an. Duplikate identischen Namens können Sie dabei ausschließen (Abbildung 3).

Abbildung 3: Tandoor erlaubt den Import aus zahlreichen Anwendungen, in denen Sie bisher Rezepte gespeichert haben.
Import
Die einfachste Möglichkeit, schnell zu einer gut gefüllten Datenbank zu kommen, führt über den Import von Rezepten von Webseiten (Abbildung 4). Dafür ist Tandoor bestens aufgestellt: Die Voraussetzung für den erfolgreichen Import von Webseiten ist die Strukturierung der Daten mit entweder JSON-LD [10] oder Microdata [11], was die meisten Rezeptseiten heutzutage erfüllen. Zudem setzt Tandoor das Python-Tool Recipe-Scrapers [12] ein, um zu versuchen, unstrukturierte Daten zu erfassen.

Abbildung 4: Ein weiterer Weg, die Datenbank von Tandoor zu füllen, bietet der Import von Rezepten aus dem Internet über die Eingabe einer URL.
In der Beschreibung finden Sie eine Liste der Seiten, die das Tool abgrasen kann [13]. Sollten Sie auf eine Seite stoßen, bei der der Import von Rezepten nicht funktioniert, können Sie die URL im Github von Tandoor als Verbesserungsvorschlag einreichen. Bei aus dem Internet importierten Rezepten gilt es, zu bedenken, dass die Fotos und Rezepte meist urheberrechtlich geschützt sind und Sie diese nicht frei zugänglich machen dürfen.
Beim Import von Rezeptseiten übernimmt Tandoor neben dem eigentlichen Rezept auch Fotos und Zutatenlisten und legt sie strukturiert ab. Nach dem Import von Rezepten, die eventuell auch noch fremdsprachig sind, sollten Sie von Anfang an auf die Vereinheitlichung bei den Zutaten und den Schlagworten achten. Diese und weitere Komponenten können Sie im Rezept selbst oder besser gleich in der generellen Übersicht bearbeiten. Dazu klicken Sie auf das Koffersymbol oben rechts in der Leiste und wählen die zu bearbeitende Komponente aus (Abbildung 5). Je nach Komponente bietet der Dialog verschiedene Einstellungen.

Abbildung 5: Anpassungen an die eigenen Bedürfnisse und Ergänzungen bei den verschiedenen Komponenten wie Einheiten oder Schlagworten sollten Sie frühzeitig vornehmen.
In der Kategorie Lebensmittel legen Sie unter anderem fest, ob Sie eine Zutat gerade auf Lager haben oder Tandoor sie zur Einkaufsliste hinzufügen soll. Das erweist sich als hilfreich, wenn Sie einen Speiseplan für den Tag, die Woche oder einen längeren Zeitraum zusammenstellen und dann daraus eine Einkaufsliste erstellen lassen.
Bei den Einheiten hilft die Vereinheitlichung besonders dann, wenn Sie etwa deutsche und fremdsprachige Rezepte importieren. Die Bearbeitung erlaubt beispielsweise das Ersetzen der Angabe 1**pound mit der deutschen Entsprechung 453**Gramm in allen gespeicherten Rezepten.
Speiseplan und Einkaufsliste
Die Einstellungen zum Speiseplan, dessen Icon oben rechts in der Leiste wartet, entsprechen in etwa dem Erstellen eines Termins in einem Kalender (Abbildung 6). Für die Einkaufsliste übernehmen Sie die Zutaten der Rezepte des Speiseplans, wobei Sie weitere Rezepte aus der Datenbank hinzufügen können (Abbildung 7). Die fertige Einkaufsliste laden Sie als CSV oder PDF herunter oder kopieren sie als Markdown-Tabelle.

Abbildung 6: Tandoor unterstützt Speisepläne für Tage, Wochen und Monate. Aus den geplanten Mahlzeiten lässt sich eine Einkaufsliste extrahieren.

Abbildung 7: Stellen Sie fest, dass eine Zutat auf der Einkaufsliste ausreichend vorhanden ist, kennzeichnen Sie sie als lagernd und nehmen sie vom Einkauf aus.
Möchten Sie Ihre Lieblingsrezepte an Freunde oder Bekannte weitergeben, müssen Sie das nicht in digitaler Form machen. Aus den gesammelten Rezepten lassen sich druckbare Kochbücher erstellen. Zudem erlaubt Tandoor, den Rezeptbestand mit Dropbox oder Nextcloud zu synchronisieren. Beim Erforschen von Tandoor werden Sie noch weitere Funktionen finden, deren vollständige Aufzählung den Rahmen des Artikels sprengen würde.
Updates
Sowohl Tandoor als auch die darunterliegende Linux-Distribution Alpine Linux unterliegen stetiger Entwicklung und müssen deswegen von Zeit zu Zeit aktualisiert werden. Den jeweiligen Versionsstand der Images in den einzelnen Containern ermitteln Sie mit dem Befehl docker images. Weitere Informationen zur Laufzeit liefert dann noch ein docker ps -a.
Zur eigentlichen Aktualisierung müssen Sie den Dienst stoppen, neu aus dem Docker-Repository laden und dann wieder starten (Listing 3). Vor der Aktualisierung sollten Sie ein Backup von Tandoor anlegen. Derzeit bietet die Anwendung dazu noch keine integrierte Funktion, eine solche ist allerdings geplant (siehe Kasten “Backup erstellen”).
Listing 3
Tandoor aktualisieren
$ docker-compose down $ docker-compose pull $ docker-compose up -d
Backup erstellen
Für ein Backup müssen Sie zum einen die Datenbank mit den Rezepten und separat die Fotos zu den Gerichten sichern. Für das lokale Backup der Datenbank empfiehlt der Entwickler ein Skript auf Github [14], das als Docker-Compose-Datei vorliegt und das Sie nach Ihren Bedürfnissen konfigurieren können. Die Fotos kopieren Sie einfach aus dem Dateisystem. Bei der hier beschriebenen Installationsmethode lagern sie in /home/User/tandoor.
Ein kleiner Fehler, der vermutlich bereits korrigiert ist, wenn Sie diesen Artikel lesen, betrifft die Länge der Rezeptbeschreibung. Importieren Sie ein Rezept mit einer langen Beschreibung von einer Webseite, bemäkelt Tandoor beim Speichern, der Text sei länger als 512 Byte. Sie müssen ihn dementsprechend kürzen, bevor Sie das Rezept speichern können. Ein passender Bugfix folgt in der nächsten Tandoor-Version. Es lohnt sich also, regelmäßig nach Aktualisierungen der Anwendung zu sehen.
HTTP-Proxy
Möchten Sie Ihre Tandoor-Installation über das Internet mit anderen Nutzern teilen, müssen Sie zusätzlich einen HTTP-Proxy einrichten, der sich um das Zertifikat kümmert. Auch das nimmt Ihnen Docker Compose ab, wenn Sie die dafür vorbereitete YML-Datei herunterladen (Listing 4).
Listing 4
YML-Datei herunterladen
$ https://raw.githubusercontent.com/vabene1111/recipes/develop/docs/install/docker/traefik-nginx/docker-compose.yml
Hier fallen weitere Anpassungen an, und Traefik ist mitunter etwas sperrig beim Einrichten. Unterstützung dafür bieten die Tandoor-Dokumentation [15] sowie die offizielle Traefik-Doku [16]. Zum besseren Verständnis der Materie kann ein deutschsprachiger Artikel auf der Webseite GoNeuland.de dienen [17].
Geht es nur darum, dass Sie von unterwegs Zugriff haben, genügt im Prinzip aber auch eine VPN-Verbindung zu Ihrem Router. Viele Hersteller wie etwa AVM integrieren entsprechende Dienste in ihre Geräte.
Fazit und Ausblick
Tandoor Recipes ist eine mit vielen sinnvollen Ideen ausgestattete Open-Source-Rezeptdatenbank, die im Fall des Selbst-Hostings völlig unter eigener Kontrolle steht und zudem kostenlos ist. Bei entsprechender Konfiguration kann jedes Familienmitglied oder der Freundeskreis eine eigene, unabhängige Instanz innerhalb Ihrer Installation betreiben. Das Aufsetzen von Tandoor ist dank Docker Compose kein Hexenwerk, mit etwas mehr Aufwand gelingt auch der Zugriff von außen.
Dank des aktiven und sehr bemühten Entwicklers, den Sie per Github oder Discord erreichen können, wird die Anwendung nicht nur beständig stabilisiert, es kommen auch fortlaufend neue Funktionen hinzu. Für die Zukunft ist unter anderem die Integration von Nährwerten und die Überarbeitung der Import-Export-Funktion geplant. Auch die Shopping-Liste harrt der Überarbeitung [18].
Die Dokumentation ist noch im Wachsen begriffen, genügt aber zusammen mit dem Support des Entwicklers und der Community in den genannten Kanälen, um anstehende Hürden zu überwinden. Die Tandoor-FAQ [19] beschreibt unter anderem, wie Sie Tandoor mobil als Progressive Web App (PWA) einsetzen. Wir kennen derzeit keine bessere Rezeptdatenbank unter eigener Kontrolle. Es macht Spaß, damit zu arbeiten, wenn man über die kleinen momentanen Unebenheiten hier und da hinwegsehen kann. (cla)
Infos
-
Tandoor: https://docs.tandoor.dev/
-
Cookbook: https://apps.nextcloud.com/apps/cookbook
-
Import/Export: https://github.com/TandoorRecipes/recipes/issues/894
-
Tandoor mieten: https://tandoor.dev
-
Docker Compose: https://linuxserver.tips/de/docker-engine-auf-ubuntu-installieren/
-
Installation: https://docs.tandoor.dev/install/docker/#docker-compose
-
Liste: https://github.com/hhursev/recipe-scrapers#scrapers-available-for
-
Backup: https://github.com/prodrigestivill/docker-postgres-backup-local
-
Tandoor mit Traefik: https://docs.tandoor.dev/faq/
-
Traefik-Doku: https://docs.tandoor.dev/faq/
-
Traefik-Workshop: https://goneuland.de/traefik-v2-reverse-proxy-fuer-docker-unter-debian-10-einrichten/
-
Einkaufsliste: https://github.com/TandoorRecipes/recipes/issues/114






Schönen guten Tag!
Dieser Artikel ist älter als 12 Monate und sollte daher eigentlich frei verfügbar sein, oder?
Bitte benachrichtigen Sie mich, sobald sie das umgestellt haben.
Vielen Dank im voraus.
Mit freundlichem Gruß