Deploy: .env.example vervollstaendigt + Deploy-Runbook (R5.1/R5.2)
Alle projektspezifischen Env-Keys dokumentiert (Multi-Domain, Legacy-DBs, Stripe/Billing, KI, Sanctum, Newsletter, Vite); Runbook fuers neue Laravel-System mit Prod-.env-Solltabelle, Release-Schritten, Queue-Worker (classification), Cron-Tasks inkl. Ausfall-Folgen, Stripe-Webhook, Erst-Einrichtung, Smoke-Test und Rollback. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
7494f19b4a
commit
f5bf282027
3 changed files with 260 additions and 10 deletions
113
.env.example
113
.env.example
|
|
@ -1,8 +1,8 @@
|
|||
APP_NAME=Laravel
|
||||
APP_NAME=Pressekonto
|
||||
APP_ENV=local
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_URL=https://pressekonto.test
|
||||
|
||||
APP_LOCALE=de
|
||||
APP_FALLBACK_LOCALE=de
|
||||
|
|
@ -26,6 +26,34 @@ LOG_STACK=single
|
|||
LOG_DEPRECATIONS_CHANNEL=null
|
||||
LOG_LEVEL=debug
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Multi-Domain-Setup (config/domains.php)
|
||||
# Hub: pressekonto (Portal-Backend + Hub-Landing) — Spokes: presseecho,
|
||||
# businessportal24. Prod: .test durch echte Domains ersetzen
|
||||
# (pressekonto.de, presseecho.de, businessportal24.com).
|
||||
# ---------------------------------------------------------------------------
|
||||
APP_PROTOCOL="https://"
|
||||
|
||||
APP_PORTAL_NAME="pressekonto.test"
|
||||
APP_PORTAL_URL="https://pressekonto.test"
|
||||
APP_PORTAL_PRIMARY="#526266"
|
||||
APP_PORTAL_SECONDARY="#82a0a7"
|
||||
# APP_PORTAL_ASSET_URL=
|
||||
|
||||
APP_PRESSEECHO_NAME=presseecho.test
|
||||
APP_PRESSEECHO_URL=https://presseecho.test
|
||||
APP_PRESSEECHO_PRIMARY="#345636"
|
||||
APP_PRESSEECHO_SECONDARY="#6b8f71"
|
||||
|
||||
APP_BUSINESSPORTAL_NAME=businessportal24.test
|
||||
APP_BUSINESSPORTAL_URL=https://businessportal24.test
|
||||
APP_BUSINESSPORTAL_PRIMARY="#cf3628"
|
||||
APP_BUSINESSPORTAL_SECONDARY="#f0834a"
|
||||
|
||||
# Sanctum: Hosts, die stateful (Session-Cookie) auf die API zugreifen dürfen.
|
||||
# Prod: echte Domains kommasepariert eintragen.
|
||||
SANCTUM_STATEFUL_DOMAINS=pressekonto.test,presseecho.test,businessportal24.test
|
||||
|
||||
DB_CONNECTION=sqlite
|
||||
# DB_HOST=127.0.0.1
|
||||
# DB_PORT=3306
|
||||
|
|
@ -33,11 +61,27 @@ DB_CONNECTION=sqlite
|
|||
# DB_USERNAME=root
|
||||
# DB_PASSWORD=
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Legacy-Datenbanken (Alt-Systeme, read-only für Migration/Abgleich).
|
||||
# Die businessportal-Verbindung ist ein Snapshot-Dump, nicht live.
|
||||
# ---------------------------------------------------------------------------
|
||||
DB_HOST_BUSINESSPORTAL=127.0.0.1
|
||||
DB_DATABASE_BUSINESSPORTAL=
|
||||
DB_USERNAME_BUSINESSPORTAL=
|
||||
DB_PASSWORD_BUSINESSPORTAL=
|
||||
|
||||
DB_HOST_PRESSEECHO=127.0.0.1
|
||||
DB_DATABASE_PRESSEECHO=
|
||||
DB_USERNAME_PRESSEECHO=
|
||||
DB_PASSWORD_PRESSEECHO=
|
||||
|
||||
SESSION_DRIVER=database
|
||||
SESSION_LIFETIME=120
|
||||
SESSION_ENCRYPT=false
|
||||
SESSION_PATH=/
|
||||
SESSION_DOMAIN=null
|
||||
# Prod: true setzen (Cookies nur über HTTPS).
|
||||
# SESSION_SECURE_COOKIE=true
|
||||
|
||||
BROADCAST_CONNECTION=log
|
||||
FILESYSTEM_DISK=local
|
||||
|
|
@ -53,6 +97,7 @@ REDIS_HOST=127.0.0.1
|
|||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
# Prod: echten Mailer konfigurieren — Default `log` versendet NICHTS.
|
||||
MAIL_MAILER=log
|
||||
MAIL_SCHEME=null
|
||||
MAIL_HOST=127.0.0.1
|
||||
|
|
@ -69,6 +114,64 @@ AWS_BUCKET=
|
|||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
VITE_APP_NAME="${APP_NAME}"
|
||||
# Lokaler Vite-Dev-Server (dual-port Setup, siehe VITE-SETUP.md).
|
||||
VITE_DEV_SERVER_URL=https://assets.pressekonto.test
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Stripe / Billing (Laravel Cashier)
|
||||
# Prod: Live-Keys + Live-Preis-IDs eintragen [EXTERN: R1.2].
|
||||
# ---------------------------------------------------------------------------
|
||||
STRIPE_KEY=
|
||||
STRIPE_SECRET=
|
||||
STRIPE_WEBHOOK_SECRET=
|
||||
# Stripe-Preis-ID des Einzelkaufs (eine PM, 19 €).
|
||||
STRIPE_PRICE_SINGLE_PM=
|
||||
CASHIER_CURRENCY=eur
|
||||
CASHIER_CURRENCY_LOCALE=de_DE
|
||||
|
||||
# Umsatzsteuer/Rechnungsangaben.
|
||||
# BILLING_VAT_RATE=0.19
|
||||
# BILLING_DEFAULT_CURRENCY=EUR
|
||||
# BILLING_MANUAL_DUE_DAYS=14
|
||||
BILLING_OWN_VAT_ID=
|
||||
|
||||
# Abo-/Bestandsschutz-Gate (WS-5). Default (auch ohne Env-Key) ist true:
|
||||
# Einreichen zur Prüfung erfordert ein aktives Abo, einen bezahlten Einzelkauf
|
||||
# oder Bestandsschutz (grandfathered) — siehe User::hasActiveBooking().
|
||||
# Nur für lokale Entwicklung bewusst auf false setzen (Gate offen für alle).
|
||||
BILLING_ENFORCE_BOOKING=true
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# KI: Klassifikation (Red-Flag-Gate) + Content-Score (config/scoring.php).
|
||||
# Ohne OPENAI_API_KEY laufen die Jobs nicht — Queue-Worker erforderlich.
|
||||
# ---------------------------------------------------------------------------
|
||||
OPENAI_API_KEY=
|
||||
# OPENAI_API_URL=
|
||||
# OPENAI_MODEL=
|
||||
# OPENAI_TIMEOUT=30
|
||||
|
||||
# CLASSIFICATION_PROVIDER=openai
|
||||
# CLASSIFICATION_MODEL=
|
||||
# CLASSIFICATION_TIMEOUT=15
|
||||
# CLASSIFICATION_GREEN_DELAY=0
|
||||
# CLASSIFICATION_YELLOW_MANUAL=true
|
||||
|
||||
# CONTENT_SCORE_PROVIDER=openai
|
||||
# CONTENT_SCORE_MODEL=
|
||||
# CONTENT_SCORE_TIMEOUT=30
|
||||
# CONTENT_SCORE_HOCHWERTIG=80
|
||||
# CONTENT_SCORE_GEPRUEFT=60
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Newsletter-Sync (config/newsletter.php). Provider `placeholder` bindet den
|
||||
# Null-Client; enabled=true mit anderem Provider wirft bewusst, bis eine
|
||||
# echte Anbindung implementiert ist.
|
||||
# ---------------------------------------------------------------------------
|
||||
NEWSLETTER_SYNC_ENABLED=false
|
||||
NEWSLETTER_SYNC_PROVIDER=placeholder
|
||||
NEWSLETTER_SYNC_ENDPOINT=
|
||||
NEWSLETTER_SYNC_API_KEY=
|
||||
# NEWSLETTER_SYNC_TIMEOUT=10
|
||||
|
||||
# Google-Login (Laravel Socialite). Die Redirect-URI muss in der Google Cloud
|
||||
# Console EXAKT der Callback-URL der Portal-Domain entsprechen (Login läuft auf
|
||||
|
|
@ -84,9 +187,3 @@ GOOGLE_REDIRECT_URI=https://pressekonto.com/auth/google/callback
|
|||
CONTACT_EMAIL_PRESSEKONTO=
|
||||
CONTACT_EMAIL_PRESSEECHO=
|
||||
CONTACT_EMAIL_BUSINESSPORTAL=
|
||||
|
||||
# Abo-/Bestandsschutz-Gate (WS-5). Default (auch ohne Env-Key) ist true:
|
||||
# Einreichen zur Prüfung erfordert ein aktives Abo, einen bezahlten Einzelkauf
|
||||
# oder Bestandsschutz (grandfathered) — siehe User::hasActiveBooking().
|
||||
# Nur für lokale Entwicklung bewusst auf false setzen (Gate offen für alle).
|
||||
BILLING_ENFORCE_BOOKING=true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue