Zuletzt aktualisiert 2026-07-15
Deployment & Umgebung
Für wen diese Seite ist
Diese Seite richtet sich an Personen, die meridian deployen. Alltagsbesucher brauchen diese Einstellungen nicht. Eine funktionierende Demo braucht nur OPENWEATHER_API_KEY; alles andere ist optionaler Stretch.
Erforderliche Umgebung
OPENWEATHER_API_KEY — erforderlich für Wetter und Geocode. DATABASE_PATH — SQLite-Datei (Standard ./data/meridian.db); in Produktion persistentes Volume, damit Cache und Abonnements Neustarts überleben. NEXT_PUBLIC_SHOW_HOME_STRETCH=0 blendet Dashboard-Anzeige + Journal aus (standardmäßig an). NEXT_PUBLIC_SHOW_DEMO_POPULAR_SEARCHES=0 deaktiviert Demo-Beliebte-Städte, wenn die API leer ist.
Hero-Bild-Umgebung
UNSPLASH_ACCESS_KEY — optional; erster Fotoanbieter für Standort-Heroes (nur Server, gecacht in hero_image_cache). PEXELS_API_KEY — optional dritter Anbieter nach Unsplash und Wikimedia Commons. NEXT_PUBLIC_CITY_HERO_OSM — auf 0 setzen, um Satellitenkarten-Header zu deaktivieren (Standard an). NEXT_PUBLIC_CITY_HERO_STREET_VIEW=1 — Opt-in Google Street View, wenn OSM aus. NEXT_PUBLIC_GOOGLE_MAPS_API_KEY — optional Maps Embed API Key für Street-View-Iframes.
E-Mail-Umgebung
Multi-ESP über aktiven Connector in platform_settings (Admin-Auswahl): Resend (RESEND_API_KEY, RESEND_FROM_EMAIL), SendGrid (SENDGRID_API_KEY, SENDGRID_FROM_EMAIL), Amazon SES (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SES_REGION, AWS_SES_FROM_EMAIL) oder SMTP (SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM_EMAIL, SMTP_SECURE). NEXT_PUBLIC_APP_URL — Basis-URL für Abmelde-Links in E-Mails (in .env.example; in Produktion erforderlich).
Cron und Admin
CRON_SECRET — Bearer für /api/cron/* (verweigert wenn unset in Produktion). ADMIN_SECRET — signiert Admin-Session-Cookie und verschlüsselt Connector-Geheimnisse. ADMIN_PASSWORD — Root-Login nur für ADMIN_EMAIL. Dev-Bypass nur bei NODE_ENV=development, ALLOW_DEV_ADMIN_BYPASS=1 und ADMIN_SECRET unset. Siehe docs/SECURITY.md. Cron extern planen: weekly-digests (z. B. Montagmorgen), weather-alerts (z. B. alle 15–30 Minuten).
AdSense-Umgebung
GOOGLE_ADSENSE_CLIENT_ID (ca-pub-…). GOOGLE_ADSENSE_SLOT_DASHBOARD, SLOT_HERO, SLOT_RECENT, SLOT_CITY_DETAIL, SLOT_DEFAULT — Display-Unit-IDs. AdSense Management API OAuth: GOOGLE_ADSENSE_OAUTH_CLIENT_ID, GOOGLE_ADSENSE_OAUTH_CLIENT_SECRET, optional GOOGLE_ADSENSE_OAUTH_REDIRECT_URI (Standard ${NEXT_PUBLIC_APP_URL}/api/admin/adsense/oauth/callback). Client-ID nur in Host-Secrets. /ads.txt zur Laufzeit aus Client-ID generiert.
Analytics-Umgebung
NEXT_PUBLIC_GA_MEASUREMENT_ID — optionaler GA4-Loader, wenn consent.analytics an ist. NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION — Search-Console-Meta-Tag.
npm-Skripte
dev, build, start — Next.js. lint, test, test:watch, verify — Qualitätsgate (verify = lint + test + build). copy:icons — Meteocons nach public (auch postinstall). seed:checks — North-England-Demo-Snapshots. backfill:city-slugs — city_slug auf bestehenden locations füllen. email — React-Email-Vorschau-Server. audit:deps — npm audit --omit=dev.
SQLite-Tabellen
Kern-Wetter: weather_snapshots, api_call_log. Orte und Checks: locations, location_weather_checks, weather_observations, weather_forecast_archive. Abonnements: subscriptions, subscription_send_log. Plattform: platform_settings (Singleton). Heroes: hero_image_cache. Monetarisierung: adsense_report_snapshots. Analytics: site_analytics_events. E-Mail/CMS: email_templates, cms_pages. Admin: admin_users, admin_invites, admin_password_resets, admin_audit_log. Schema in src/lib/db/index.js. Erstes Öffnen säht platform_settings mit refresh 1h, stale 2h, daily limit 1000, soft block 950, warning 800, per-minute 60.
Middleware
src/middleware.js schreibt docs.localhost-Host auf /docs um für lokale Dokumentations-Subdomain. Keine Auth-Middleware auf Haupt-App-Routen.
Browser-Speicher-Schlüssel
Aus storage-keys.js: meridian:client-id, meridian:saved-cities, meridian:checked-cities, meridian:user-location, meridian:weather-cache, meridian:theme, meridian:cookie-consent, meridian:subscriptions, meridian:tier (reserviert), meridian:consent, meridian:accessibility, meridian:city-detail-accordion, meridian:temperature-unit, meridian:preferred-locale, meridian:weather-refresh-mode. sessionStorage meridian_analytics_sid — First-Party-Analytics-Session-ID. Admin-Cookie meridian_admin_session (HttpOnly, server-set). Custom-Event meridian:storage synchronisiert Hooks nach Schreibvorgängen.