Umgebungsvariablen
Diese Seite erklärt die Variablen aus den .env.example-Dateien 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. |
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. 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. |
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. |
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. Der zugehörige Account sollte nur die für Medien beziehungsweise Datenreleases benötigten Bucket-Rechte erhalten. |
AWS_ACCESS_SECRET | Geheimer Schlüssel zum S3-Zugang. Wird vom Strapi-Upload-Provider und vom Release-Script verwendet. |
AWS_REGION | Region des Buckets, beispielsweise eu-central-1. Sie wird auch zur Bildung der öffentlichen S3-Adresse verwendet. |
AWS_BUCKET | Bucketname für produktive Medien. Dient als Fallback auch als Ziel für öffentliche Datenreleases, wenn DATA_RELEASE_BUCKET fehlt. |
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 und Datenrelease
| 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. |
DATA_RELEASE_BUCKET | Ziel-Bucket für npm run data:release. Ist der Wert leer, verwendet das Script AWS_BUCKET. |
DATA_RELEASE_PREFIX | Ordnerpräfix im Bucket, standardmäßig data. Darunter entstehen latest.json und releases/<version>/. |
DATA_RELEASE_PUBLIC_BASE_URL | Öffentliche Basis-URL des Releaseordners. Sie wird in latest.json und im Manifest verwendet und muss aus fremden Installationen erreichbar sein. |
DATA_RELEASE_SOURCE | Freie Quellenbezeichnung im Manifest, standardmäßig production. Sie beschreibt, aus welcher Instanz der Export erzeugt wurde. |
Aufbau und Import des Datenexports →
TTS-Anbieter auswählen
| Variable | Wert und Zweck |
|---|---|
TTS_PROVIDER | Aktiver Adapter: qwen, kugelaudio oder elevenlabs. Nur die Zugangsdaten und Modelle dieses Anbieters sind für die Generierung erforderlich. |
TTS_WORKER_POLL_MS | Abstand in Millisekunden, in dem der Worker nach verarbeitbaren Jobs sucht; Projektstandard ist 5000. |
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_UPLOAD_PATH | Unterordner des Upload-Providers für erzeugte Audiodateien, standardmäßig tts. |
TTS_MEDIA_FOLDER_NAME | Anzeigename des Ordners in der Strapi Media Library. Fällt ohne eigenen Wert auf TTS_UPLOAD_PATH zurück. |
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.
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_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.
- Staging und Produktion verwenden getrennte Secrets.