Erste Produktivversion
This commit is contained in:
181
.env.example
Normal file
181
.env.example
Normal file
@@ -0,0 +1,181 @@
|
||||
# ==========================================================================
|
||||
# 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=*
|
||||
|
||||
SESSION_DAYS=30
|
||||
|
||||
# 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
|
||||
|
||||
# ==========================================================================
|
||||
# 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
|
||||
Reference in New Issue
Block a user