193 lines
7.5 KiB
Plaintext
193 lines
7.5 KiB
Plaintext
# ==========================================================================
|
|
# Datenbank
|
|
# ==========================================================================
|
|
DB_NAME=einkaufsapp
|
|
DB_USER=einkaufsapp
|
|
DB_PASSWORD=BITTE-AENDERN-langes-zufaelliges-passwort
|
|
DB_ROOT_PASSWORD=BITTE-AENDERN-anderes-langes-passwort
|
|
|
|
# ==========================================================================
|
|
# Anwendung
|
|
# ==========================================================================
|
|
# ---- Anwendungsname ----
|
|
# Erscheint in der Oberflaeche, im Browsertitel, auf dem Startbildschirm
|
|
# und in allen Mails. Nach einer Aenderung genuegt:
|
|
# docker compose up -d api
|
|
# Der web-Container muss dafuer NICHT neu gebaut werden.
|
|
APP_NAME=Einkaufsliste
|
|
# Kuerzere Fassung fuer das Symbol auf dem Startbildschirm. Leer = APP_NAME.
|
|
APP_SHORT_NAME=Einkauf
|
|
|
|
# Einziger nach aussen veroeffentlichter Port. Dahinter liegt nginx,
|
|
# das sowohl die Oberflaeche als auch /api/ ausliefert. Der api-Container
|
|
# hat bewusst KEINEN eigenen Port nach aussen.
|
|
HTTP_PORT=46600
|
|
|
|
# Mailpit-Weboberflaeche, nur mit "--profile dev". An 127.0.0.1 gebunden.
|
|
MAILPIT_PORT=8025
|
|
|
|
# Basis-URL, wie Nutzer die App im Browser erreichen - inklusive Port,
|
|
# falls kein vorgelagerter Reverse Proxy auf 80/443 steht.
|
|
# Landet in Verifikations- und Einladungsmails, muss also stimmen.
|
|
PUBLIC_BASE_URL=http://einkauf.example.de:46600
|
|
|
|
# Welchen Absendern von X-Forwarded-For die API glauben darf.
|
|
# "*" ist in Ordnung, solange api keinen oeffentlichen Port hat.
|
|
FORWARDED_ALLOW_IPS=*
|
|
|
|
# Cookie nur über HTTPS ausliefern.
|
|
# false bei direktem HTTP-Zugriff auf Port 46600
|
|
# true sobald ein Reverse Proxy mit TLS davorsteht (dann muss
|
|
# PUBLIC_BASE_URL ebenfalls auf https:// zeigen)
|
|
# Ein Secure-Cookie über reines HTTP wird vom Browser verworfen - die
|
|
# Anmeldung scheitert dann kommentarlos.
|
|
COOKIE_SECURE=false
|
|
|
|
# Dieses Konto wird als Administrator markiert, sobald es sich registriert.
|
|
ADMIN_EMAIL=admin@example.de
|
|
|
|
# Optional: Startpasswort für das erste Administratorkonto.
|
|
#
|
|
# - Wird NUR beim allerersten Start verwendet, und auch dann nur, wenn
|
|
# die Datenbank noch gar keinen Nutzer enthält.
|
|
# - Das angelegte Konto muss das Passwort bei der ersten Anmeldung
|
|
# ändern. Bis dahin sind alle Funktionen außer "Profil lesen" und
|
|
# "Passwort ändern" gesperrt.
|
|
# - Danach diesen Wert wieder entfernen. Er steht im Klartext auf der
|
|
# Platte, in jedem Backup und ist über "docker inspect" für jeden
|
|
# lesbar, der auf den Host kommt.
|
|
#
|
|
# Leer lassen, um stattdessen den regulären Registrierungsweg zu nutzen.
|
|
ADMIN_INITIAL_PASSWORD=
|
|
|
|
# Alternative für Docker Secrets - hat Vorrang vor der Variablen oben:
|
|
# ADMIN_INITIAL_PASSWORD_FILE=/run/secrets/admin_password
|
|
|
|
# ==========================================================================
|
|
# Selbstregistrierung
|
|
# ==========================================================================
|
|
# true Immer erlaubt. Admin-API kann es NICHT abschalten.
|
|
# false Immer gesperrt. Zugang nur noch per Einladung (ab Phase 5).
|
|
# Admin-API kann es NICHT einschalten.
|
|
# admin Die Datenbankeinstellung entscheidet, der Administrator darf
|
|
# sie zur Laufzeit umschalten. (Voreinstellung)
|
|
ALLOW_SELF_REGISTRATION=admin
|
|
|
|
# Nur relevant bei ALLOW_SELF_REGISTRATION=admin: Startwert beim
|
|
# allerersten Start. Danach wird dieser Wert ignoriert.
|
|
SELF_REGISTRATION_DEFAULT=true
|
|
|
|
# ==========================================================================
|
|
# Produktdatenbank
|
|
# ==========================================================================
|
|
# Nachschlagen gescannter Strichcodes bei Open Food Facts.
|
|
# openfoodfacts eingeschaltet (Voreinstellung)
|
|
# off aus - nur der eigene Artikelstamm
|
|
#
|
|
# Die Abfrage laeuft ueber den api-Container, nicht aus dem Browser:
|
|
# So erfaehrt der Dienst die IP-Adressen deiner Nutzer nicht, die
|
|
# Content-Security-Policy bleibt bei connect-src 'self', und jeder Code
|
|
# wird nur einmal abgefragt.
|
|
#
|
|
# Voraussetzung: Der api-Container muss world.openfoodfacts.org
|
|
# erreichen koennen.
|
|
PRODUCT_LOOKUP=openfoodfacts
|
|
|
|
# Gueltigkeit der zwischengespeicherten Antworten.
|
|
PRODUCT_CACHE_DAYS=180
|
|
# Fehlschlaege kuerzer merken - das Produkt kann spaeter eingepflegt sein.
|
|
PRODUCT_MISS_DAYS=14
|
|
PRODUCT_LOOKUP_TIMEOUT=6
|
|
|
|
# ==========================================================================
|
|
# Aufraeumen
|
|
# ==========================================================================
|
|
# Wie lange weich geloeschte Daten aufbewahrt werden. Solange kann ein
|
|
# Geraet offline bleiben und beim naechsten Abgleich noch erfahren, dass
|
|
# etwas verschwunden ist. Kuerzer einzustellen fuehrt dazu, dass
|
|
# geloeschte Listen auf selten benutzten Geraeten stehenbleiben.
|
|
CLEANUP_DELETED_DAYS=30
|
|
# Quittungen der Outbox - verhindern doppeltes Ausfuehren.
|
|
CLEANUP_OPS_DAYS=7
|
|
# Abstand zwischen zwei Aufraeumdurchlaeufen.
|
|
CLEANUP_INTERVAL_HOURS=24
|
|
|
|
# ---- Startwerte fuer Fristen ----
|
|
# Diese Werte gelten nur, solange in der Verwaltung nichts anderes
|
|
# eingestellt wurde. Nach der ersten Aenderung dort ist der gespeicherte
|
|
# Wert massgeblich - dasselbe Verhalten wie bei der Selbstregistrierung.
|
|
# Einzusehen und zu aendern unter:
|
|
# Einstellungen -> Benutzerverwaltung -> Fristen
|
|
SESSION_DAYS=30
|
|
INVITE_DAYS=14
|
|
WELCOME_DAYS=14
|
|
VERIFY_HOURS=24
|
|
RESET_HOURS=1
|
|
EMAIL_CHANGE_HOURS=48
|
|
|
|
# ==========================================================================
|
|
# Push-Benachrichtigungen
|
|
# ==========================================================================
|
|
# Schluesselpaar erzeugen mit:
|
|
# docker compose exec api python3 /app/../tools/vapid-keys.py
|
|
# oder lokal:
|
|
# python3 tools/vapid-keys.py
|
|
#
|
|
# Leer lassen = Push abgeschaltet. Ein Wechsel des privaten Schluessels
|
|
# entwertet alle bestehenden Geraeteanmeldungen.
|
|
# ACHTUNG: Jede Variable darf nur EINMAL in dieser Datei stehen. Bei
|
|
# doppelten Eintraegen nimmt Docker Compose den letzten - eine
|
|
# vergessene leere Vorlagenzeile unterhalb des eingefuegten Werts
|
|
# schaltet die Funktion damit still wieder ab.
|
|
VAPID_PRIVATE_KEY=
|
|
VAPID_PUBLIC_KEY=
|
|
# Kontaktadresse fuer die Push-Dienste der Browserhersteller.
|
|
# Leer = SMTP_ENVELOPE_FROM wird verwendet.
|
|
VAPID_SUBJECT=mailto:admin@example.de
|
|
|
|
# Hoechstens eine Benachrichtigung je Liste und Person in diesem Zeitraum.
|
|
PUSH_THROTTLE_HOURS=2
|
|
PUSH_TIMEOUT=10
|
|
|
|
# ==========================================================================
|
|
# SMTP-Relay
|
|
# ==========================================================================
|
|
# --- Beispiel: eigener Postfix/mailcow-Relay ---
|
|
SMTP_HOST=mail.example.de
|
|
SMTP_PORT=587
|
|
SMTP_SECURITY=starttls
|
|
SMTP_USER=einkaufsapp@example.de
|
|
SMTP_PASSWORD=BITTE-AENDERN
|
|
|
|
# --- Beispiel: Relay mit implizitem TLS ---
|
|
# SMTP_PORT=465
|
|
# SMTP_SECURITY=ssl
|
|
|
|
# --- Beispiel: lokaler Mailpit-Container zum Testen ---
|
|
# SMTP_HOST=mailpit
|
|
# SMTP_PORT=1025
|
|
# SMTP_SECURITY=none
|
|
# SMTP_USER=
|
|
# SMTP_PASSWORD=
|
|
|
|
# Hostname im EHLO-Kommando. Sollte ein FQDN sein, der zur sendenden
|
|
# Domain passt - sonst meldet sich der Container mit seiner ID, was bei
|
|
# strengen Empfängern Spampunkte kostet.
|
|
SMTP_HELO_HOSTNAME=einkauf.example.de
|
|
|
|
# Absender, wie der Empfänger ihn sieht.
|
|
SMTP_FROM=einkaufsliste@example.de
|
|
# Leer lassen, um APP_NAME zu verwenden.
|
|
SMTP_FROM_NAME=
|
|
|
|
# Envelope-Absender (Return-Path). SPF wird gegen DIESE Adresse geprüft,
|
|
# nicht gegen SMTP_FROM. Leer lassen = identisch mit SMTP_FROM.
|
|
# Eine eigene Bounce-Adresse ist sinnvoll, wenn du Rückläufer auswerten willst.
|
|
SMTP_ENVELOPE_FROM=bounces@example.de
|
|
|
|
# Optional: Antworten sollen an ein Postfach gehen, das jemand liest.
|
|
SMTP_REPLY_TO=
|
|
|
|
SMTP_TIMEOUT=20
|
|
SMTP_MAX_RETRIES=3
|