.env. Kopieren Sie example.env und füllen Sie Ihre Werte aus:
Konfigurationsebenen
Jede Integration hat eine Konfigurationsebene, die ihre Bedeutung angibt:| Ebene | Bedeutung | Verhalten wenn nicht konfiguriert |
|---|---|---|
| Erforderlich | Systemabhängigkeit | System gibt einen Fehler aus — Chat und primäre Funktionen funktionieren nicht |
| Empfohlen | Wichtiger Funktionsaktivator | Ordnungsgemäße Verschlechterung — die Funktion ist sichtbar nicht verfügbar, aber das System läuft |
| Optional | Verbesserungsfunktion | Transparente 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:
| Variable | Standard | Beschreibung |
|---|---|---|
NEXT_PUBLIC_API_URL | http://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 zurpnpm 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 infrontend/.env.local.
LLM (erforderlich)
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
LLM_API_KEY | Ja | — | API-Schlüssel für den LLM-Anbieter |
LLM_BASE_URL | Nein | https://api.openai.com/v1 | Basis-URL einer beliebigen OpenAI-kompatiblen API |
LLM_MODEL | Nein | gpt-4o | Hauptmodell – wird für Planung, Analyse und ReAct-Agent verwendet |
FAST_LLM_MODEL | Nein | (fällt auf LLM_MODEL zurück) | Schnelles Modell – wird für DAG-Schrittausführung verwendet (günstiger, schneller) |
LLM_TEMPERATURE | Nein | 0.7 | Standard-Sampling-Temperatur |
LLM_CONTEXT_SIZE | Nein | 128000 | Kontextfenstergröße für das Haupt-LLM |
LLM_MAX_OUTPUT_TOKENS | Nein | 64000 | Max. Ausgabe-Token pro Aufruf für das Haupt-LLM |
FAST_LLM_API_KEY | Nein | (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_URL | Nein | (fällt auf LLM_BASE_URL zurück) | Basis-URL für den Anbieter des schnellen Modells |
FAST_LLM_TEMPERATURE | Nein | (fällt auf LLM_TEMPERATURE zurück) | Sampling-Temperatur für das schnelle Modell |
FAST_LLM_CONTEXT_SIZE | Nein | (fällt auf LLM_CONTEXT_SIZE zurück) | Kontextfenstergröße für das schnelle LLM |
FAST_LLM_MAX_OUTPUT_TOKENS | Nein | (fällt auf LLM_MAX_OUTPUT_TOKENS zurück) | Max. Ausgabe-Token pro Aufruf für das schnelle LLM |
LLM_REASONING_EFFORT | Nein | (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_TOKENS | Nein | (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_ENABLED | Nein | true | Auf 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_MODEL | Nein | (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_KEY | Nein | (fällt auf LLM_API_KEY zurück) | API-Schlüssel für den Anbieter des Reasoning-Modells |
REASONING_LLM_BASE_URL | Nein | (fällt auf LLM_BASE_URL zurück) | Basis-URL für den Anbieter des Reasoning-Modells |
REASONING_LLM_TEMPERATURE | Nein | (fällt auf LLM_TEMPERATURE zurück) | Sampling-Temperatur für das Reasoning-Modell |
REASONING_LLM_CONTEXT_SIZE | Nein | (fällt auf LLM_CONTEXT_SIZE zurück) | Kontextfenstergröße für das Reasoning-Modell |
REASONING_LLM_MAX_OUTPUT_TOKENS | Nein | (fällt auf LLM_MAX_OUTPUT_TOKENS zurück) | Max. Ausgabe-Token pro Aufruf für das Reasoning-Modell |
REASONING_LLM_EFFORT | Nein | (fällt auf LLM_REASONING_EFFORT zurück) | Reasoning-Effort-Ebene für die Reasoning-Modell-Ebene. Werte: low, medium, high |
REASONING_LLM_BUDGET | Nein | (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)
WennLLM_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
| Anbieter | LLM_BASE_URL | Funktionsweise | Reasoning-Inhalt zurückgegeben? |
|---|---|---|---|
| OpenAI (o1 / o3 / o4-mini) | https://api.openai.com/v1 | reasoning_effort nativ gesendet | Ja |
| Anthropic (Claude 3.7+) | https://api.anthropic.com/v1/ | LiteLLM leitet über native Anthropic API mit thinking Parameter weiter | Ja |
| Google Gemini (2.5+) | https://generativelanguage.googleapis.com/v1beta/openai/ | reasoning_effort auf Kompatibilitäts-Endpunkt gesendet | Ja |
LLM_BASE_URL und ordnet ihn dem korrekten API-Format zu. Unbekannte URLs werden als OpenAI-kompatibel behandelt.
Wichtige Einschränkungen
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 SieLLM_TEMPERATURE=1setzen — Anthropic lehnt andere Werte ab, wenn Denken aktiviert ist. - OpenAI GPT-5.x: Unterstützt nur
temperature=1zu allen Zeiten. LiteLLMsdrop_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_EFFORT | Budget-Verhältnis | Beispiel (max_tokens = 64000) |
|---|---|---|
low | 20% | 12.800 Token |
medium | 50% | 32.000 Token |
high | 80% | 51.200 Token |
reasoning_effort-Ebene — LLM_REASONING_BUDGET_TOKENS hat keine Auswirkung.
Agent-Ausführung
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
REACT_MAX_ITERATIONS | Nein | 20 | Max. Tool-Call-Iterationen pro ReAct-Anfrage |
MAX_CONCURRENCY | Nein | 5 | Max. parallele Schritte im DAG-Executor |
DAG_STEP_MAX_ITERATIONS | Nein | 15 | Max. Tool-Call-Iterationen innerhalb jedes DAG-Schritts |
DAG_MAX_REPLAN_ROUNDS | Nein | 3 | Max. autonome Neuplanungsversuche, wenn das Ziel nicht erreicht wird |
DAG_REPLAN_STOP_CONFIDENCE | Nein | 0.8 | Wiederholungen 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_CACHE | Nein | true | Cache 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_VERIFICATION | Nein | false | LLM-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_ROUTING | Nein | true | Automatische 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)
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
JINA_API_KEY | Nein | — | Jina API-Schlüssel — wird auch für Embedding und Reranker verwendet; erhalten Sie Ihren unter jina.ai |
TAVILY_API_KEY | Nein | — | Tavily Search API-Schlüssel (wird automatisch ausgewählt, wenn gesetzt und WEB_SEARCH_PROVIDER nicht gesetzt ist) |
BRAVE_API_KEY | Nein | — | Brave Search API-Schlüssel (wird automatisch ausgewählt, wenn gesetzt und WEB_SEARCH_PROVIDER nicht gesetzt ist) |
WEB_SEARCH_PROVIDER | Nein | jina | Suchanbieterwähler: jina / tavily / brave |
WEB_FETCH_PROVIDER | Nein | jina (falls Schlüssel gesetzt, sonst httpx) | Fetch-Anbieter: jina / httpx |
RAG & Wissensdatenbank (Empfohlen)
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
EMBEDDING_MODEL | Nein | jina-embeddings-v3 | Embedding-Modellkennung |
EMBEDDING_DIMENSION | Nein | 1024 | Dimension des Embedding-Vektors |
EMBEDDING_API_KEY | Nein | (verwendet JINA_API_KEY) | API-Schlüssel für einen anderen Embedding-Anbieter überschreiben |
EMBEDDING_BASE_URL | Nein | https://api.jina.ai/v1 | Basis-URL für einen anderen Embedding-Anbieter überschreiben |
RETRIEVAL_MODE | Nein | grounding | grounding (vollständige Pipeline mit Zitaten/Konflikten/Konfidenz) oder simple (einfaches RAG) |
RERANKER_MODEL | Nein | jina-reranker-v2-base-multilingual | Reranker-Modellkennung |
RERANKER_PROVIDER | Nein | jina | Reranker-Anbieter: jina / cohere / openai |
COHERE_API_KEY | Nein | — | Cohere API-Schlüssel (wählt automatisch Cohere-Reranker aus, wenn gesetzt) |
COHERE_RERANKER_MODEL | Nein | rerank-multilingual-v3.0 | Cohere-Reranker-Modell |
VECTOR_STORE_DIR | Nein | ./data/vector_store | Verzeichnis 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
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
CODE_EXEC_BACKEND | Nein | local | local (direkte Host-Ausführung) oder docker (isolierte Container) |
DOCKER_PYTHON_IMAGE | Nein | python:3.11-slim | Docker-Image für Python-Ausführung |
DOCKER_NODE_IMAGE | Nein | node:20-slim | Docker-Image für Node.js-Ausführung |
DOCKER_SHELL_IMAGE | Nein | python:3.11-slim | Docker-Image für Shell-Ausführung |
DOCKER_MEMORY | Nein | (Docker-Standard) | RAM-Limit pro Container (z. B. 256m, 512m, 1g) |
DOCKER_CPUS | Nein | (Docker-Standard) | CPU-Kontingent pro Container (z. B. 0.5, 1.0) |
SANDBOX_TIMEOUT | Nein | 120 | Standard-Ausführungs-Timeout in Sekunden |
DOCKER_HOST_DATA_DIR | Nein | (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: Derlocal-Modus führt von KI generierte Code direkt auf dem Host aus. Für internetgestützte oder Multi-User-Bereitstellungen sollten Sie immerCODE_EXEC_BACKEND=dockersetzen.
Werkzeug-Artefakte
Größenlimits für Dateien, die durch Werkzeugausführung erstellt werden (Code-Ausführung, Template-Rendering, Bildgenerierung).| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
MAX_ARTIFACT_SIZE | Nein | 10485760 (10 MB) | Maximale Größe einer einzelnen Artefaktdatei in Bytes |
MAX_ARTIFACTS_TOTAL | Nein | 52428800 (50 MB) | Maximale Gesamtgröße der Artefakte pro Sitzung in Bytes |
Bildgenerierung (Optional)
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
IMAGE_GEN_PROVIDER | Nein | google | google (Gemini native API) oder openai (OpenAI-kompatible /v1/images/generations) |
IMAGE_GEN_API_KEY | Nein | — | Google AI Studio Schlüssel (google) oder Proxy/OpenAI API Schlüssel (openai) |
IMAGE_GEN_MODEL | Nein | gemini-3.1-flash-image-preview | Bildgenerierungsmodell (z. B. dall-e-3, gemini-nano-banana-2) |
IMAGE_GEN_BASE_URL | Nein | (pro Anbieter) | Google: https://generativelanguage.googleapis.com/v1beta; OpenAI: https://api.openai.com/v1 |
Email (SMTP) (Empfohlen)
Registriert dasemail_send Built-in-Tool automatisch, wenn SMTP_HOST, SMTP_USER und SMTP_PASS alle gesetzt sind.
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
SMTP_HOST | Bed. | — | SMTP-Server-Hostname |
SMTP_PORT | Nein | 465 | SMTP-Port |
SMTP_SSL | Nein | ssl | TLS-Modus: ssl (Port 465) / tls (STARTTLS, Port 587) / "" (einfach) |
SMTP_USER | Bed. | — | SMTP-Benutzername |
SMTP_PASS | Bed. | — | SMTP-Passwort |
SMTP_FROM | Nein | (verwendet SMTP_USER) | Absenderadresse im From-Header |
SMTP_FROM_NAME | Nein | — | Anzeigename im From-Header |
SMTP_ALLOWED_DOMAINS | Nein | — | Kommagetrennte Domain-Allowlist (z. B. example.com,corp.io); blockiert Empfänger außerhalb der aufgelisteten Domains |
SMTP_ALLOWED_ADDRESSES | Nein | — | Kommagetrennte 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
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
CONNECTOR_RESPONSE_MAX_CHARS | Nein | 50000 | Maximale Zeichen für Nicht-Array-JSON- / Klartext-Konnektorantworten |
CONNECTOR_RESPONSE_MAX_ITEMS | Nein | 10 | Maximale Array-Elemente, die beibehalten werden, wenn die Konnektorantwort ein JSON-Array ist |
CREDENTIAL_ENCRYPTION_KEY | Nein | (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
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
DATABASE_URL | Nein | sqlite+aiosqlite:///./data/fim_one.db | Datenbankverbindungszeichenfolge. 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_KEY | Nein | CHANGE_ME | Geheimer 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_ORIGINS | Nein | — | Kommagetrennte 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_DIR | Nein | ./uploads | Verzeichnis für hochgeladene Dateien |
MAX_UPLOAD_SIZE_MB | Nein | 50 | Maximale Dateigröße beim Upload in Megabyte (Backend-Durchsetzung) |
NEXT_PUBLIC_MAX_UPLOAD_SIZE_MB | Nein | 50 | Maximale Dateigröße beim Upload in der Frontend-UI. Build-Zeit-Variable — muss mit MAX_UPLOAD_SIZE_MB übereinstimmen. |
MCP_SERVERS | Nein | — | JSON-Array von MCP-Serverkonfigurationen (erfordert uv sync --extra mcp) |
ALLOW_STDIO_MCP | Nein | false | Stdio-MCP-Server zulassen. Setzen Sie auf true nur für vertrauenswürdige lokale Bereitstellungen |
ALLOWED_STDIO_COMMANDS | Nein | npx,uvx,node,python,python3,deno,bun | Kommagetrennte Liste zulässiger Basisbefehle für Stdio-MCP-Server. Wirksam nur, wenn ALLOW_STDIO_MCP=true |
LOG_LEVEL | Nein | INFO | Protokollierungsstufe: DEBUG / INFO / WARNING / ERROR / CRITICAL |
REDIS_URL | Nein | — | Redis-Verbindungs-URL für Worker-übergreifendes Interrupt-Relay. Wird von Docker Compose automatisch konfiguriert. Nur für lokale Multi-Worker-Setups erforderlich (WORKERS>1). |
WORKERS | Nein | 1 | Uvicorn-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 sowohlCLIENT_ID als auch CLIENT_SECRET für einen Anbieter gesetzt sind, zeigt die Anmeldeseite automatisch die entsprechende OAuth-Schaltfläche an.
| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
GITHUB_CLIENT_ID | Nein | — | GitHub OAuth App Client ID. Erstellen Sie diese unter github.com/settings/developers → OAuth Apps |
GITHUB_CLIENT_SECRET | Nein | — | GitHub OAuth App Client Secret |
GOOGLE_CLIENT_ID | Nein | — | Google OAuth Client ID. Erstellen Sie diese unter console.cloud.google.com/apis/credentials |
GOOGLE_CLIENT_SECRET | Nein | — | Google OAuth Client Secret |
DISCORD_CLIENT_ID | Nein | — | Discord OAuth2 Client ID. Erstellen Sie diese unter discord.com/developers |
DISCORD_CLIENT_SECRET | Nein | — | Discord OAuth2 Client Secret |
FEISHU_APP_ID | Nein | — | Feishu (Lark) App ID. Erstellen Sie diese unter open.feishu.cn. Erfordert die Berechtigung contact:user.email:readonly |
FEISHU_APP_SECRET | Nein | — | Feishu (Lark) App Secret |
FRONTEND_URL | Prod | http://localhost:3000 | Wo der Browser nach Abschluss von OAuth landet. Muss in der Produktion gesetzt werden (z. B. https://yourdomain.com) |
API_BASE_URL | Prod | http://localhost:8000 | Extern erreichbare Backend-URL, wird zum Erstellen von OAuth-Callback-URLs verwendet. Muss in der Produktion gesetzt werden |
NEXT_PUBLIC_API_URL | Prod | (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
| Anbieter | Zu registrierende Callback-URL |
|---|---|
| GitHub | https://yourdomain.com/api/auth/oauth/github/callback |
https://yourdomain.com/api/auth/oauth/google/callback | |
| Discord | https://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).| Variable | Erforderlich | Standard | Beschreibung |
|---|---|---|---|
NEXT_PUBLIC_GA_MEASUREMENT_ID | Nein | — | Google Analytics 4 Measurement ID (z. B. G-XXXXXXXXXX). Rufen Sie Ihre ID unter analytics.google.com ab |
NEXT_PUBLIC_UMAMI_SCRIPT_URL | Nein | — | Umami Analytics Script URL (z. B. https://your-umami.com/script.js). Selbst gehostete, datenschutzfreundliche Alternative — umami.is |
NEXT_PUBLIC_UMAMI_WEBSITE_ID | Nein | — | Umami Website ID. Erforderlich, wenn NEXT_PUBLIC_UMAMI_SCRIPT_URL gesetzt ist |
NEXT_PUBLIC_PLAUSIBLE_DOMAIN | Nein | — | Plausible Analytics Domain (z. B. yourdomain.com). Leichtgewichtig, datenschutzfreundlich — plausible.io |
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL | Nein | https://plausible.io/js/script.js | Benutzerdefinierte 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.