Skip to Content
3. EntwicklungReferenzUmgebungsvariablen

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

VariableWert 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_IDStrapi-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_URLOptionale 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_URLZusä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_TOKENServerseitiges Strapi-Lesetoken für Entwürfe. Nur bei aktivierter Vorschau setzen, minimal berechtigen und niemals mit NEXT_PUBLIC_ veröffentlichen.
PREVIEW_SECRETLanges 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

VariableWert und Zweck
HOSTNetzwerkadresse, an die sich Strapi bindet. 0.0.0.0 macht den Dienst im Container beziehungsweise lokalen Netzwerk erreichbar. Das ist keine öffentliche URL.
PORTInterner HTTP-Port des CMS, standardmäßig 1337. Reverse-Proxy und Healthcheck müssen auf diesen Port zeigen.
NODE_ENVLaufzeitmodus 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_KEYSKommagetrennte 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_SALTZufälliger Salt für die Speicherung von Strapi-API-Tokens. Als Secret behandeln und nach Inbetriebnahme nicht ohne geplante Token-Erneuerung austauschen.
ADMIN_JWT_SECRETSigniert die Authentifizierung des Strapi-Adminbereichs. Muss ein langer, zufälliger und umgebungsspezifischer Wert sein.
TRANSFER_TOKEN_SALTZufälliger Salt für Strapi-Transfer-Tokens, die beim Datentransfer zwischen Instanzen verwendet werden.
JWT_SECRETSigniert JWTs des Users-&-Permissions-Plugins. Nicht mit ADMIN_JWT_SECRET oder PREVIEW_SECRET gleichsetzen.
ENCRYPTION_KEYSchlüssel für verschlüsselt gespeicherte Admin-Secrets. Pro Umgebung stabil halten und nicht nachträglich ohne Migrationsplan ändern.

Transaktionale E-Mails

VariableWert und Zweck
SMTP_HOSTHostname des SMTP-Servers. In Produktion verpflichtend.
SMTP_PORTSMTP-Port, standardmäßig 465.
SMTP_SECUREtrue verwendet direktes TLS, typischerweise auf Port 465. Für STARTTLS auf Port 587 wird der Wert passend zum Provider auf false gesetzt.
SMTP_USERBenutzername des SMTP-Postfachs. Serverseitiges Secret beziehungsweise vertraulicher Zugangswert.
SMTP_PASSWORDPasswort des SMTP-Postfachs. Ausschließlich als geschütztes Laufzeit-Secret hinterlegen.
EMAIL_FROMAbsenderadresse 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

VariableWert und Zweck
PREVIEW_ENABLEDtrue 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_SECRETLanges zufälliges Secret für den Übergang vom CMS in die App-Vorschau. Muss exakt dem gleichnamigen serverseitigen Wert der App entsprechen.

MySQL-Datenbank

VariableWert und Zweck
DATABASE_CLIENTDatenbanktreiber. Die Projektkonfiguration verwendet standardmäßig mysql; postgres und sqlite werden technisch ebenfalls unterstützt.
DATABASE_URLOptionale vollständige Verbindungs-URL. Wenn sie für MySQL gesetzt ist, wird sie zusätzlich zu den Einzelwerten an den Treiber übergeben.
DATABASE_HOSTHostname oder interne Netzwerkadresse des Datenbankservers, lokal häufig 127.0.0.1.
DATABASE_PORTDatenbankport; für MySQL standardmäßig 3306.
DATABASE_NAMEName der für diese CMS-Umgebung vorgesehenen Datenbank. Staging und Produktion verwenden getrennte Datenbanken.
DATABASE_USERNAMEDatenbankbenutzer mit den für Strapi benötigten Rechten auf genau dieser Datenbank.
DATABASE_PASSWORDPasswort des Datenbankbenutzers. Server-seitiges Secret, das niemals committed wird.
DATABASE_SSLtrue aktiviert TLS für die Datenbankverbindung. Ob das nötig ist, hängt vom Datenbankanbieter und Netzwerk ab.
DATABASE_SSL_REJECT_UNAUTHORIZEDBei 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

VariableWert und Zweck
MEDIA_UPLOAD_PROVIDERlocal 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_IDKennung des S3-Zugangs für Medien.
AWS_ACCESS_SECRETGeheimer Schlüssel zum S3-Zugang für Medien.
AWS_REGIONRegion des Medien-Buckets, beispielsweise eu-central-1.
AWS_BUCKETBucketname für produktive Medien.
AWS_ACLOptionale Objekt-ACL wie public-read für ältere Buckets. Bei modernen Buckets mit deaktivierten ACLs leer lassen.
MEDIA_BASE_URLOptionale ö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

VariableWert 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

VariableWert und Zweck
AI_QUEUE_<LANE>_CONCURRENCYMaximale 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_MSDauer einer atomaren Jobreservierung in Millisekunden; Standard ist 900000, das Minimum 60000. Sie muss die erwartete Verarbeitung und Speicherung abdecken.
AI_QUEUE_<LANE>_TIMEOUT_MSAusfü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_LICENSEOptionale 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_NOTICEOptionale betreiberseitige Rechteangabe. Sie wird mit Bildvorschlag und Auswahl protokolliert, aber nicht automatisch bewertet.
TTS_PROVIDERAktiver TTS-Adapter: qwen, kugelaudio oder elevenlabs. Nur die Zugangsdaten und Modelle dieses Anbieters sind für die Generierung erforderlich.
TTS_PROMPT_VERSIONStabile Kennung der für TTS verwendeten Prompt- beziehungsweise Verarbeitungsfassung; Standard ist tts-v1. Sie wird mit dem Job protokolliert.
TTS_WORKER_POLL_MSAbstand in Millisekunden, in dem der Worker nach verarbeitbaren TTS-Jobs sucht; Projektstandard ist 5000.
TTS_QUEUE_LEASE_MSKompatibler Vorgänger von AI_QUEUE_TTS_LEASE_MS. Wird nur als Fallback ausgewertet, wenn die neue Variable nicht gesetzt ist.
TTS_WORKER_IDLE_LOGtrue 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_NAMEAnzeigename 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

VariableWert und Zweck
IMAGE_GENERATION_ENABLEDtrue aktiviert neue Bildjobs und den Bildworker. Ohne expliziten Wert ist die Funktion abgeschaltet.
IMAGE_PROVIDERmflux 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_MAXMaximale Anzahl zustandsverändernder Bildanfragen je Route und Client-IP innerhalb von 60 Sekunden; Standardwert ist 10.
FAL_KEYServerseitiger fal.ai-API-Key. Er wird weder an die Admin-UI gesendet noch in Jobs gespeichert.
FAL_IMAGE_MODELStandardmodell des fal-Adapters, beispielsweise openai/gpt-image-2/edit oder fal-ai/flux-pro/kontext/multi.
FAL_IMAGE_MODELSOptionale kommaseparierte Allowlist vollständig konfigurierter fal-Modelle für die redaktionelle Modellauswahl. Ohne Wert ist nur FAL_IMAGE_MODEL verfügbar.
FAL_IMAGE_QUALITYQualitätsstufe auto, low, medium oder high für GPT Image 2. FLUX Kontext Pro ignoriert diesen Wert.
AI_IMAGE_ICON_REFERENCE_MEDIA_IDSOptionale kommaseparierte Media-Library-IDs des betreiberseitig freigegebenen Icon-Referenzsatzes.
AI_IMAGE_STORY_REFERENCE_MEDIA_IDSOptionale kommaseparierte Media-Library-IDs des betreiberseitig freigegebenen Inhaltsbild-Referenzsatzes.
AI_IMAGE_REFERENCE_ALLOWED_HOSTSKommaseparierte HTTPS-Hosts, von denen Referenzen geladen werden dürfen. Der konfigurierte AWS-Bucket-Host wird automatisch zugelassen.
MFLUX_IMAGE_MODELLokale Modellkennung beziehungsweise lokaler Modellpfad für MFLUX; Projektdefault ist FLUX.2 klein 4B.
IMAGE_HTTP_API_URLHTTPS-URL eines generischen OpenAI-kompatiblen Bildendpunkts. Dieser Vertrag überträgt keine Referenzbilder.
IMAGE_HTTP_API_KEYOptionaler serverseitiger API-Key des generischen HTTP-Endpunkts.
IMAGE_HTTP_MODELModellkennung 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.

VariableWert und Zweck
KUGELAUDIO_API_KEYAPI-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_URLBasis-URL der API, im Projekt standardmäßig https://api.eu.kugelaudio.com.
KUGELAUDIO_TRANSPORTwebsocket oder rest. WebSocket ist Standard und notwendig, wenn KugelAudio Wort-Zeitmarken mitsenden soll.
KUGELAUDIO_MODEL_IDKennung des zu verwendenden KugelAudio-Modells, in der Beispielkonfiguration kugel-3.
KUGELAUDIO_VOICE_ID, KUGELAUDIO_VOICE_ID_DE, KUGELAUDIO_VOICE_ID_ENNumerische 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_ENOptionaler Sprachcode für die API. Ohne Override leitet der Adapter ihn aus der Inhalts-Locale ab.
KUGELAUDIO_WORD_TIMESTAMPStrue fordert beim WebSocket-Aufruf Wort-Zeitmarken für die Hervorhebung in der App an.
KUGELAUDIO_REQUIRE_TIMESTAMPStrue lässt den Job fehlschlagen, wenn zwar Audio, aber keine Wort-Zeitmarken zurückgegeben wurden.
KUGELAUDIO_NORMALIZEtrue aktiviert die Textnormalisierung des Providers vor der Synthese.
KUGELAUDIO_DEBUGtrue protokolliert technische WebSocket-Metadaten zur Fehlersuche. Im Regelbetrieb false lassen.
KUGELAUDIO_TIMEOUT_MSMaximale Laufzeit eines Provideraufrufs in Millisekunden, standardmäßig 600000.
KUGELAUDIO_SAMPLE_RATEGewünschte Sample-Rate und Grundlage der erzeugten WAV-Datei, standardmäßig 24000.
KUGELAUDIO_CHANNELSKanalanzahl der erzeugten WAV-Datei, standardmäßig 1 für Mono.
KUGELAUDIO_CFG_SCALEOptionaler numerischer Guidance-Wert des Modells. Leer lassen, um den Providerstandard zu verwenden.
KUGELAUDIO_MAX_NEW_TOKENSOptionales Tokenlimit für die Generierung. Leer bedeutet, dass kein eigener Wert an KugelAudio gesendet wird.
KUGELAUDIO_SPEEDOptionaler numerischer Geschwindigkeitsfaktor für die Sprachausgabe.

ElevenLabs

Diese Variablen werden ausgewertet, wenn TTS_PROVIDER=elevenlabs gesetzt ist.

VariableWert und Zweck
ELEVENLABS_API_KEYGeheimer API-Key und für diesen Provider verpflichtend.
ELEVENLABS_API_URLBasis-URL der API, standardmäßig https://api.elevenlabs.io.
ELEVENLABS_VOICE_ID, ELEVENLABS_VOICE_ID_DE, ELEVENLABS_VOICE_ID_ENVerpflichtende Voice-ID mit optionalen sprach- oder locale-spezifischen Overrides.
ELEVENLABS_MODEL_IDModellkennung für die Synthese, standardmäßig eleven_multilingual_v2.
ELEVENLABS_OUTPUT_FORMATPCM- 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_ENOptionaler Sprachcode. Ohne Override wird der Sprachanteil der Inhalts-Locale verwendet.
ELEVENLABS_FORCE_ALIGNMENTtrue ruft nach der Synthese Forced Alignment auf, um Wort-Zeitmarken zu erzeugen.
ELEVENLABS_ENABLE_LOGGINGSteuert den gleichnamigen Queryparameter der ElevenLabs-API. Der Wert betrifft das providerseitige Request-Logging.
ELEVENLABS_TIMEOUT_MSMaximale Laufzeit für Synthese oder Alignment in Millisekunden, standardmäßig 600000.
ELEVENLABS_STABILITYOptionaler numerischer Stabilitätswert der Stimme. Leer verwendet den Providerstandard.
ELEVENLABS_SIMILARITY_BOOSTOptionaler numerischer Wert für die Ähnlichkeit zur gewählten Stimme.
ELEVENLABS_STYLEOptionaler numerischer Stilwert der Stimme.
ELEVENLABS_USE_SPEAKER_BOOSTOptionales true oder false für die Speaker-Boost-Option.
ELEVENLABS_SEEDOptionaler numerischer Seed, um Generierungen bei gleicher Konfiguration besser reproduzierbar zu machen.
ELEVENLABS_APPLY_TEXT_NORMALIZATIONTextnormalisierung der API, beispielsweise auto. Der Wert wird unverändert an ElevenLabs übergeben.
ELEVENLABS_APPLY_LANGUAGE_TEXT_NORMALIZATIONOptionales true oder false für die sprachspezifische Textnormalisierung.
ELEVENLABS_OPTIMIZE_STREAMING_LATENCYOptionaler numerischer API-Parameter zur Latenzoptimierung. Leer verwendet den Providerstandard.

Qwen3-TTS

Diese Variablen werden ausgewertet, wenn TTS_PROVIDER=qwen gesetzt ist.

VariableWert und Zweck
QWEN_TTS_PYTHON_BINPfad zum Python-Interpreter der vorbereiteten Qwen-Umgebung. npm install richtet diese Python-Umgebung nicht ein.
QWEN_TTS_SCRIPT_PATHPfad zum Adapter-Script, normalerweise ./scripts/qwen_tts_generate.py.
QWEN_TTS_BASE_MODEL_PATHPfad zum lokalen Qwen-Base-Modell für Voice Cloning. Die Modellgewichte sind nicht Bestandteil des Repositories.
QWEN_TTS_MODEL_IDOptionale 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_DEVICETorch-Gerät für die Synthese, beispielsweise cuda:0; muss zur Serverhardware passen.
QWEN_TTS_DTYPERechengenauigkeit des Modells, beispielsweise bfloat16; muss von Gerät und Installation unterstützt werden.
QWEN_TTS_ATTNAttention-Implementierung, etwa flash_attention_2 oder bei fehlendem FlashAttention eine unterstützte Alternative wie sdpa.
QWEN_TTS_MAX_NEW_TOKENSAbsolute Obergrenze der generierten Tokens, standardmäßig 2048. Kann ebenfalls je Locale überschrieben werden.
QWEN_TTS_DYNAMIC_MAX_NEW_TOKENStrue berechnet abhängig von Text- und Wortlänge eine kleinere dynamische Grenze, um Weitergenerieren nach kurzen Labels zu vermeiden.
QWEN_TTS_MIN_NEW_TOKENSUntergrenze der dynamischen Berechnung, standardmäßig 48.
QWEN_TTS_NEW_TOKENS_PER_CHARZeichenfaktor der dynamischen Tokenabschätzung, in der Beispielkonfiguration 2.2.
QWEN_TTS_NEW_TOKENS_PER_WORDWortfaktor der dynamischen Tokenabschätzung, in der Beispielkonfiguration 6.
QWEN_TTS_TRIM_TO_ALIGNMENTtrue schneidet das erzeugte Audio auf das vom Forced Aligner erkannte Sprachfenster zu.
QWEN_TTS_TRIM_PADDING_BEFOREZusätzlicher zeitlicher Rand in Sekunden vor dem Alignment-Fenster, beispielsweise 0.08.
QWEN_TTS_TRIM_PADDING_AFTERZusätzlicher zeitlicher Rand in Sekunden nach dem Alignment-Fenster, beispielsweise 0.18.
QWEN_TTS_TIMEOUT_MSMaximale Laufzeit des Python-Prozesses in Millisekunden, standardmäßig 600000.
QWEN_TTS_X_VECTOR_ONLYtrue 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_ENPfad 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_ENExaktes Transkript der jeweiligen Referenzaufnahme. Text und Aufnahme müssen übereinstimmen.
QWEN_TTS_MODE_DE, QWEN_TTS_MODE_ENModus pro Sprache: voice-clone verwendet das Base-Modell mit Referenz; custom-voice verwendet eine vorbereitete Modellstimme.
QWEN_TTS_CUSTOM_VOICE_MODEL_PATHPfad zum CustomVoice-Modell. Nur erforderlich, wenn mindestens eine Locale custom-voice verwendet.
QWEN_TTS_SPEAKER_ENPreset-Sprecher des CustomVoice-Modells für Englisch. Entsprechende Suffixe können für weitere Locales gesetzt werden.
QWEN_TTS_INSTRUCT_ENOptionale Stilanweisung für die englische CustomVoice-Stimme; weitere Locale-Suffixe werden analog ausgewertet.
QWEN_ALIGNER_CHECKPOINTPfad zum Qwen3-ForcedAligner. Ohne Checkpoint erzeugt der lokale Aligner keine Wort-Zeitmarken.
QWEN_ALIGNER_DEVICETorch-Gerät des Aligners, beispielsweise cuda:0.
QWEN_ALIGNER_DTYPERechengenauigkeit des Aligners, beispielsweise bfloat16.
QWEN_ALIGNER_KWARGSJSON-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

VariableWert und Zweck
NEXT_PUBLIC_DOCS_ENVVerö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_URLVollstä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_.
  • .env und .env.local werden nicht committed.
  • .env.example enthält nur Platzhalter oder unkritische lokale Defaults.
  • Preview-Secret und Ziel-URLs müssen innerhalb einer Umgebung zusammenpassen. Insbesondere entspricht APP_ORIGIN der App dem Origin von PREVIEW_FRONTEND_URL des zugehörigen CMS.
  • Staging und Produktion verwenden getrennte Secrets.