Umgebungsvariablen
Diese Seite erklärt die für Entwicklung und Selbsthosting relevanten Variablen der drei Repositories. Reale Secrets werden ausschließlich in der Zielumgebung verwaltet.
App
| Variable | Wert und Zweck |
|---|---|
NEXT_PUBLIC_CMS_URL | Öffentliche Basis-URL des Strapi-CMS, lokal beispielsweise http://localhost:1337. Sie ist Fallback für Serveranfragen und erlaubt Bilder von diesem Origin. Der Wert ist im Browser sichtbar und kein Secret. |
NEXT_PUBLIC_INFO_CATEGORY_DOCUMENT_ID | Strapi-documentId der veröffentlichten Info-Kategorie. Die App blendet diese Kategorie aus dem Hauptmenü aus und öffnet sie über Info; dort hängt sie die generierte Story mit Open-Source-Lizenzen an. Für eine eigene CMS-Instanz muss die ID zur importierten oder neu angelegten Kategorie passen. |
CMS_URL | Optionale interne CMS-Adresse für den serverseitigen Same-Origin-Proxy, etwa ein privater Containername. Setzen, wenn der App-Server Strapi anders erreicht als der Browser; sonst wird NEXT_PUBLIC_CMS_URL verwendet. |
CMS_MEDIA_URL | Zusätzlicher öffentlicher Origin, von dem Next.js optimierte Bilder laden darf, wenn Medien nicht über NEXT_PUBLIC_CMS_URL ausgeliefert werden. |
CMS_ADMIN_ORIGIN | Öffentlicher Origin des Strapi-Adminbereichs. Wird nur benötigt, wenn er für die geschützte Preview von der CMS-URL abweicht. |
APP_ORIGIN | Öffentlicher Origin der App, lokal beispielsweise http://localhost:3000. Die Preview-Routen verwenden ihn für sichere Weiterleitungen. Bei aktivierter Vorschau muss der Wert gesetzt sein und darf weder einen Pfad noch eine interne Bind-Adresse wie 0.0.0.0 enthalten. |
CMS_PREVIEW_API_TOKEN | Serverseitiges Strapi-Lesetoken für Entwürfe. Nur bei aktivierter Vorschau setzen, minimal berechtigen und niemals mit NEXT_PUBLIC_ veröffentlichen. |
PREVIEW_SECRET | Langes zufälliges Secret für den Preview-Handschlag. Muss exakt dem PREVIEW_SECRET des zugehörigen CMS entsprechen. |
NEXT_PUBLIC_*-Werte werden beim App-Build eingebettet. Eine Änderung erfordert
daher einen neuen Build der WebApp. APP_ORIGIN, CMS_URL, Token und
Preview-Secret werden serverseitig ausgewertet.
CMS
Strapi-Laufzeit und Secrets
| Variable | Wert und Zweck |
|---|---|
HOST | Netzwerkadresse, an die sich Strapi bindet. 0.0.0.0 macht den Dienst im Container beziehungsweise lokalen Netzwerk erreichbar. Das ist keine öffentliche URL. |
PORT | Interner HTTP-Port des CMS, standardmäßig 1337. Reverse-Proxy und Healthcheck müssen auf diesen Port zeigen. |
NODE_ENV | Laufzeitmodus wie development oder production. In production gelten unter anderem die strengeren Regeln für den Medienspeicher. |
PUBLIC_URL | Öffentliche Basis-URL des CMS ohne /admin, beispielsweise https://cms.example.org. Strapi erzeugt daraus Links für Admin-Einladungen und Passwort-Resets. In Produktion verpflichtend. |
APP_KEYS | Kommagetrennte Liste langer, zufälliger Schlüssel, mit denen Strapi Sitzungsdaten signiert. Pro Umgebung eigene Werte verwenden; ein späterer Wechsel kann bestehende Sitzungen ungültig machen. |
API_TOKEN_SALT | Zufälliger Salt für die Speicherung von Strapi-API-Tokens. Als Secret behandeln und nach Inbetriebnahme nicht ohne geplante Token-Erneuerung austauschen. |
ADMIN_JWT_SECRET | Signiert die Authentifizierung des Strapi-Adminbereichs. Muss ein langer, zufälliger und umgebungsspezifischer Wert sein. |
TRANSFER_TOKEN_SALT | Zufälliger Salt für Strapi-Transfer-Tokens, die beim Datentransfer zwischen Instanzen verwendet werden. |
JWT_SECRET | Signiert JWTs des Users-&-Permissions-Plugins. Nicht mit ADMIN_JWT_SECRET oder PREVIEW_SECRET gleichsetzen. |
ENCRYPTION_KEY | Schlüssel für verschlüsselt gespeicherte Admin-Secrets. Pro Umgebung stabil halten und nicht nachträglich ohne Migrationsplan ändern. |
Transaktionale E-Mails
| Variable | Wert und Zweck |
|---|---|
SMTP_HOST | Hostname des SMTP-Servers. In Produktion verpflichtend. |
SMTP_PORT | SMTP-Port, standardmäßig 465. |
SMTP_SECURE | true verwendet direktes TLS, typischerweise auf Port 465. Für STARTTLS auf Port 587 wird der Wert passend zum Provider auf false gesetzt. |
SMTP_USER | Benutzername des SMTP-Postfachs. Serverseitiges Secret beziehungsweise vertraulicher Zugangswert. |
SMTP_PASSWORD | Passwort des SMTP-Postfachs. Ausschließlich als geschütztes Laufzeit-Secret hinterlegen. |
EMAIL_FROM | Absenderadresse für Admin-Einladungen und Passwort-Resets. Die Adresse beziehungsweise Domain muss beim Provider für den Versand freigegeben sein. Antworten gehen an diesen Absender. |
Das CMS verwendet den Nodemailer-Provider des Strapi-E-Mail-Plugins. In
Produktion müssen alle Tabellenwerte sowie PUBLIC_URL gesetzt sein; der
Prozess beendet den Start andernfalls mit einer Konfigurationsmeldung. Für den
Build werden keine SMTP-Secrets benötigt. Die Variablen sind serverseitig und
dürfen kein NEXT_PUBLIC_-Präfix erhalten.
Hinweise zur Zustellbarkeit und zur Abnahme stehen unter Transaktionale CMS-E-Mails.
Content Preview
| Variable | Wert und Zweck |
|---|---|
PREVIEW_ENABLED | true aktiviert die Strapi-Vorschau für Kategorien und Stories; false schaltet die Preview-Schaltfläche ab. |
PREVIEW_FRONTEND_URL | Öffentliche Basis-URL der zugehörigen App, lokal beispielsweise http://localhost:3000. Strapi erzeugt daraus den Aufruf von /api/preview und erlaubt diesen Origin für die Vorschau. |
PREVIEW_SECRET | Langes zufälliges Secret für den Übergang vom CMS in die App-Vorschau. Muss exakt dem gleichnamigen serverseitigen Wert der App entsprechen. |
MySQL-Datenbank
| Variable | Wert und Zweck |
|---|---|
DATABASE_CLIENT | Datenbanktreiber. Die Projektkonfiguration verwendet standardmäßig mysql; postgres und sqlite werden technisch ebenfalls unterstützt. |
DATABASE_URL | Optionale vollständige Verbindungs-URL. Wenn sie für MySQL gesetzt ist, wird sie zusätzlich zu den Einzelwerten an den Treiber übergeben. |
DATABASE_HOST | Hostname oder interne Netzwerkadresse des Datenbankservers, lokal häufig 127.0.0.1. |
DATABASE_PORT | Datenbankport; für MySQL standardmäßig 3306. |
DATABASE_NAME | Name der für diese CMS-Umgebung vorgesehenen Datenbank. Staging und Produktion verwenden getrennte Datenbanken. |
DATABASE_USERNAME | Datenbankbenutzer mit den für Strapi benötigten Rechten auf genau dieser Datenbank. |
DATABASE_PASSWORD | Passwort des Datenbankbenutzers. Server-seitiges Secret, das niemals committed wird. |
DATABASE_SSL | true aktiviert TLS für die Datenbankverbindung. Ob das nötig ist, hängt vom Datenbankanbieter und Netzwerk ab. |
DATABASE_SSL_REJECT_UNAUTHORIZED | Bei aktivem TLS legt true fest, dass das Serverzertifikat gültig und vertrauenswürdig sein muss. false nur verwenden, wenn die Infrastruktur dies bewusst erfordert. |
Strapi unterstützt zusätzlich DATABASE_SSL_KEY, DATABASE_SSL_CERT,
DATABASE_SSL_CA, DATABASE_SSL_CAPATH und DATABASE_SSL_CIPHER für eigene
TLS-Zertifikate sowie DATABASE_POOL_MIN, DATABASE_POOL_MAX und
DATABASE_CONNECTION_TIMEOUT zur Verbindungssteuerung. Diese erweiterten
Werte sind für die Standardinstallation nicht erforderlich.
Medien und S3
| Variable | Wert und Zweck |
|---|---|
MEDIA_UPLOAD_PROVIDER | local speichert Uploads im CMS-Dateisystem und ist für lokale Entwicklung gedacht. s3 speichert sie im konfigurierten Bucket. In NODE_ENV=production verweigert das CMS den Start mit local. |
AWS_ACCESS_KEY_ID | Kennung des S3-Zugangs für Medien. |
AWS_ACCESS_SECRET | Geheimer Schlüssel zum S3-Zugang für Medien. |
AWS_REGION | Region des Medien-Buckets, beispielsweise eu-central-1. |
AWS_BUCKET | Bucketname für produktive Medien. |
AWS_ACL | Optionale Objekt-ACL wie public-read für ältere Buckets. Bei modernen Buckets mit deaktivierten ACLs leer lassen. |
MEDIA_BASE_URL | Optionale öffentliche Basis-URL für Medien, etwa eine CDN-Domain. Ihr Host wird zusätzlich in der Content Security Policy des Adminbereichs erlaubt. |
In Produktion muss der Medienspeicher auf S3 konfiguriert sein. Das CMS verweigert dort absichtlich den Start mit lokalem Uploadspeicher.
Öffentlicher Datenimport
| Variable | Wert und Zweck |
|---|---|
DIGEKO_DATA_LATEST_URL | Öffentliche URL der zu importierenden latest.json. npm run data:import lädt darüber das aktuelle Archiv und dessen Prüfsumme. |
Die DATA_RELEASE_*-Variablen aus dem CMS-Repository gehören zum Betrieb des
offiziellen DiGeKo-Publishers. Selbst gehostete Instanzen und lokale
Entwicklungsumgebungen benötigen sie nicht.
Aufbau und Import des Datenexports →
KI-Queue und Provider
| Variable | Wert und Zweck |
|---|---|
AI_QUEUE_<LANE>_CONCURRENCY | Maximale Zahl gleichzeitig verarbeiteter Jobs der Lane. <LANE> ist TTS, IMAGE oder TEXT; Standard ist jeweils 1. TTS und Bild besitzen einen produktiven Worker. |
AI_QUEUE_<LANE>_LEASE_MS | Dauer einer atomaren Jobreservierung in Millisekunden; Standard ist 900000, das Minimum 60000. Sie muss die erwartete Verarbeitung und Speicherung abdecken. |
AI_QUEUE_<LANE>_TIMEOUT_MS | Ausführungszeitlimit, das dem jeweiligen Lane-Worker zur Verfügung steht; Standard ist 600000, das Minimum 60000. TTS-Provider besitzen zusätzlich eigene Timeouts. |
AI_GENERATED_CONTENT_LICENSE | Optionale vorgesehene Lizenz für erzeugte Artefakte. Sie wird als Provenienz gespeichert, aber weder automatisch geprüft noch als rechtliche Freigabe behandelt. |
AI_GENERATED_CONTENT_RIGHTS_NOTICE | Optionale betreiberseitige Rechteangabe. Sie wird mit Bildvorschlag und Auswahl protokolliert, aber nicht automatisch bewertet. |
TTS_PROVIDER | Aktiver TTS-Adapter: qwen, kugelaudio oder elevenlabs. Nur die Zugangsdaten und Modelle dieses Anbieters sind für die Generierung erforderlich. |
TTS_PROMPT_VERSION | Stabile Kennung der für TTS verwendeten Prompt- beziehungsweise Verarbeitungsfassung; Standard ist tts-v1. Sie wird mit dem Job protokolliert. |
TTS_WORKER_POLL_MS | Abstand in Millisekunden, in dem der Worker nach verarbeitbaren TTS-Jobs sucht; Projektstandard ist 5000. |
TTS_QUEUE_LEASE_MS | Kompatibler Vorgänger von AI_QUEUE_TTS_LEASE_MS. Wird nur als Fallback ausgewertet, wenn die neue Variable nicht gesetzt ist. |
TTS_WORKER_IDLE_LOG | true protokolliert auch Worker-Durchläufe ohne Job. Für die normale Produktion bleibt der Wert false, um unnötige Logs zu vermeiden. |
TTS_MEDIA_FOLDER_NAME | Anzeigename des logischen Ordners für erzeugte Audiodateien in der Strapi Media Library; Standard ist tts. |
Provider-, Modell-, Adapter- und Promptversion sowie technische Nutzung und Provenienz werden am Job gespeichert. Dazu zählen beispielsweise Laufzeit, Zeichen- und Artefaktzahl, Quell-Hash und Referenzmedien. API-Schlüssel werden nicht in der Queue gespeichert. Verfügbare Providerpreise und belastbare Messwerte können für eine unverbindliche Kostenschätzung verwendet werden; ein Budget oder eine tatsächliche Abrechnung führt das CMS nicht.
Locale-spezifische Werte folgen einem einheitlichen Muster. Für en-US wird
zuerst <VARIABLE>_EN_US, danach <VARIABLE>_EN und zuletzt der globale Wert
ohne Suffix verwendet.
Bildvorschläge
| Variable | Wert und Zweck |
|---|---|
IMAGE_GENERATION_ENABLED | true aktiviert neue Bildjobs und den Bildworker. Ohne expliziten Wert ist die Funktion abgeschaltet. |
IMAGE_PROVIDER | mflux für die lokale Ausführung auf macOS/Apple Silicon, fal für fal.ai oder http für einen kompatiblen Endpunkt. Das CMS erzwingt keine Providerregion. |
AI_IMAGE_RATE_LIMIT_MAX | Maximale Anzahl zustandsverändernder Bildanfragen je Route und Client-IP innerhalb von 60 Sekunden; Standardwert ist 10. |
FAL_KEY | Serverseitiger fal.ai-API-Key. Er wird weder an die Admin-UI gesendet noch in Jobs gespeichert. |
FAL_IMAGE_MODEL | Standardmodell des fal-Adapters, beispielsweise openai/gpt-image-2/edit oder fal-ai/flux-pro/kontext/multi. |
FAL_IMAGE_MODELS | Optionale kommaseparierte Allowlist vollständig konfigurierter fal-Modelle für die redaktionelle Modellauswahl. Ohne Wert ist nur FAL_IMAGE_MODEL verfügbar. |
FAL_IMAGE_QUALITY | Qualitätsstufe auto, low, medium oder high für GPT Image 2. FLUX Kontext Pro ignoriert diesen Wert. |
AI_IMAGE_ICON_REFERENCE_MEDIA_IDS | Optionale kommaseparierte Media-Library-IDs des betreiberseitig freigegebenen Icon-Referenzsatzes. |
AI_IMAGE_STORY_REFERENCE_MEDIA_IDS | Optionale kommaseparierte Media-Library-IDs des betreiberseitig freigegebenen Inhaltsbild-Referenzsatzes. |
AI_IMAGE_REFERENCE_ALLOWED_HOSTS | Kommaseparierte HTTPS-Hosts, von denen Referenzen geladen werden dürfen. Der konfigurierte AWS-Bucket-Host wird automatisch zugelassen. |
MFLUX_IMAGE_MODEL | Lokale Modellkennung beziehungsweise lokaler Modellpfad für MFLUX; Projektdefault ist FLUX.2 klein 4B. |
IMAGE_HTTP_API_URL | HTTPS-URL eines generischen OpenAI-kompatiblen Bildendpunkts. Dieser Vertrag überträgt keine Referenzbilder. |
IMAGE_HTTP_API_KEY | Optionaler serverseitiger API-Key des generischen HTTP-Endpunkts. |
IMAGE_HTTP_MODEL | Modellkennung für den generischen HTTP-Adapter. |
Für eine lokale Standardinstallation genügt neben der Aktivierung die sichtbare
Auswahl von IMAGE_PROVIDER=mflux und MFLUX_IMAGE_MODEL; Provider und Modell
haben zugleich passende Defaults. Technische Grenzwerte, Worker-Takt,
Bildgrößen, Quantisierung, Schritte, Guidance, VAE-Tiling, Referenzstärke und
Speicherpfade besitzen Projektdefaults und sind nur bei einer bewusst
abweichenden Installation als ENV-Overrides nötig. Die Promptversion ist fest
an den Code gebunden und wird automatisch als Provenienz gespeichert.
Bei IMAGE_PROVIDER=fal erscheint die konfigurierte Modell-Allowlist im
redaktionellen Overlay. Das bereits im Zielfeld gesetzte Bild wird zuerst als
Referenz verwendet; danach folgen die passenden Profilreferenzen. Doppelte IDs
werden entfernt und insgesamt höchstens vier Referenzen übertragen. GPT Image
2 behält sie auch bei einer optionalen Bildanweisung. Der fal-Adapter speichert
die externe Request-ID für die Wiederaufnahme nach einem CMS-Neustart und
übernimmt vorhandene billableUnits in die Nutzungsmetriken.
Bei aktiviertem S3-Upload speichert das CMS temporäre Bildvorschläge im selben
AWS_BUCKET wie die Media Library, jedoch getrennt unter dem festen Präfix
ai-image-proposals/. Eine weitere Bucket-Variable oder ein zusätzlicher
Zugangsschlüssel ist nicht erforderlich. Ist der Medien-Bucket öffentlich
lesbar, muss seine Bucket-Policy den öffentlichen Zugriff auf diesen Präfix
durch ein explizites Deny ausnehmen. Die verwendete CMS-IAM-Identität bleibt
über aws:PrincipalArn zugriffsberechtigt und benötigt dort s3:GetObject,
s3:PutObject sowie s3:DeleteObject. Ohne diese Ausnahme wären noch nicht
übernommene Vorschläge aufgrund einer allgemeinen öffentlichen
s3:GetObject-Freigabe ebenfalls öffentlich abrufbar.
Die tatsächlichen Kosten werden vom Provider bestimmt. Bei GPT Image 2 wirken sich insbesondere Qualitätsstufe, Ausgabegröße, Prompt und Anzahl der Referenzbilder aus. Das CMS enthält absichtlich keine beweglichen Preislisten, sondern fragt aktuelle Einheitspreise serverseitig beim Provider ab. Bei einem festen Preis je Ergebnis wird dieser unmittelbar angezeigt. Variable Preise werden nur aus hinsichtlich Modell, Profil, Qualität, Ausgabegröße, Vorschlags- und Referenzanzahl vergleichbaren abgeschlossenen Aufträgen geschätzt. Solange diese Grundlage fehlt, zeigt die Oberfläche keinen Betrag. Kosten-Snapshots werden am Queue-Job gespeichert und bleiben damit über Serverneustarts erhalten. Ein Budgetlimit oder eine tatsächliche Abrechnung existiert nicht; Preise und Vertragsbedingungen müssen Betreiber weiterhin beim Provider prüfen.
Das anwendungsseitige Rate-Limit gilt für Erzeugen, Abbrechen, Verwerfen und Übernehmen. Lesende Status- und Dateiabfragen werden nicht mitgezählt. Es wird pro CMS-Instanz geführt; bei mehreren Instanzen muss ein Reverse Proxy ein zusätzliches gemeinsames Limit durchsetzen, falls ein globales Limit benötigt wird.
Für den HTTP-Adapter konfigurieren IMAGE_HTTP_API_URL, IMAGE_HTTP_MODEL
sowie optional IMAGE_HTTP_API_KEY den externen Endpunkt. Die URL muss in
Produktion HTTPS verwenden; Schlüssel bleiben ausschließlich in der
Serverumgebung.
KugelAudio
Diese Variablen werden ausgewertet, wenn TTS_PROVIDER=kugelaudio gesetzt ist.
| Variable | Wert und Zweck |
|---|---|
KUGELAUDIO_API_KEY | API-Key für KugelAudio und für diesen Provider verpflichtend. Ein Präfix eu- wird vom Adapter bei Bedarf für den EU-Endpunkt ausgewertet. |
KUGELAUDIO_API_URL | Basis-URL der API, im Projekt standardmäßig https://api.eu.kugelaudio.com. |
KUGELAUDIO_TRANSPORT | websocket oder rest. WebSocket ist Standard und notwendig, wenn KugelAudio Wort-Zeitmarken mitsenden soll. |
KUGELAUDIO_MODEL_ID | Kennung des zu verwendenden KugelAudio-Modells, in der Beispielkonfiguration kugel-3. |
KUGELAUDIO_VOICE_ID, KUGELAUDIO_VOICE_ID_DE, KUGELAUDIO_VOICE_ID_EN | Numerische Voice-ID. Die suffigierten Varianten wählen je Sprache eine andere Stimme; weitere Locale-Suffixe sind möglich. |
KUGELAUDIO_LANGUAGE, KUGELAUDIO_LANGUAGE_DE, KUGELAUDIO_LANGUAGE_EN | Optionaler Sprachcode für die API. Ohne Override leitet der Adapter ihn aus der Inhalts-Locale ab. |
KUGELAUDIO_WORD_TIMESTAMPS | true fordert beim WebSocket-Aufruf Wort-Zeitmarken für die Hervorhebung in der App an. |
KUGELAUDIO_REQUIRE_TIMESTAMPS | true lässt den Job fehlschlagen, wenn zwar Audio, aber keine Wort-Zeitmarken zurückgegeben wurden. |
KUGELAUDIO_NORMALIZE | true aktiviert die Textnormalisierung des Providers vor der Synthese. |
KUGELAUDIO_DEBUG | true protokolliert technische WebSocket-Metadaten zur Fehlersuche. Im Regelbetrieb false lassen. |
KUGELAUDIO_TIMEOUT_MS | Maximale Laufzeit eines Provideraufrufs in Millisekunden, standardmäßig 600000. |
KUGELAUDIO_SAMPLE_RATE | Gewünschte Sample-Rate und Grundlage der erzeugten WAV-Datei, standardmäßig 24000. |
KUGELAUDIO_CHANNELS | Kanalanzahl der erzeugten WAV-Datei, standardmäßig 1 für Mono. |
KUGELAUDIO_CFG_SCALE | Optionaler numerischer Guidance-Wert des Modells. Leer lassen, um den Providerstandard zu verwenden. |
KUGELAUDIO_MAX_NEW_TOKENS | Optionales Tokenlimit für die Generierung. Leer bedeutet, dass kein eigener Wert an KugelAudio gesendet wird. |
KUGELAUDIO_SPEED | Optionaler numerischer Geschwindigkeitsfaktor für die Sprachausgabe. |
ElevenLabs
Diese Variablen werden ausgewertet, wenn TTS_PROVIDER=elevenlabs gesetzt ist.
| Variable | Wert und Zweck |
|---|---|
ELEVENLABS_API_KEY | Geheimer API-Key und für diesen Provider verpflichtend. |
ELEVENLABS_API_URL | Basis-URL der API, standardmäßig https://api.elevenlabs.io. |
ELEVENLABS_VOICE_ID, ELEVENLABS_VOICE_ID_DE, ELEVENLABS_VOICE_ID_EN | Verpflichtende Voice-ID mit optionalen sprach- oder locale-spezifischen Overrides. |
ELEVENLABS_MODEL_ID | Modellkennung für die Synthese, standardmäßig eleven_multilingual_v2. |
ELEVENLABS_OUTPUT_FORMAT | PCM- oder WAV-Ausgabeformat einschließlich Sample-Rate, beispielsweise pcm_24000. Andere Formatfamilien werden abgewiesen, weil das CMS WAV-Dateien speichert. |
ELEVENLABS_LANGUAGE_CODE, ELEVENLABS_LANGUAGE_CODE_DE, ELEVENLABS_LANGUAGE_CODE_EN | Optionaler Sprachcode. Ohne Override wird der Sprachanteil der Inhalts-Locale verwendet. |
ELEVENLABS_FORCE_ALIGNMENT | true ruft nach der Synthese Forced Alignment auf, um Wort-Zeitmarken zu erzeugen. |
ELEVENLABS_ENABLE_LOGGING | Steuert den gleichnamigen Queryparameter der ElevenLabs-API. Der Wert betrifft das providerseitige Request-Logging. |
ELEVENLABS_TIMEOUT_MS | Maximale Laufzeit für Synthese oder Alignment in Millisekunden, standardmäßig 600000. |
ELEVENLABS_STABILITY | Optionaler numerischer Stabilitätswert der Stimme. Leer verwendet den Providerstandard. |
ELEVENLABS_SIMILARITY_BOOST | Optionaler numerischer Wert für die Ähnlichkeit zur gewählten Stimme. |
ELEVENLABS_STYLE | Optionaler numerischer Stilwert der Stimme. |
ELEVENLABS_USE_SPEAKER_BOOST | Optionales true oder false für die Speaker-Boost-Option. |
ELEVENLABS_SEED | Optionaler numerischer Seed, um Generierungen bei gleicher Konfiguration besser reproduzierbar zu machen. |
ELEVENLABS_APPLY_TEXT_NORMALIZATION | Textnormalisierung der API, beispielsweise auto. Der Wert wird unverändert an ElevenLabs übergeben. |
ELEVENLABS_APPLY_LANGUAGE_TEXT_NORMALIZATION | Optionales true oder false für die sprachspezifische Textnormalisierung. |
ELEVENLABS_OPTIMIZE_STREAMING_LATENCY | Optionaler numerischer API-Parameter zur Latenzoptimierung. Leer verwendet den Providerstandard. |
Qwen3-TTS
Diese Variablen werden ausgewertet, wenn TTS_PROVIDER=qwen gesetzt ist.
| Variable | Wert und Zweck |
|---|---|
QWEN_TTS_PYTHON_BIN | Pfad zum Python-Interpreter der vorbereiteten Qwen-Umgebung. npm install richtet diese Python-Umgebung nicht ein. |
QWEN_TTS_SCRIPT_PATH | Pfad zum Adapter-Script, normalerweise ./scripts/qwen_tts_generate.py. |
QWEN_TTS_BASE_MODEL_PATH | Pfad zum lokalen Qwen-Base-Modell für Voice Cloning. Die Modellgewichte sind nicht Bestandteil des Repositories. |
QWEN_TTS_MODEL_ID | Optionale stabile Modellkennung für die Job-Provenienz. Ohne Wert verwendet das CMS den Basisnamen aus QWEN_TTS_BASE_MODEL_PATH, nicht den vollständigen lokalen Pfad. |
QWEN_TTS_DEVICE | Torch-Gerät für die Synthese, beispielsweise cuda:0; muss zur Serverhardware passen. |
QWEN_TTS_DTYPE | Rechengenauigkeit des Modells, beispielsweise bfloat16; muss von Gerät und Installation unterstützt werden. |
QWEN_TTS_ATTN | Attention-Implementierung, etwa flash_attention_2 oder bei fehlendem FlashAttention eine unterstützte Alternative wie sdpa. |
QWEN_TTS_MAX_NEW_TOKENS | Absolute Obergrenze der generierten Tokens, standardmäßig 2048. Kann ebenfalls je Locale überschrieben werden. |
QWEN_TTS_DYNAMIC_MAX_NEW_TOKENS | true berechnet abhängig von Text- und Wortlänge eine kleinere dynamische Grenze, um Weitergenerieren nach kurzen Labels zu vermeiden. |
QWEN_TTS_MIN_NEW_TOKENS | Untergrenze der dynamischen Berechnung, standardmäßig 48. |
QWEN_TTS_NEW_TOKENS_PER_CHAR | Zeichenfaktor der dynamischen Tokenabschätzung, in der Beispielkonfiguration 2.2. |
QWEN_TTS_NEW_TOKENS_PER_WORD | Wortfaktor der dynamischen Tokenabschätzung, in der Beispielkonfiguration 6. |
QWEN_TTS_TRIM_TO_ALIGNMENT | true schneidet das erzeugte Audio auf das vom Forced Aligner erkannte Sprachfenster zu. |
QWEN_TTS_TRIM_PADDING_BEFORE | Zusätzlicher zeitlicher Rand in Sekunden vor dem Alignment-Fenster, beispielsweise 0.08. |
QWEN_TTS_TRIM_PADDING_AFTER | Zusätzlicher zeitlicher Rand in Sekunden nach dem Alignment-Fenster, beispielsweise 0.18. |
QWEN_TTS_TIMEOUT_MS | Maximale Laufzeit des Python-Prozesses in Millisekunden, standardmäßig 600000. |
QWEN_TTS_X_VECTOR_ONLY | true verwendet beim Voice Cloning nur den Sprecher-Vektor. Bei false kann zusätzlich das exakte Referenztranskript berücksichtigt werden. |
QWEN_TTS_REFERENCE_AUDIO_PATH, QWEN_TTS_REFERENCE_AUDIO_PATH_DE, QWEN_TTS_REFERENCE_AUDIO_PATH_EN | Pfad oder unterstützte URL der Referenzaufnahme für Voice Cloning. Sprachspezifische Aufnahmen sind empfohlen. |
QWEN_TTS_REFERENCE_TEXT, QWEN_TTS_REFERENCE_TEXT_DE, QWEN_TTS_REFERENCE_TEXT_EN | Exaktes Transkript der jeweiligen Referenzaufnahme. Text und Aufnahme müssen übereinstimmen. |
QWEN_TTS_MODE_DE, QWEN_TTS_MODE_EN | Modus pro Sprache: voice-clone verwendet das Base-Modell mit Referenz; custom-voice verwendet eine vorbereitete Modellstimme. |
QWEN_TTS_CUSTOM_VOICE_MODEL_PATH | Pfad zum CustomVoice-Modell. Nur erforderlich, wenn mindestens eine Locale custom-voice verwendet. |
QWEN_TTS_SPEAKER_EN | Preset-Sprecher des CustomVoice-Modells für Englisch. Entsprechende Suffixe können für weitere Locales gesetzt werden. |
QWEN_TTS_INSTRUCT_EN | Optionale Stilanweisung für die englische CustomVoice-Stimme; weitere Locale-Suffixe werden analog ausgewertet. |
QWEN_ALIGNER_CHECKPOINT | Pfad zum Qwen3-ForcedAligner. Ohne Checkpoint erzeugt der lokale Aligner keine Wort-Zeitmarken. |
QWEN_ALIGNER_DEVICE | Torch-Gerät des Aligners, beispielsweise cuda:0. |
QWEN_ALIGNER_DTYPE | Rechengenauigkeit des Aligners, beispielsweise bfloat16. |
QWEN_ALIGNER_KWARGS | JSON-Objekt mit zusätzlichen Argumenten für das Laden des Aligners, beispielsweise {"device_map":"cuda:0","dtype":"bfloat16"}. |
Technischen Ablauf der TTS-Pipeline ansehen →
Docs
| Variable | Wert und Zweck |
|---|---|
NEXT_PUBLIC_DOCS_ENV | Veröffentlichungsziel production oder staging. Bei staging zeigt die Website den Entwicklungshinweis und setzt noindex, nofollow; bei production werden diese Einschränkungen nicht gesetzt. Der Wert wird beim Build eingebettet. |
NEXT_PUBLIC_SITE_URL | Vollständige Basis-URL der gebauten Umgebung ohne Seitenpfad, lokal beispielsweise http://localhost:3000. Sie wird als kanonische Site-URL in den Metadaten verwendet und muss zur Zielumgebung passen. |
Beide Docs-Variablen sind öffentlich und enthalten keine Secrets. Änderungen werden erst mit einem neuen Docs-Build wirksam.
Regeln
- Secrets erhalten niemals das Präfix
NEXT_PUBLIC_. .envund.env.localwerden nicht committed..env.exampleenthält nur Platzhalter oder unkritische lokale Defaults.- Preview-Secret und Ziel-URLs müssen innerhalb einer Umgebung zusammenpassen.
Insbesondere entspricht
APP_ORIGINder App dem Origin vonPREVIEW_FRONTEND_URLdes zugehörigen CMS. - Staging und Produktion verwenden getrennte Secrets.