chore: LLM provider env for Langflow, persistent sessions, Fernet key doc
This commit is contained in:
parent
3ee997cb72
commit
0b03399c1a
3 changed files with 39 additions and 2 deletions
24
.env.example
24
.env.example
|
|
@ -17,6 +17,11 @@ LANGFLOW_SUPERUSER=langflow
|
|||
# Long random values (check_prod.py enforces length). Never leave the
|
||||
# placeholders: the authoring UI is internet-facing.
|
||||
LANGFLOW_SUPERUSER_PASSWORD=
|
||||
# MUST be a valid Fernet key (44 chars, urlsafe-base64, 32 bytes) — any
|
||||
# other value breaks variable decryption ("Fernet key must be 32
|
||||
# url-safe base64-encoded bytes") and provider keys cannot be saved.
|
||||
# Generate with:
|
||||
# python -c "import base64,os;print(base64.urlsafe_b64encode(os.urandom(32)).decode())"
|
||||
LANGFLOW_SECRET_KEY=
|
||||
# Single static key; validated against env (LANGFLOW_API_KEY_SOURCE=env), superuser scope.
|
||||
LANGFLOW_API_KEY=sk-
|
||||
|
|
@ -51,4 +56,21 @@ SMTP_USERNAME=
|
|||
SMTP_PASSWORD=
|
||||
|
||||
# --- LLM (optional; tests mock the provider without it) ---
|
||||
# LLM_API_KEY=
|
||||
# LLM_API_KEY=
|
||||
|
||||
# --- LLM provider für Langflow (Authoring-UI + LFX-Runtime) ---
|
||||
# Langflow erzeugt daraus automatisch Global Variables (Credential-Typ);
|
||||
# LFX liest dieselben Werte zur Laufzeit. Eine in der UI angelegte Global
|
||||
# Variable mit gleichem Namen hat Vorrang, die Env-Variable ist Fallback.
|
||||
# OpenAI-kompatibler Endpoint (auch selbst gehostet); ohne eigenen Provider
|
||||
# leer lassen. Beispiel: https://openrouter.ai/api/v1
|
||||
OPENAI_API_KEY=
|
||||
OPENAI_BASE_URL=
|
||||
|
||||
# --- Langflow-Login-Sitzung ---
|
||||
# Refresh-Token-Gültigkeit in Sekunden (Default 604800 = 7 Tage).
|
||||
# 7776000 = 90 Tage: einmal einloggen, Container-Restarts übersteht die
|
||||
# Session, solange LANGFLOW_SECRET_KEY stabil bleibt. In Prod kürzer wählen.
|
||||
# LANGFLOW_REFRESH_TOKEN_EXPIRE_SECONDS=7776000
|
||||
# Erstellt Global Variables aus Env (Credential-Typ), restart-fest:
|
||||
# LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=OPENAI_API_KEY,OPENAI_BASE_URL
|
||||
11
CHANGELOG.md
11
CHANGELOG.md
|
|
@ -12,6 +12,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
automatisch (Report mit `pulled`-Liste). Der Hintergrund-Beobachter und der
|
||||
Startup-Sync bleiben dateibasiert. Die Verwaltung zeigt eine deutsche
|
||||
Schritt-Anleitung direkt beim Sync-Button.
|
||||
- LLM-Provider-Umgebung für Langflow: `OPENAI_API_KEY` + `OPENAI_BASE_URL`
|
||||
in `.env` (OpenAI-kompatible Endpoints) erzeugen automatisch
|
||||
restart-feste Global Variables in Langflow; LFX liest dieselben Werte.
|
||||
- Langflow-Sitzungen halten länger: `LANGFLOW_REFRESH_TOKEN_EXPIRE_SECONDS`
|
||||
(Default weiter 7 Tage, Dev-Beispiel 90) + stabile JWT-Signatur via
|
||||
`LANGFLOW_SECRET_KEY` — kein Re-Login nach Container-Restarts.
|
||||
### Fixed
|
||||
- Flow-Sync aus Langflow: neue Flows blieben unsichtbar, weil LFX-Uploads
|
||||
mit `Permission denied` scheiterten (named Volume root-owned, LFX läuft
|
||||
|
|
@ -25,6 +31,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
0o600-Dateien, die Langflow beim Start abstürzen ließen
|
||||
(`Permission denied` in `/app/flows`, Crash-Loop) und der API Fehler
|
||||
(`unreadable`) verursachten.
|
||||
- `LANGFLOW_SECRET_KEY` muss ein gültiger Fernet-Key sein (44 Zeichen,
|
||||
urlsafe-base64): ein Hex-String brach die Variablen-Verschlüsselung mit
|
||||
`Fernet key must be 32 url-safe base64-encoded bytes` (500 beim Anlegen
|
||||
von Global Variables — Provider-Keys ließen sich nicht speichern).
|
||||
`.env.example` dokumentiert die Erzeugung.
|
||||
- LFX runtime user gets a home directory (`useradd -m`, `HOME` set):
|
||||
without one every flow run failed with "Settings service not found".
|
||||
### Security
|
||||
|
|
|
|||
|
|
@ -89,7 +89,11 @@ a database server. Postgres can return later by changing `DATABASE_URL`
|
|||
|
||||
`.env` holds only ubiquitous variables (identical value in dev and prod:
|
||||
secrets, service URLs). Dev-only variables travel via `devcontainer.json`
|
||||
(`APP_ENV=dev`); paths resolve from the repo root in code.
|
||||
(`APP_ENV=dev`); paths resolve from the repo root in code. LLM provider
|
||||
keys for Langflow are plain env vars (`OPENAI_API_KEY`,
|
||||
`OPENAI_BASE_URL`) — Langflow turns them into restart-proof global
|
||||
variables, LFX reads them at runtime. `LANGFLOW_SECRET_KEY` must be a
|
||||
valid Fernet key (see `.env.example`).
|
||||
|
||||
## Getting Started
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue