# Vorlage OHNE echte Geheimnisse — analog zu .env.example. Kopieren nach # 02-secret.yaml (per .gitignore ausgeschlossen, NIE committen), Werte # ausfuellen, dann "kubectl apply -f k8s/02-secret.yaml". # # Alternative ohne Datei mit Klartext-Secrets auf der Platte: # kubectl create secret generic wabenhain-secrets -n wabenhain \ # --from-literal=DATABASE_URL='postgresql://wabenhain:CHANGE-ME@wabenhain-postgres:5432/wabenhain?schema=public' \ # --from-literal=DB_PASSWORD='CHANGE-ME' \ # --from-literal=SESSION_SECRET="$(openssl rand -base64 32)" \ # --from-literal=ADMIN_EMAIL='change-me@example.com' \ # --from-literal=ADMIN_PASSWORD="$(openssl rand -base64 24 | tr -d '=+/' | head -c 28)" \ # --from-literal=STRIPE_SECRET_KEY='' \ # --from-literal=STRIPE_PUBLISHABLE_KEY='' \ # --from-literal=STRIPE_WEBHOOK_SECRET='' \ # --from-literal=SMTP_HOST='' --from-literal=SMTP_USER='' --from-literal=SMTP_PASSWORD='' \ # --from-literal=TURNSTILE_SECRET_KEY='' apiVersion: v1 kind: Secret metadata: name: wabenhain-secrets namespace: wabenhain type: Opaque stringData: # Host "wabenhain-postgres" bzw. "wabenhain-mysql" passend zum Service aus # 03-postgres.yaml/03-mysql.yaml waehlen; Port 5432 (Postgres) bzw. 3306 # (MySQL). Muss zu DATABASE_PROVIDER in 01-configmap.yaml passen. # WICHTIG: das Passwort hier MUSS URL-encodiert sein (Sonderzeichen wie # @ : / % # ? & sonst ungueltig bzw. falsch geparst) — DB_PASSWORD unten # bleibt dagegen roh/unencodiert. Encodieren z.B. mit: # node -e "console.log(encodeURIComponent('DEIN-PASSWORT'))" DATABASE_URL: "postgresql://wabenhain:CHANGE-ME@wabenhain-postgres:5432/wabenhain?schema=public" # Dasselbe Passwort wie oben in DATABASE_URL — wird vom Postgres-/MySQL- # StatefulSet (je nachdem, welches du anwendest) zum Anlegen des # Datenbank-Nutzers verwendet. DB_PASSWORD: "CHANGE-ME" # Mindestens 32 Zeichen, z.B.: openssl rand -base64 32 SESSION_SECRET: "CHANGE-ME-min-32-zeichen-zufaelliger-string" # Unvorhersehbar waehlen (nicht "admin@..."), siehe README "Admin-Zugang" — # sonst koennte sich jemand die erwartete Adresse vorregistrieren. ADMIN_EMAIL: "change-me@example.com" ADMIN_PASSWORD: "CHANGE-ME" STRIPE_SECRET_KEY: "" STRIPE_PUBLISHABLE_KEY: "" STRIPE_WEBHOOK_SECRET: "" SMTP_HOST: "" SMTP_USER: "" SMTP_PASSWORD: "" TURNSTILE_SECRET_KEY: "" # DHL-Versandmarken (Admin -> Bestellung -> "DHL-Versandmarke"), siehe # .env.example fuer die vollstaendige Einrichtungsanleitung. Leer lassen, # bis vorhanden — der Button zeigt dann "noch nicht konfiguriert" statt # zu crashen. DHL_API_KEY: "" DHL_API_SECRET: "" DHL_GKP_USERNAME: "" DHL_GKP_PASSWORD: "" DHL_ACCOUNT_NUMBER: "" # Entra-ID-SSO ("Mit Microsoft anmelden"), siehe .env.example fuer die # Einrichtung in Azure. ENTRA_REDIRECT_URI muss auf die echte, oeffentliche # Domain zeigen: https://wabenhain.com/api/auth/entra/callback ENTRA_TENANT_ID: "" ENTRA_CLIENT_ID: "" ENTRA_CLIENT_SECRET: "" ENTRA_REDIRECT_URI: "" # Abrechenbarer Zugangsschluessel fuer die Google-Places-API (echte # Google-Rezensionen auf der Startseite). Gehoert hierher und NICHT in # 01-configmap.yaml: eine ConfigMap ist unverschluesselt und in der # Cluster-Oberflaeche im Klartext lesbar. Die zugehoerige, oeffentliche # GOOGLE_PLACE_ID steht dort. GOOGLE_PLACES_API_KEY: "" # Zugangsdaten des ApiCore-Sync-Kontos (Admin -> Ernten bzw. Produkte -> # "ApiCore-Synchronisierung"), siehe .env.example. Die zugehoerige Adresse # APICORE_API_URL ist nicht geheim und steht in 01-configmap.yaml. APICORE_SYNC_EMAIL: "" APICORE_SYNC_PASSWORD: ""