Zum Hauptinhalt springen
Alle Konfigurationen erfolgen über .env. Kopieren Sie example.env und füllen Sie Ihre Werte aus:
cp example.env .env

Konfigurationsebenen

Jede Integration hat eine Konfigurationsebene, die ihre Bedeutung angibt:
EbeneBedeutungVerhalten wenn nicht konfiguriert
ErforderlichSystemabhängigkeitSystem gibt einen Fehler aus — Chat und primäre Funktionen funktionieren nicht
EmpfohlenWichtiger FunktionsaktivatorOrdnungsgemäße Verschlechterung — die Funktion ist sichtbar nicht verfügbar, aber das System läuft
OptionalVerbesserungsfunktionTransparente Verschlechterung — System funktioniert einwandfrei, Funktion ist einfach nicht vorhanden
Hinweis: Von Administratoren konfigurierte Modelle (Admin → Seite „Modelle”) können LLM-Umgebungsvariablen ersetzen. Die Integritätsprüfung berücksichtigt beide Quellen.

Frontend (Nur lokale Entwicklung)

Das Frontend hat eine separate Env-Datei nur für die lokale Entwicklung: frontend/.env.local.
Diese Datei wird NICHT in Docker verwendet. Innerhalb des Docker-Containers leitet Next.js /api/* intern an das Python-Backend weiter (Port 8000 ist intern im Container), daher ist keine Frontend-Env-Datei erforderlich.
Für die lokale Entwicklung funktionieren die Standardwerte sofort — Sie müssen frontend/.env.local nicht erstellen, es sei denn, Ihr Backend läuft auf einem nicht-standardmäßigen Port. Falls Sie überschreiben müssen, erstellen Sie frontend/.env.local manuell:
echo 'NEXT_PUBLIC_API_URL=http://localhost:9000' > frontend/.env.local
VariableStandardBeschreibung
NEXT_PUBLIC_API_URLhttp://localhost:8000 (automatisch)Backend-URL, die der Browser für direkte API-Aufrufe verwendet (OAuth-Umleitungen, Streaming). Wird automatisch von window.location erkannt, falls nicht gesetzt — überschreiben Sie nur, wenn Ihr Backend lokal auf einem nicht-standardmäßigen Port läuft.
Hinweis zur Build-Zeit: NEXT_PUBLIC_*-Variablen werden zur pnpm build-Zeit in das JS-Bundle eingebettet. Das Ändern zur Laufzeit (z. B. über die root .env) hat keine Auswirkung — deshalb befinden sie sich nur für die lokale Entwicklung in frontend/.env.local.

LLM (erforderlich)

VariableErforderlichStandardBeschreibung
LLM_API_KEYJaAPI-Schlüssel für den LLM-Anbieter
LLM_BASE_URLNeinhttps://api.openai.com/v1Basis-URL einer beliebigen OpenAI-kompatiblen API
LLM_MODELNeingpt-4oHauptmodell – wird für Planung, Analyse und ReAct-Agent verwendet
FAST_LLM_MODELNein(fällt auf LLM_MODEL zurück)Schnelles Modell – wird für DAG-Schrittausführung verwendet (günstiger, schneller)
LLM_TEMPERATURENein0.7Standard-Sampling-Temperatur
LLM_CONTEXT_SIZENein128000Kontextfenstergröße für das Haupt-LLM
LLM_MAX_OUTPUT_TOKENSNein64000Max. Ausgabe-Token pro Aufruf für das Haupt-LLM
FAST_LLM_API_KEYNein(fällt auf LLM_API_KEY zurück)API-Schlüssel für den Anbieter des schnellen Modells. Verwenden Sie dies, wenn das schnelle Modell von einem anderen Anbieter gehostet wird als das Hauptmodell
FAST_LLM_BASE_URLNein(fällt auf LLM_BASE_URL zurück)Basis-URL für den Anbieter des schnellen Modells
FAST_LLM_TEMPERATURENein(fällt auf LLM_TEMPERATURE zurück)Sampling-Temperatur für das schnelle Modell
FAST_LLM_CONTEXT_SIZENein(fällt auf LLM_CONTEXT_SIZE zurück)Kontextfenstergröße für das schnelle LLM
FAST_LLM_MAX_OUTPUT_TOKENSNein(fällt auf LLM_MAX_OUTPUT_TOKENS zurück)Max. Ausgabe-Token pro Aufruf für das schnelle LLM
LLM_REASONING_EFFORTNein(deaktiviert)Ebene des erweiterten Denkens für unterstützte Modelle (OpenAI o-Serie, Gemini 2.5+, Claude). Werte: low, medium, high. LiteLLM übersetzt dies automatisch in das native Format jedes Anbieters. Die Gedankenkette des Modells wird in der Benutzeroberfläche im Schritt „Thinking” angezeigt.
LLM_REASONING_BUDGET_TOKENSNein(automatisch aus Effort)Explizites Token-Budget für Anthropic-Thinking (Minimum 1024). Für OpenAI/Gemini wird die Effort-Ebene direkt verwendet. Nur wirksam, wenn LLM_REASONING_EFFORT gesetzt ist.
LLM_JSON_MODE_ENABLEDNeintrueAuf false setzen, um response_format=json_object für ENV-konfigurierte Modelle zu deaktivieren. Erforderlich bei Verwendung eines Drittanbieter-Relays mit AWS Bedrock-Backend (neuere Versionen lehnen LiteLLMs Assistent-Prefill-Injection ab, was bei der 2. und nachfolgenden Agent-Iteration zu einer ValidationException führt). DB-konfigurierte Modelle überschreiben dies pro Modell über Admin → Modelle → Erweiterte Einstellungen.
REASONING_LLM_MODELNein(fällt auf LLM_MODEL zurück)Modellname für die Reasoning-Ebene. Wird für Aufgaben verwendet, die tiefe Analyse erfordern (z. B. DAG-Planung, Plan-Analyse)
REASONING_LLM_API_KEYNein(fällt auf LLM_API_KEY zurück)API-Schlüssel für den Anbieter des Reasoning-Modells
REASONING_LLM_BASE_URLNein(fällt auf LLM_BASE_URL zurück)Basis-URL für den Anbieter des Reasoning-Modells
REASONING_LLM_TEMPERATURENein(fällt auf LLM_TEMPERATURE zurück)Sampling-Temperatur für das Reasoning-Modell
REASONING_LLM_CONTEXT_SIZENein(fällt auf LLM_CONTEXT_SIZE zurück)Kontextfenstergröße für das Reasoning-Modell
REASONING_LLM_MAX_OUTPUT_TOKENSNein(fällt auf LLM_MAX_OUTPUT_TOKENS zurück)Max. Ausgabe-Token pro Aufruf für das Reasoning-Modell
REASONING_LLM_EFFORTNein(fällt auf LLM_REASONING_EFFORT zurück)Reasoning-Effort-Ebene für die Reasoning-Modell-Ebene. Werte: low, medium, high
REASONING_LLM_BUDGETNein(fällt auf LLM_REASONING_BUDGET_TOKENS zurück)Token-Budget für Reasoning (hauptsächlich Anthropic). Überschreibt das automatisch berechnete Budget für die Reasoning-Ebene
Auflösungsreihenfolge: Benutzereinstellung → Admin-Modelle (DB) → ENV-Fallback. Wenn ein Admin-Modell mit der Rolle „General” in Admin → Modelle konfiguriert ist, dienen diese ENV-Variablen nur als Fallback. Die Integritätsprüfung berücksichtigt beide Quellen.

Extended Thinking (Reasoning)

Wenn LLM_REASONING_EFFORT gesetzt ist, aktiviert FIM One die Extended-Thinking-Funktion des Modells, sodass die interne Gedankenkette im UI-Schritt “thinking” angezeigt wird. FIM One verwendet LiteLLM, um den Reasoning-Effort-Parameter automatisch in das native Format jedes Anbieters zu übersetzen.

Unterstützte Anbieter

AnbieterLLM_BASE_URLFunktionsweiseReasoning-Inhalt zurückgegeben?
OpenAI (o1 / o3 / o4-mini)https://api.openai.com/v1reasoning_effort nativ gesendetJa
Anthropic (Claude 3.7+)https://api.anthropic.com/v1/LiteLLM leitet über native Anthropic API mit thinking Parameter weiterJa
Google Gemini (2.5+)https://generativelanguage.googleapis.com/v1beta/openai/reasoning_effort auf Kompatibilitäts-Endpunkt gesendetJa
LiteLLM erkennt den Anbieter automatisch von LLM_BASE_URL und ordnet ihn dem korrekten API-Format zu. Unbekannte URLs werden als OpenAI-kompatibel behandelt.

Wichtige Einschränkungen

Third-Party-Proxies / benutzerdefinierte Endpunkte sind nicht garantiert. Wenn Ihr LLM_BASE_URL auf einen Third-Party-API-Proxy verweist (z. B. OpenRouter, one-api, benutzerdefiniertes Gateway), wird LiteLLM versuchen, basierend auf der URL korrekt weiterzuleiten. Wenn Ihr Proxy jedoch ein nicht standardisiertes Format erwartet, funktioniert das Reasoning möglicherweise nicht wie erwartet. Konsultieren Sie die Dokumentation des Proxys für das erwartete Parameterformat.

Temperatureinschränkungen mit Reasoning

Einige Anbieter haben Temperatureinschränkungen, wenn Reasoning aktiv ist:
  • Anthropic: Erfordert temperature=1, wenn erweitertes Denken aktiviert ist. Bei Verwendung von Anthropic mit erweitertem Denken müssen Sie LLM_TEMPERATURE=1 setzen — Anthropic lehnt andere Werte ab, wenn Denken aktiviert ist.
  • OpenAI GPT-5.x: Unterstützt nur temperature=1 zu allen Zeiten. LiteLLMs drop_params-Filterung handhabt dies automatisch — nicht unterstützte Temperaturwerte werden stillschweigend gelöscht. Für GPT-5.x ist keine Benutzeraktion erforderlich.

Wie LLM_REASONING_BUDGET_TOKENS funktioniert

Diese Variable ist hauptsächlich für den Anthropic-Pfad relevant. Wenn gesetzt, überschreibt sie das automatisch berechnete Budget und wird als budget_tokens im thinking-Parameter über LiteLLM gesendet. Wenn nicht gesetzt, wird das Budget aus LLM_MAX_OUTPUT_TOKENS x Aufwandsverhältnis abgeleitet:
LLM_REASONING_EFFORTBudget-VerhältnisBeispiel (max_tokens = 64000)
low20%12.800 Token
medium50%32.000 Token
high80%51.200 Token
Das Mindestbudget beträgt 1.024 Token (Anthropics hartes Minimum). Für OpenAI und Gemini verwaltet der Anbieter die Token-Zuweisung intern basierend auf der reasoning_effort-Ebene — LLM_REASONING_BUDGET_TOKENS hat keine Auswirkung.

Agent-Ausführung

VariableErforderlichStandardBeschreibung
REACT_MAX_ITERATIONSNein20Max. Tool-Call-Iterationen pro ReAct-Anfrage
MAX_CONCURRENCYNein5Max. parallele Schritte im DAG-Executor
DAG_STEP_MAX_ITERATIONSNein15Max. Tool-Call-Iterationen innerhalb jedes DAG-Schritts
DAG_MAX_REPLAN_ROUNDSNein3Max. autonome Neuplanungsversuche, wenn das Ziel nicht erreicht wird
DAG_REPLAN_STOP_CONFIDENCENein0.8Wiederholungen stoppen, wenn die Agent-Konfidenz, dass das Ziel unerreichbar ist, diesen Schwellenwert überschreitet (0.0 = nie früh stoppen, 1.0 = bei jedem Fehler stoppen)
DAG_TOOL_CACHENeintrueCache identischer Tool-Aufrufe innerhalb einer einzelnen DAG-Ausführung. Pro-Schlüssel-Async-Sperren verhindern Thundering Herd. Auf false setzen, um Caching zu deaktivieren
DAG_STEP_VERIFICATIONNeinfalseLLM-basierte Qualitätsprüfung nach Abschluss jedes DAG-Schritts aktivieren. Bei Fehler wird der Schritt einmal mit Verifikations-Feedback wiederholt. Erhöht die Latenz, verbessert aber die Genauigkeit der Ergebnisse
AUTO_ROUTINGNeintrueAutomatische Abfrageklassifizierung aktivieren. Ein schnelles LLM analysiert jede Abfrage und leitet sie entweder an ReAct (Einzelschritt) oder DAG (Mehrschritte) Ausführungsmodus weiter. Der /api/auto-Endpunkt verwendet dies. Auf false setzen, um explizite Modusauswahl zu erfordern

Web-Tools (Optional)

VariableErforderlichStandardBeschreibung
JINA_API_KEYNeinJina API-Schlüssel — wird auch für Embedding und Reranker verwendet; erhalten Sie Ihren unter jina.ai
TAVILY_API_KEYNeinTavily Search API-Schlüssel (wird automatisch ausgewählt, wenn gesetzt und WEB_SEARCH_PROVIDER nicht gesetzt ist)
BRAVE_API_KEYNeinBrave Search API-Schlüssel (wird automatisch ausgewählt, wenn gesetzt und WEB_SEARCH_PROVIDER nicht gesetzt ist)
WEB_SEARCH_PROVIDERNeinjinaSuchanbieterwähler: jina / tavily / brave
WEB_FETCH_PROVIDERNeinjina (falls Schlüssel gesetzt, sonst httpx)Fetch-Anbieter: jina / httpx

RAG & Wissensdatenbank (Empfohlen)

VariableErforderlichStandardBeschreibung
EMBEDDING_MODELNeinjina-embeddings-v3Embedding-Modellkennung
EMBEDDING_DIMENSIONNein1024Dimension des Embedding-Vektors
EMBEDDING_API_KEYNein(verwendet JINA_API_KEY)API-Schlüssel für einen anderen Embedding-Anbieter überschreiben
EMBEDDING_BASE_URLNeinhttps://api.jina.ai/v1Basis-URL für einen anderen Embedding-Anbieter überschreiben
RETRIEVAL_MODENeingroundinggrounding (vollständige Pipeline mit Zitaten/Konflikten/Konfidenz) oder simple (einfaches RAG)
RERANKER_MODELNeinjina-reranker-v2-base-multilingualReranker-Modellkennung
RERANKER_PROVIDERNeinjinaReranker-Anbieter: jina / cohere / openai
COHERE_API_KEYNeinCohere API-Schlüssel (wählt automatisch Cohere-Reranker aus, wenn gesetzt)
COHERE_RERANKER_MODELNeinrerank-multilingual-v3.0Cohere-Reranker-Modell
VECTOR_STORE_DIRNein./data/vector_storeVerzeichnis für LanceDB-Vektorspeicherdaten
Embedding wird empfohlen für Wissensdatenbank-Funktionen. Reranker ist optional — die Suche funktioniert ohne ihn mit Fusion-Scoring.

Code-Ausführung

VariableErforderlichStandardBeschreibung
CODE_EXEC_BACKENDNeinlocallocal (direkte Host-Ausführung) oder docker (isolierte Container)
DOCKER_PYTHON_IMAGENeinpython:3.11-slimDocker-Image für Python-Ausführung
DOCKER_NODE_IMAGENeinnode:20-slimDocker-Image für Node.js-Ausführung
DOCKER_SHELL_IMAGENeinpython:3.11-slimDocker-Image für Shell-Ausführung
DOCKER_MEMORYNein(Docker-Standard)RAM-Limit pro Container (z. B. 256m, 512m, 1g)
DOCKER_CPUSNein(Docker-Standard)CPU-Kontingent pro Container (z. B. 0.5, 1.0)
SANDBOX_TIMEOUTNein120Standard-Ausführungs-Timeout in Sekunden
DOCKER_HOST_DATA_DIRNein(nicht gesetzt)Host-seitiger absoluter Pfad des ./data Volume-Mounts. Erforderlich für DooD-Bereitstellungen (Docker-outside-of-Docker); docker-compose.yml setzt dies automatisch über ${PWD}/data.
Sicherheit: Der local-Modus führt von KI generierte Code direkt auf dem Host aus. Für internetgestützte oder Multi-User-Bereitstellungen sollten Sie immer CODE_EXEC_BACKEND=docker setzen.

Werkzeug-Artefakte

Größenlimits für Dateien, die durch Werkzeugausführung erstellt werden (Code-Ausführung, Template-Rendering, Bildgenerierung).
VariableErforderlichStandardBeschreibung
MAX_ARTIFACT_SIZENein10485760 (10 MB)Maximale Größe einer einzelnen Artefaktdatei in Bytes
MAX_ARTIFACTS_TOTALNein52428800 (50 MB)Maximale Gesamtgröße der Artefakte pro Sitzung in Bytes

Bildgenerierung (Optional)

VariableErforderlichStandardBeschreibung
IMAGE_GEN_PROVIDERNeingooglegoogle (Gemini native API) oder openai (OpenAI-kompatible /v1/images/generations)
IMAGE_GEN_API_KEYNeinGoogle AI Studio Schlüssel (google) oder Proxy/OpenAI API Schlüssel (openai)
IMAGE_GEN_MODELNeingemini-3.1-flash-image-previewBildgenerierungsmodell (z. B. dall-e-3, gemini-nano-banana-2)
IMAGE_GEN_BASE_URLNein(pro Anbieter)Google: https://generativelanguage.googleapis.com/v1beta; OpenAI: https://api.openai.com/v1

Email (SMTP) (Empfohlen)

Registriert das email_send Built-in-Tool automatisch, wenn SMTP_HOST, SMTP_USER und SMTP_PASS alle gesetzt sind.
VariableErforderlichStandardBeschreibung
SMTP_HOSTBed.SMTP-Server-Hostname
SMTP_PORTNein465SMTP-Port
SMTP_SSLNeinsslTLS-Modus: ssl (Port 465) / tls (STARTTLS, Port 587) / "" (einfach)
SMTP_USERBed.SMTP-Benutzername
SMTP_PASSBed.SMTP-Passwort
SMTP_FROMNein(verwendet SMTP_USER)Absenderadresse im From-Header
SMTP_FROM_NAMENeinAnzeigename im From-Header
SMTP_ALLOWED_DOMAINSNeinKommagetrennte Domain-Allowlist (z. B. example.com,corp.io); blockiert Empfänger außerhalb der aufgelisteten Domains
SMTP_ALLOWED_ADDRESSESNeinKommagetrennte Allowlist für exakte Adressen; kombiniert mit SMTP_ALLOWED_DOMAINS; beide nicht gesetzt, um jeden Empfänger zuzulassen (nicht empfohlen für gemeinsame Postfächer)

Konnektoren

VariableErforderlichStandardBeschreibung
CONNECTOR_RESPONSE_MAX_CHARSNein50000Maximale Zeichen für Nicht-Array-JSON- / Klartext-Konnektorantworten
CONNECTOR_RESPONSE_MAX_ITEMSNein10Maximale Array-Elemente, die beibehalten werden, wenn die Konnektorantwort ein JSON-Array ist
CREDENTIAL_ENCRYPTION_KEYNein(nicht gesetzt)Fernet-Verschlüsselungsschlüssel für Konnektorguthaben-Blobs. Wenn gesetzt, werden Auth-Token in connector_credentials im Ruhezustand verschlüsselt. Wenn nicht gesetzt, werden Guthaben als Klartext-JSON gespeichert (abwärtskompatibel). Das Ändern dieses Schlüssels macht alle vorhandenen verschlüsselten Guthaben ungültig.

Plattform

VariableErforderlichStandardBeschreibung
DATABASE_URLNeinsqlite+aiosqlite:///./data/fim_one.dbDatenbankverbindungszeichenfolge. SQLite (keine Konfiguration erforderlich): sqlite+aiosqlite:///./data/fim_one.db. PostgreSQL (Produktion): postgresql+asyncpg://user:pass@localhost:5432/fim_one. Docker Compose konfiguriert PostgreSQL automatisch.
JWT_SECRET_KEYNeinCHANGE_MEGeheimer Schlüssel für JWT-Token-Signierung. Der Platzhalterwert CHANGE_ME (oder ein beliebiger älterer Standard) löst beim ersten Start die automatische Generierung eines sicheren 256-Bit-Zufallsschlüssels aus, der in .env zurückgeschrieben wird. Legen Sie ihn in der Produktion explizit fest, um Token über Neustarts und Replikas hinweg gültig zu halten.
CORS_ORIGINSNeinKommagetrennte Liste zusätzlicher zulässiger CORS-Ursprünge über die Standard-Localhost-Einträge hinaus. Erforderlich, wenn das Frontend auf einer Nicht-Localhost-Domain ausgeführt wird (z. B. https://app.example.com).
UPLOADS_DIRNein./uploadsVerzeichnis für hochgeladene Dateien
MAX_UPLOAD_SIZE_MBNein50Maximale Dateigröße beim Upload in Megabyte (Backend-Durchsetzung)
NEXT_PUBLIC_MAX_UPLOAD_SIZE_MBNein50Maximale Dateigröße beim Upload in der Frontend-UI. Build-Zeit-Variable — muss mit MAX_UPLOAD_SIZE_MB übereinstimmen.
MCP_SERVERSNeinJSON-Array von MCP-Serverkonfigurationen (erfordert uv sync --extra mcp)
ALLOW_STDIO_MCPNeinfalseStdio-MCP-Server zulassen. Setzen Sie auf true nur für vertrauenswürdige lokale Bereitstellungen
ALLOWED_STDIO_COMMANDSNeinnpx,uvx,node,python,python3,deno,bunKommagetrennte Liste zulässiger Basisbefehle für Stdio-MCP-Server. Wirksam nur, wenn ALLOW_STDIO_MCP=true
LOG_LEVELNeinINFOProtokollierungsstufe: DEBUG / INFO / WARNING / ERROR / CRITICAL
REDIS_URLNeinRedis-Verbindungs-URL für Worker-übergreifendes Interrupt-Relay. Wird von Docker Compose automatisch konfiguriert. Nur für lokale Multi-Worker-Setups erforderlich (WORKERS>1).
WORKERSNein1Uvicorn-Worker-Prozesse. 1 ist sicher und benötigt keine externen Dienste. >1 erfordert PostgreSQL (SQLite ist Single-Writer). Authentifizierung, OAuth und Dateivorgänge sind vollständig Multi-Worker-sicher (JWT-basiert). Einschränkung: Ohne REDIS_URL funktioniert Interrupt/Inject im Datenstrom nur innerhalb desselben Worker-Prozesses. Docker Compose konfiguriert Redis automatisch.

OAuth (Optional)

Wenn sowohl CLIENT_ID als auch CLIENT_SECRET für einen Anbieter gesetzt sind, zeigt die Anmeldeseite automatisch die entsprechende OAuth-Schaltfläche an.
VariableErforderlichStandardBeschreibung
GITHUB_CLIENT_IDNeinGitHub OAuth App Client ID. Erstellen Sie diese unter github.com/settings/developers → OAuth Apps
GITHUB_CLIENT_SECRETNeinGitHub OAuth App Client Secret
GOOGLE_CLIENT_IDNeinGoogle OAuth Client ID. Erstellen Sie diese unter console.cloud.google.com/apis/credentials
GOOGLE_CLIENT_SECRETNeinGoogle OAuth Client Secret
DISCORD_CLIENT_IDNeinDiscord OAuth2 Client ID. Erstellen Sie diese unter discord.com/developers
DISCORD_CLIENT_SECRETNeinDiscord OAuth2 Client Secret
FEISHU_APP_IDNeinFeishu (Lark) App ID. Erstellen Sie diese unter open.feishu.cn. Erfordert die Berechtigung contact:user.email:readonly
FEISHU_APP_SECRETNeinFeishu (Lark) App Secret
FRONTEND_URLProdhttp://localhost:3000Wo der Browser nach Abschluss von OAuth landet. Muss in der Produktion gesetzt werden (z. B. https://yourdomain.com)
API_BASE_URLProdhttp://localhost:8000Extern erreichbare Backend-URL, wird zum Erstellen von OAuth-Callback-URLs verwendet. Muss in der Produktion gesetzt werden
NEXT_PUBLIC_API_URLProd(automatisch erkannt als <hostname>:8000)Browser-seitige API-Basis-URL für OAuth-Umleitungen. Dies ist eine Frontend-Build-Zeit-Variable — setzen Sie diese in frontend/.env.local für lokale Entwicklung oder übergeben Sie sie als Docker-Build-Argument für benutzerdefinierte Produktionsbereitstellungen. Die automatische Erkennung funktioniert für Standard-Reverse-Proxy-Setups (Port 80/443).
Prod = lokal optional (Standardwerte funktionieren), aber erforderlich für jede Bereitstellung mit Internetzugriff.

OAuth-Callback-URLs zum Registrieren bei jedem Anbieter

Das Backend konstruiert Callback-URLs als: {API_BASE_URL}/api/auth/oauth/{provider}/callback
AnbieterZu registrierende Callback-URL
GitHubhttps://yourdomain.com/api/auth/oauth/github/callback
Googlehttps://yourdomain.com/api/auth/oauth/google/callback
Discordhttps://yourdomain.com/api/auth/oauth/discord/callback

Analytics (Optional)

Alle Analytics-Anbieter sind optional. Legen Sie eine beliebige Kombination fest — alle aktiven Anbieter werden gleichzeitig geladen. Lassen Sie alle leer, um Analytics vollständig zu deaktivieren (empfohlen für lokale Entwicklung).
VariableErforderlichStandardBeschreibung
NEXT_PUBLIC_GA_MEASUREMENT_IDNeinGoogle Analytics 4 Measurement ID (z. B. G-XXXXXXXXXX). Rufen Sie Ihre ID unter analytics.google.com ab
NEXT_PUBLIC_UMAMI_SCRIPT_URLNeinUmami Analytics Script URL (z. B. https://your-umami.com/script.js). Selbst gehostete, datenschutzfreundliche Alternative — umami.is
NEXT_PUBLIC_UMAMI_WEBSITE_IDNeinUmami Website ID. Erforderlich, wenn NEXT_PUBLIC_UMAMI_SCRIPT_URL gesetzt ist
NEXT_PUBLIC_PLAUSIBLE_DOMAINNeinPlausible Analytics Domain (z. B. yourdomain.com). Leichtgewichtig, datenschutzfreundlich — plausible.io
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URLNeinhttps://plausible.io/js/script.jsBenutzerdefinierte Plausible Script URL für selbst gehostete Instanzen
Alle NEXT_PUBLIC_* Analytics-Variablen sind Build-Zeit — Änderungen erfordern einen Frontend-Rebuild, um wirksam zu werden.