Was du brauchst
- Einen Server oder Rechner mit Docker und Docker Compose.
- Für den öffentlichen Betrieb eine Domain und einen Reverse Proxy mit HTTPS. Er muss
X-Forwarded-Forsetzen, damit CookPal Anmeldeversuche pro Besucher zählt; Traefik, Caddy und Nginx Proxy Manager tun das von selbst. - Optional einen SMTP-Zugang, damit Mails verschickt werden können. Ohne ihn läuft CookPal auch, siehe Erster Start.
Docker Compose startet fünf Container: den Proxy, das Web-Frontend, den API-Server, PostgreSQL und einen Dienst für den Rezeptimport.
Installation
1. Lade das Projekt herunter und wechsle in den Ordner compose.
git clone https://github.com/steve192/opencookbook
cd opencookbook/compose2. Passe die Datei .env an. Ändere mindestens DB_PASSWORD und setze INSTANCE_URL auf die öffentliche Adresse ohne /app (z. B. https://kochbuch.example.com oder http://<Server>:3009). Die wichtigsten Einstellungen stehen im Abschnitt „Wichtige Einstellungen“.
3. Starte CookPal.
docker compose up -dDie App ist danach auf dem Port erreichbar, den httpPort festlegt (Standard 3009). Stelle für den öffentlichen Betrieb einen Reverse Proxy mit HTTPS davor.
Erster Start
Öffne direkt nach dem Start https://<deine Domain>/admin, ohne Domain http://<Server>:3009/admin. Wer zuerst dort ist, wird Administrator, also tu das sofort. Bis dahin bleibt die App geschlossen. Die Administration ist nur auf Englisch.
- Lege das Administrator-Konto an.
- Prüfe die Übersicht unter „Instance“: Sie zeigt deine Konfiguration und ob Mailserver, Rezeptimport und Rezeptscan funktionieren.
- Wähle die Registrierung: „Open“ (jeder kann sich registrieren) oder „Invitation only“ (nur mit Einladung).
- Lade Leute unter „Invitations“ ein: Du erzeugst einen Link und gibst ihn weiter. Ein Link gilt einmal und läuft nach 1, 7 oder 30 Tagen ab. Wer ihn öffnet, wählt E-Mail-Adresse und Passwort.
Mail ist optional. Mails brauchen SMTP_* und INSTANCE_URL. Ohne sie bleiben offene Registrierungen gesperrt, bis ein Administrator sie unter „Users“ in der Administration aktiviert. Einladungs- und Passwort-Links werden nicht verschickt, sondern in der Administration angezeigt, damit du sie weitergeben kannst.
Wichtige Einstellungen
| Einstellung | Bedeutung |
|---|---|
| tag | Die Version, die gestartet wird. |
| httpPort | Der Port, auf dem die App erreichbar ist (Standard 3009). |
| DB_PASSWORD | Das Passwort der Datenbank. Ändere es. |
| INSTANCE_URL | Die öffentliche Adresse ohne /app. Immer setzen: Einladungs- und Passwort-Links, jede Mail und geteilte Rezepte nutzen sie, und ohne sie werden keine Mails verschickt. |
| SMTP_*, MAIL_FROM | Optional: Zugangsdaten und Absender für Mails. Zusammen mit INSTANCE_URL nötig, sonst verschickt CookPal keine Mails. |
| LANDING_ENABLED | Zeigt diese Projektseite unter /. Standardmäßig aus, dann öffnet / die App. |
| LEGAL_DIR | Ordner mit den rechtlichen Texten, die in der App angezeigt werden (Standard ./legal). |
| MAX_UPLOAD_SIZE_MB | Die größte Datenmenge pro Upload in Megabyte. |
Rechtliche Texte
In LEGAL_DIR liegen drei Dateien: terms.html, privacy.html und imprint.html. Die App zeigt sie als Nutzungsbedingungen, Datenschutzerklärung und Impressum an.
Eine öffentlich erreichbare Instanz braucht diese Texte in der Regel. Was darin stehen muss, hängt von deinem Land und deinem Betrieb ab.
Android-App mit eigenem Server
Die Android-App verbindet sich mit deinem Server, wenn du in den Anmeldeeinstellungen (Zahnrad-Symbol) die Serveradresse einträgst.
Updates
Aktualisiere immer alle Images gemeinsam, denn App und Server einer Version gehören zusammen. Setze bei Bedarf tag auf die neue Version, dann:
docker compose pull && docker compose up -dEin Reverse Proxy muss die Cache-Control-Header des Frontends unverändert durchreichen, sonst zeigen Browser nach einem Update teils noch die alte Version.
Backups
Sichere zwei Verzeichnisse: das Datenbankverzeichnis (DATABASE_MOUNT_DIR) und das Bilderverzeichnis (IMAGES_MOUNT_DIR). Stoppe die Container vor dem Kopieren der Datenbank am besten kurz.