Hoppa till huvudinnehåll

Miljövariabler

Den här sidan listar de operatörsinriktade miljövariabler som läses av aktuell Libre WebUI-backend, frontend och underhållsskript. Interna kanarievärden endast för test utelämnas avsiktligt.

Backendserver

VariabelStandardSyfte
NODE_ENVdevelopmentRuntime-läge
PORT3001 i utveckling, 8080 i produktionBackendens HTTP-port
TRUST_PROXYinte angiven (0 i Helm)Exakt antal betrodda reverse proxy-hopp för klientadressen
CORS_ORIGINlokala utvecklingsoriginKommaseparerade tillåtna webbläsarorigin
SERVE_FRONTENDinte angivenServera byggd frontend från backend när true
DOCKER_ENVinte angivenAktivera Docker-inriktat beteende när true
DATA_DIRbackend/data; ~/.libre-webui i paketerad CLIBeständig datakatalog
PLATFORM_PREFLIGHT_TMP_DIRbackend/temp/preflight; användarcache i paketerad CLIArbetsutrymme för privat DB-/WAL-inspektionskopia; dimensionera för databas plus WAL
PLUGIN_UPLOAD_TEMP_DIRlibre-webui-plugin-uploads i operativsystemets tempArbetsutrymme för pågående pluginuppladdningar
PLUGINS_DIR$DATA_DIR/pluginsSkrivbar katalog för installerade/anpassade plugin
BASE_URLhttp://localhost:3001Bas-URL för OAuth-callbackstandard
LOG_LEVELinfo (warn i test)Backendens loggnivå
LOG_FORMATtextjson ger strukturerade enradsloggar med tid, korrelations-ID och maskering
OTEL_EXPORTER_OTLP_ENDPOINTinte angivenValfri OTLP/HTTP JSON-telemetriexport; utan värde lämnar ingen telemetri processen
OTEL_EXPORTER_OTLP_HEADERSinte angivenKommaseparerade key=value-huvuden till OTLP-insamlaren
OTEL_SERVICE_NAMElibre-webuiResursattributet service.name på exporterad telemetri
WEBUI_HOSTloopback; 0.0.0.0 i DockerHTTP-lyssningsadress
OPEN_BROWSERtrue när frontend serverasAnge false för att hindra automatisk webbläsarstart
FULL_DOCUMENT_CONTEXT_MAX_TOKENS32000Tokenskydd för fulldokumentkontext per chatt (1000-2000000)
GALLERY_RETENTION_DAYSinte angiven (behåll för alltid)Ta bort galleriemedia äldre än detta antal dagar genom schemaläggarens svep
RECOVERY_DRILL_INTERVAL_HOURSinte angiven (övningar av)Kör verifierad återställningsövning automatiskt var N:e timme (solo)
RECOVERY_DRILL_HISTORY60Behållna historikposter för återställningsövningar

Källkörningar förankrar relativa DATA_DIR, PLUGINS_DIR och PLATFORM_PREFLIGHT_TMP_DIR i backendkatalogen oberoende av skalets arbetskatalog. Utan DATA_DIR eller med DATA_DIR=./data använder rot- och backendkommandon därför backend/data. För kompatibilitet fortsätter DATA_DIR=./backend/data välja backend/backend/data; ändra endast under en avsiktlig, stoppad säkerhetskopiering och migrering. En oangiven källprofil använder också backend/backend/data när det är det enda beständiga lagret. Om båda platserna innehåller tillstånd och ingen sökväg valts avvisas starten säkert i stället för att gissa, kopiera eller sammanfoga.

Startprogrammen npx, global npm och interaktiv Homebrew bevarar data under ~/.libre-webui. En uttrycklig relativ DATA_DIR löses från anroparens arbetskatalog och görs absolut före backendstart. Relativ PLUGINS_DIR följer samma regel; utan värde finns skrivbara plugin under $DATA_DIR/plugins. Inspektionsutrymmet är en skrivbar cache utanför datakatalogen: ~/Library/Caches/libre-webui på macOS, %LOCALAPPDATA%\libre-webui på Windows eller ${XDG_CACHE_HOME:-~/.cache}/libre-webui på andra system. Homebrew-tjänsten fäster samma hemkatalog och använder var/libre-webui/preflight. Ange PLATFORM_PREFLIGHT_TMP_DIR när cachen inte rymmer databas och WAL. Docker- och Helm-driftsättningar använder absoluta /app/backend/data och /app/backend/temp/preflight med separata monteringar.

Plattformsgrund

Standardprofilen solo använder SQLite, lokala krypterade blobbar, krypterade inbäddade vektorer, lokal samordning och en inbäddad beständig worker. team använder PostgreSQL, privata S3-kompatibla blobbar, PGVector, Redis och extern worker. Teamkonfiguration avvisas säkert om inte alla delade beroenden väljs tillsammans.

VariabelStandardSyfte
LIBRE_PLATFORM_MODEsoloVälj sammanhängande solo- eller team-profil
DATABASE_BACKENDsqliteVälj sqlite eller postgres
DATABASE_URLinte angivenPostgreSQL-anslutnings-URL, krävs med postgres
DATABASE_SSL_MODEverify-fullPostgreSQL TLS-policy: disable, require eller värdnamnsverifierande verify-full
POSTGRES_MIGRATION_MODEapplyKör kompatibla migreringar under ledarlåset eller validate för skrivskyddad schemakontroll
POSTGRES_POOL_MAX10Högsta PostgreSQL-anslutningar per program- eller workerprocess (1-100)
POSTGRES_CONNECT_TIMEOUT_MS5000Tidsgräns för PostgreSQL-anslutning (1-60000 ms)
POSTGRES_IDLE_TIMEOUT_MS30000Tidsgräns för inaktiv PostgreSQL-anslutning (1-600000 ms)
POSTGRES_STATEMENT_TIMEOUT_MS30000Tidsgräns för PostgreSQL-sats (1-600000 ms)
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS60000Väntetid för migreringsledarlås (1-600000 ms)
BLOB_STORE_BACKENDlocalVälj krypterad local lagring eller privat s3
VECTOR_STORE_BACKENDembedded med SQLiteVälj krypterade embedded-vektorer eller pgvector
COORDINATION_BACKENDlocal i solo; redis i teamVälj processlokal eller Redis-samordning
REDIS_URLinte angivenredis:- eller rediss:-URL, krävs med Redis-samordning
REDIS_KEY_PREFIXlibreNamespace med 1-64 tecken för Libres samordningsnycklar
REDIS_CONNECT_TIMEOUT_MS5000Inledande anslutningstidsgräns för Redis, högst 60 sekunder
JOB_WORKER_MODEembedded i solo; external i teamKör hanterare i programmet eller fristående delad worker
RESOURCE_LEASE_TTL_MS30000Samordningslease-TTL för beständiga jobbresurser (5000-300000)
JOB_WORKER_CONCURRENCY4Beständiga jobb en worker kan köra samtidigt (1-32)
CHAT_STREAM_EVENT_RETENTION_HOURS24Timmar som chattströmshändelser behålls före timrensningen
PLATFORM_EVENT_RETENTION_DAYS30Dagar en beständig händelse behålls före timrensningen
PLATFORM_JOB_RETENTION_DAYS30Dagar avslutade icke-livscykeljobb behålls
LIBRE_SKIP_STARTUP_INTEGRITY_SCANinte angiven1 hoppar över djup äldre chiffertextsökning vid nästa start
STORAGE_ENCRYPTION_KEYSinte angivenHemlig JSON-nyckelkarta; måste innehålla legacy som matchar ENCRYPTION_KEY
STORAGE_ENCRYPTION_ACTIVE_KEY_IDinte angivenNyckel-ID för nya lokala blobbar och inbäddade vektorer
BLOB_QUOTA_BYTES_PER_USER10737418240Beständigt största klartextblobbyte per ägare
BLOB_QUOTA_RESERVATION_TTL_MS3600000Livslängd för övergiven strömmande kvotreservation (minst 60000 ms)
S3_BUCKETinte angivenPrivat S3-kompatibel bucket, krävs med s3
S3_REGIONinte angivenS3-region, krävs med s3
S3_ENDPOINTleverantörsstandardValfri absolut HTTP(S)-endpoint för MinIO eller kompatibel tjänst
S3_ACCESS_KEY_IDSDK-autentiseringskedjaValfri uttrycklig S3-åtkomstnyckel
S3_SECRET_ACCESS_KEYSDK-autentiseringskedjaKrävs när uttrycklig åtkomstnyckel anges
S3_SESSION_TOKENinte angivenValfri token med uttryckliga S3-uppgifter
S3_FORCE_PATH_STYLEfalseAnge true för tjänster som kräver sökvägsbaserad adressering
S3_BLOB_PREFIXlibre/blobsOgenomskinligt bucketnyckelprefix som ägs av Libre

Utan en versionshanterad lagringsnyckelkarta använder lagringsadaptrar befintlig ENCRYPTION_KEY som ID legacy; om även den saknas läser de ${DATA_DIR}/.encryption_key utan att skapa eller ändra. Uttrycklig konfiguration och beständig fil måste överensstämma. Om kartan införs medan en äldre nyckel finns behålls den under exakt ID legacy tills alla objekt och vektorer har skrivits eller slagits in på nytt och verifierats. Konflikter, osäkra filbehörigheter, symlänkar och saknade nycklar avvisas säkert.

Redis är samordning, inte kanonisk beständighet. Enbart Redis gör inte SQLite, lokala filer eller processägt tillstånd säkert över repliker. I teamläge använder HTTP-gränser, chatt-/WebSocket-anslutningar, STT/TTS/ljudarbete, arkivimporter och Work-terminaler Redis-baserat gemensamt tillträde. Kapaciteter gäller över alla repliker. Fel returnerar 503 eller avbryter pågående operation; Libre återgår aldrig till oberoende lokal räknare. Se Plattformsgrund.

Medföljande team-Compose och Helm vidarebefordrar alla väljare och justeringsvärden till program och extern worker. I Helm finns icke-hemliga väljare under env; använd secrets.redisUrl, secrets.databaseUrl och secrets.storageEncryptionKeys för anslutningar och nycklar. PostgreSQL-poolgränser är per process: budgetera minst (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX anslutningar plus marginal. Behåll DATABASE_SSL_MODE=verify-full för hanterad/fjärr-PostgreSQL. Endast medföljande Compose väljer disable eftersom lyssnaren är isolerad. Team-Helm kräver stabil secrets.jwtSecret delad av alla poddar; annars skulle processlokalt signeringsmaterial skapas. S3 tar emot ogenomskinliga nycklar och chiffertext; bucket- och leverantörs-URL:er lagras inte i metadata.

Integrerade solo- och teamarkiv bevarar PostgreSQL-pooler och tidsgränser, Redis-tidsgräns, båda blobkvoter, plattformsväljare och S3-adressering i signerad och krypterad skyddad konfiguration. En ren återställning kan därför publicera driftvärden utan klartext i arkivmetadata.

Team-Compose- och Helm-par får samma lösta OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT och OLLAMA_MAX_CONTEXT. Leverantörsanrop för inbäddningar, beständiga chattar och Work körs i workern, så värdena får inte avvika. Serveringångarna tolkar numeriska värden som fullständiga positiva bas-10-heltal före tillstånd. Delvärden som 300000ms, exponent/hex, värden utanför intervall och lång tidsgräns under standarden stoppar starten.

Helm begränsar TRUST_PROXY till exakt heltal 016 och skickar det endast till HTTP-poddar. Behåll 0 för direkt trafik. Ange exakt fast antal för ingress-/lastbalanserarkedjan; använd aldrig obegränsat true. Fel antal grupperar klienter under proxyadressen eller litar på en klientangiven adress.

PostgreSQL-schemakompatibilitet kräver exakt version. Helm-program och worker använder Recreate; dränera och avsluta alla gamla poddar före teamuppgradering och låt en ny process migrera under rådgivande ledarlås. Kör inte blandade binärversioner eller påstå nollavbrott. Rollback återställer verifierat arkiv till rena PostgreSQL-/S3-mål före matchande äldre binär.

Ett aktivt teamprogram kräver worker.replicaCount >= 1; Helm nekar ett levande program utan beständig worker. Sätt program och worker till noll för full paus. Program noll med positiv worker är avsiktligt dränerings-/återställningsläge som fortsätter köbearbetning utan webbtrafik.

Privat säkerhetskopieringshjälp

Variablerna konfigurerar deploy/private/libre-webui-backup och läses av underhållsskriptet, inte programprocessen:

VariabelStandardSyfte
LIBRE_WEBUI_STACK_DIR/opt/libre-webuiKatalog med privat Compose-fil
LIBRE_WEBUI_BACKUP_DIR/var/backups/libre-webuiSkyddad katalog för säkerhetskopior och låsfil
LIBRE_WEBUI_BACKUP_RETENTION_DAYS14Ålder då slutförda säkerhetskopior tas bort
LIBRE_WEBUI_CONTAINER_NAMElibre-webuiDriftsatt programcontainer som inspekteras
LIBRE_WEBUI_BACKUP_KEY_DIR/etc/libre-webui/backup-keysPrivat katalog för arkivkryptering och signeringsnycklar
LIBRE_WEBUI_RESTORE_IMAGEkrävs för återställningGranskat oföränderligt Libre-image-ID eller digest
LIBRE_WEBUI_RESTORE_CONFIG_DIRsökväg per volym under /etc/libre-webui/restoredNy katalog för återställd konfiguration

systemd-enheten läser åsidosättningar från den valfria rootägda /etc/libre-webui/backup.env. Ange läge 0600. Stackkatalog, lagringstid, containernamn och nyckelkatalog kan anges där. Filsystemsandlådan tillåter endast skrivning under standardkatalogen. Anpassad LIBRE_WEBUI_BACKUP_DIR kräver dessutom exakt förskapad katalog i en ReadWritePaths=-drop-in; se Privat fjärrdriftsättning.

Autentisering och säkerhet

VariabelStandardSyfte
ENABLE_SIGNUPfalseTillåt registrering efter första lokala administratören
JWT_SECRETgenererad/reserv i utvecklingJWT-signeringshemlighet; ange uttryckligen i produktion
JWT_EXPIRES_IN7dSessionstokens livslängd
ENCRYPTION_KEYautomatiskt genereradHexnyckel med 64 tecken för krypterade värden
DEBUG_ENCRYPTIONinte angivenLogga krypteringsfelsökning när angiven
TURNSTILE_SITE_KEYinte angivenCloudflare Turnstile-webbplatsnyckel för inloggning
TURNSTILE_SECRET_KEYinte angivenTurnstile-hemlighet för backendverifiering
TURNSTILE_EXPECTED_HOSTNAMEvärdnamn från BASE_URLObligatoriskt värdnamn i Cloudflares verifieringssvar
MFA_REQUIRED_MODEinte angiven (optional)Fäst tvåfaktorspolicyn till optional eller required
WEBAUTHN_RP_IDbegärans värdnamnFast relying-party-ID för passkeys bakom flera värdnamn
VAPID_PUBLIC_KEYgenererad och krypterat lagradFäst offentlig Web Push VAPID-nyckel
VAPID_PRIVATE_KEYgenererad och krypterat lagradFäst privat Web Push VAPID-nyckel
VAPID_SUBJECTmailto:admin@localhostKontaktanspråk i signerade Web Push-auktoriseringar

Turnstile aktiveras endast när båda nycklarna finns.

ENABLE_SIGNUP=false tillåter fortfarande den första lokala administratören i en tom databas och blockerar därefter ytterligare konton. Skydda en fjärrnåbar startrutt med en yttre identitetsgräns före första start.

Varje JWT binds till en serversession (sid), så utloggning eller återkallning från Inställningar → Sessioner ogiltigförklarar token på alla repliker och stänger aktiva WebSocket-anslutningar. Lagringstid för säkerhetsrevision kan konfigureras:

VariabelStandardSyfte
AUDIT_RETENTION_DAYS180Dagar som rader behålls i säkerhetsrevisionsloggen

Generisk OIDC-baserad enkel inloggning

Alla OpenID Connect-leverantörer med identifieringsdokument kan användas. Flödet använder PKCE (S256), CSRF-tillstånd och nonce som verifieras i signaturkontrollerad ID-token. Identiteter länkas på det stabila anspråket sub.

VariabelStandardSyfte
OIDC_ISSUER_URLinte angivenUtfärdarens bas-URL; identifiering hämtas från <issuer>/.well-known/openid-configuration
OIDC_CLIENT_IDinte angivenOAuth-klient-ID registrerat hos leverantören
OIDC_CLIENT_SECRETinte angivenOAuth-klienthemlighet
OIDC_DISPLAY_NAMESingle Sign-OnEtikett på inloggningsknappen
OIDC_SCOPESopenid profile emailBegärda omfång
OIDC_CALLBACK_URLBASE_URL + OIDC-callbackruttOmdirigerings-URI registrerad hos leverantören
OIDC_ALLOWED_EMAIL_DOMAINSinte angivenKommaseparerad lista; verifierad e-post i en domän krävs
OIDC_GROUP_CLAIMgroupsID-tokenanspråk med gruppnamn
OIDC_ADMIN_GROUPSinte angivenKommaseparerad lista; adminrollen följer medlemskapet vid inloggning
OIDC_SYNC_GROUPSfalsetrue synkroniserar Libre-grupper med gruppanspråket vid inloggning

OIDC aktiveras endast när utfärdar-URL, klient-ID och klienthemlighet finns. E-post som redan används av ett olänkat lokalt konto avvisas i stället för att sammanfogas tyst, och kontoskapande följer ENABLE_SIGNUP.

WebSocket-tillträde för Chatt kan justeras utan svagare autentisering:

VariabelStandardSyfte
CHAT_WS_MAX_PAYLOAD_BYTES10 MiBStörsta accepterade WebSocket-meddelande
CHAT_WS_MAX_MESSAGES_PER_MINUTE120Meddelandetak per WebSocket-anslutning
CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER4Leverantörsgenereringar per konto
CHAT_WS_MAX_CONNECTIONS_PER_USER5Samtidiga autentiserade socketar per konto
WEBSOCKET_TICKET_TTL_MS30000Livslängd för engångsbiljett Chatt/Work, högst 60 sekunder

Webbläsaren byter Authorization-huvudet mot en ogenomskinlig biljett och placerar endast det kortlivade värdet i WebSocket-URL:en. Biljetter används en gång, binds till protokoll och session och lagras som hash. Beständiga sessionstoken hålls därmed borta från reverse proxy-loggar. När CORS_ORIGIN eller BASE_URL anges måste Origin matcha. Ange minst ett värde på fjärrnåbar driftsättning; utan båda tillåter filtret lokal utveckling. Originlösa uppgraderingar stöds avsiktligt för Electron och andra klienter men kräver en giltig engångsbiljett och samma konto-, Work- och uppgiftskontroller. Behandla biljetten som autentiseringsgräns och begränsa övrig åtkomst med TLS, brandvägg och reverse proxy.

OAuth

VariabelSyfte
GITHUB_CLIENT_IDGitHub OAuth-klient-ID
GITHUB_CLIENT_SECRETGitHub OAuth-klienthemlighet
GITHUB_CALLBACK_URLÅsidosättning av GitHub-callback-URL
HUGGINGFACE_CLIENT_IDHugging Face OAuth-klient-ID
HUGGINGFACE_CLIENT_SECRETHugging Face OAuth-klienthemlighet
HUGGINGFACE_CALLBACK_URLÅsidosättning av Hugging Face-callback-URL

Om callback-URL:er inte anges bygger Libre WebUI standardvärden från BASE_URL.

Ollama

VariabelStandardSyfte
OLLAMA_BASE_URLhttp://localhost:11434Bas-URL för Ollama-API
OLLAMA_TIMEOUT300000Standardtidsgräns för Ollama-begäran (1 000-3 600 000 ms)
OLLAMA_LONG_OPERATION_TIMEOUT900000Tidsgräns för lång operation, inte kortare än OLLAMA_TIMEOUT
OLLAMA_MAX_CONTEXT32768Största modellkontext som antas automatiskt (128-2 097 152 token)

Webbsökning

VariabelStandardSyfte
SEARXNG_URLinte angivenStandardendpoint för SearXNG; administratören aktiverar fortfarande under Inställningar > Sök

Libre Claw

VariabelStandardSyfte
LIBRE_CLAW_BASE_URLhttp://127.0.0.1:8766Valfri Libre Claw-daemon-URL
LIBRE_CLAW_TIMEOUT_MS30000Tidsgräns för Libre Claw HTTP-begäran

Work-runtime

Variablerna konfigurerar Work-körning på datorn eller Kubernetes-klustret som kör backend. Docker är standardruntime; Helm väljer Kubernetes när work.enabled=true.

VariabelStandardSyfte
WORK_RUNTIME_IMAGEnode:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3Fäst image för Work-sandlådor
WORK_DOCKER_COMMANDdockerDocker-backendens CLI-program
WORK_COMMAND_TIMEOUT_MS120000Standardtidsgräns; verktyg kan begära högst 600000 ms
WORK_MAX_OUTPUT_CHARS50000Gräns för fångad stdout/stderr per ström
WORK_MAX_AGENT_ROUNDS48Leverantörsoberoende varvbudget per körning
WORK_STATUS_BLURB_MODEL1Ange 0 för att hoppa över modellanropet som skriver agentstatus
WORK_MEMORY_LIMIT2gMinnesgräns per Work-container
WORK_CPU_LIMIT2CPU-gräns per Work-container
WORK_PIDS_LIMIT256Processgräns per Work-container
WORK_PREVIEW_PORT4173Port för förhandsvisningsserver i uppgiftscontainern
WORK_PREVIEW_BIND127.0.0.1Värdgränssnitt där förhandsvisningsporten publiceras; Compose-driftsättningar på inbyggd Docker Engine måste använda ett nåbart icke-publikt bryggränssnitt
WORK_DOCKER_PUBLISHED_HOSTappstandard: samma som WORK_PREVIEW_BIND; Compose-standard: host.docker.internalBackendvärd/IP för Docker-publicerade förhandsvisnings-, skärm- och ljudportar
WORK_COMPUTER_SCREEN_PORT6080Containerport för Work Computer-skärmbrygga
WORK_COMPUTER_AUDIO_PORT6081Containerport för Work Computer-ljudbrygga
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL3Samtidiga runtimebaserade uppgifter för instansen
WORK_MAX_ACTIVE_RUNTIMES_PER_USER2Samtidiga runtimebaserade uppgifter per användare
WORK_MAX_TASKS_GLOBAL500Största antal beständiga Work-uppgifter för instansen
WORK_MAX_TASKS_PER_USER100Största antal beständiga Work-uppgifter per administratör
WORK_NETWORK_NAMElibre-webui-workHanterat sandlådebryggnätverk
WORK_RUN_LEASE_WAIT_MS60000Väntetid på uppgiftens delade runtimelease före replikakonflikt
WORK_RUNTIME_DNSinte angivenKommaseparerade resolver-IP för nätverksuppgifter
WORK_DOCKER_SOCKETDOCKER_HOST vid unix:// eller tcp://, annars /var/run/docker.sockDocker Engine-endpoint för terminal och diagnostik
WORK_TERMINAL_MAX_SESSIONS_PER_TASK2Samtidiga webbläsarterminaler per uppgift
WORK_TERMINAL_IDLE_TIMEOUT_MS900000Inaktivitetstid före terminalstängning
WORK_RUNTIME_IDLE_TIMEOUT_MS0 (inaktiverad)Stoppa sandlåda efter denna inaktivitet
WORK_HOST_WORKSPACES_ENABLEDfalseTillåt värdmapp i stället för volym
WORK_HOST_WORKSPACE_ROOTSserveranvändarens hemkatalog:-separerade rötter som värdarbetsytan måste ligga inom
WORK_RUNTIME_BACKENDdockerSandlådebackend: docker eller kubernetes
WORK_K8S_NAMESPACElibre-webui-workNamespace för Kubernetes-sandlådepoddar och PVC
WORK_K8S_STORAGE_CLASSklusterstandardStorageClass för arbetsyte-PVC
WORK_K8S_WORKSPACE_SIZE5GiPVC-storlek per uppgift (verklig diskkvot)
WORK_K8S_POD_READY_TIMEOUT_MS900000Vänta på att en sandlåde-Pod blir Running
WORK_K8S_POD_GONE_TIMEOUT_MS60000Vänta på att borttagen Pod försvinner
AGENT_CLI_MODELS_ENABLEDinte angiven (adminreglage, av)Fäst Agent-funktionen eller lämna åt administratörsreglaget
TOOLS_ACCESS_MODEinte angiven (endast admin)Fäst chattverktyg till admins eller all-users
STT_ACCESS_MODEinte angiven (alla användare)Fäst tal-till-text till admins eller all-users
TTS_ACCESS_MODEinte angiven (alla användare)Fäst text-till-tal till admins eller all-users
VOICE_MODE_ACCESS_MODEinte angiven (alla användare)Fäst handsfree-röstläge till admins eller all-users
VOICE_CLONING_ACCESS_MODEinte angiven (alla användare)Fäst röstkloning till admins eller all-users
TOOLS_PRIVATE_NETWORK_ALLOWLISTinte angivenExakta värdnamn för privata adresser, kommaseparerade
AGENT_CLI_TIMEOUT_MS600000Tid innan agent-CLI avslutas
CODEX_OAUTH_MODELS_ENABLEDtrueErbjud Codex (ChatGPT) till administratörer
CODEX_HOME~/.codexPlats för Codex CLI-inloggning (auth.json)

Agent-CLI-binärer och Codex OAuth-uppgifter är nodlokala. De stöds endast i en solo-process där identifiering och körning ser samma filsystem och miljö. Teamläge kör beständiga chattjobb i extern worker och kräver därför AGENT_CLI_MODELS_ENABLED=false och CODEX_OAUTH_MODELS_ENABLED=false; starten nekar övriga värden i stället för att annonsera en leverantör som bara finns på en programreplik. Använd Ollama eller ett leverantörsplugin vars uppgifter och dirigering lagras i delad PostgreSQL eller vidarebefordras identiskt.

På Docker-backend bind-monterar en värdarbetsyta en verklig katalog vid /workspace, så uppgiften läser och skriver direkt i stället för i egen volym. Kubernetes nekar värdmappar. Det minskar avsiktligt Docker-sandlådan: håll WORK_HOST_WORKSPACES_ENABLED av och WORK_HOST_WORKSPACE_ROOTS så snäv som möjligt. Sökvägar löses genom symlänkar före rotkontroll och .ssh, .gnupg, .aws, .config nekas helt.

Agent-CLI-modeller exponerar installerade kodagenter (claude, codex) som valbara chattmodeller, så en prenumerationsagent kan svara utan API-nyckel. Endast administratörer ser dem; CLI kör som serveranvändaren och ärver agentuppgifter. Behandla det som shellåtkomst för agenterna.

På Docker ansluter nätverksuppgifter till den hanterade bryggan WORK_NETWORK_NAME, skapad med intercontainerkommunikation avstängd så sandlådor inte når varandra eller driftsättningscontainrar. WORK_RUNTIME_DNS är Docker-egresspolicyns krok: peka på en filtrerande resolver för namnlistor. Icke-IP-adresser nekas och loggas. DNS-filter begränsar inte direkt IP-egress; använd värdbrandvägg vid behov. Kubernetes använder diagrammets standardnekande NetworkPolicy och work.networkPolicy.blockedEgressCidrs.

På Docker talar terminal och diagnostik direkt med Docker Engine-API. De följer WORK_DOCKER_SOCKET, annars DOCKER_HOSTunix:// eller vanlig HTTP tcp:// som en socketproxy (se docker-compose.socket-proxy.yml)—annars /var/run/docker.sock. En DOCKER_HOST som klienten inte kan använda (ssh:// eller tcp:// med DOCKER_TLS_VERIFY) rapporterar terminal och diagnostik otillgängliga; Work fortsätter genom Docker-CLI. På Kubernetes används Pod exec utan Docker-endpoint.

Work läser värdena vid backendstart. Förhandsvisningsporten är intern i uppgiftscontainern; Libre WebUI publicerar den på dynamiskt tilldelad loopbackport i stället för alla värdgränssnitt.

Fäst runtime-imagen vid granskad version eller digest. Höjd samtidighet och resursgränser ökar kapaciteten autonoma körningar kan använda. WORK_MAX_AGENT_ROUNDS gäller lika för Ollama och plugin. Säkerhetsbudgeten är max(128, WORK_MAX_AGENT_ROUNDS × 8). När budgeten tar slut begär Work en slutlig överlämning utan verktyg och slutar i needs_input i stället för ett rått gränsfel. En följdkörning fortsätter i samma beständiga arbetsyta. Sparad verktygsutdata begränsas separat till cirka 20 000 källtecken plus avkortningsmarkör.

Variablerna justerar en redan nåbar Work-runtime. Repositoryts Compose-driftsättning för en instans aktiverar den som standard: imagen innehåller Docker-CLI och filerna monterar värdsocketen. Två Compose-variabler styr anslutningen:

VariabelStandardSyfte
DOCKER_GID0Grupp-ID för värdens Docker-socket, tillagt till containeranvändaren
DOCKER_SOCKET/var/run/docker.sockVärdsökväg för Docker-socketen som monteras

DOCKER_GID måste vara socketens grupp sedd inifrån containern; macOS rapporterar annat. Team-Compose monterar ingen socket och Docker-Work förblir otillgängligt tills docker-compose.team.work.yml läggs till. Produktionsöverlägget ger program och worker samma filtrerade interna proxyendpoint, aldrig socketmontering eller grupp. Proxyn tillåter endast använda API-delar men containerskapande är fortfarande en värdkontrolluppgift; använd särskild eller rootless Work-daemon för starkare gräns. Helm monterar aldrig nodsocket. Aktivera Pod-/PVC-backend med work.enabled=true.

Profilen solo måste ha noll eller en programreplik eftersom den använder SQLite, lokala filer och processlokal samordning. Helm accepterar noll för paus och nekar större antal eller autoskalning. Fullständig team kan använda flera repliker och extern worker eftersom PostgreSQL, S3, PGVector och Redis äger delat tillstånd. Work-sandlådepoddar skalar oberoende; extern worker får samma Kubernetes-image, StorageClass och work.env-gränser som programmet.

Compose-filer accepterar även WEBUI_BIND_ADDRESS (standard 127.0.0.1) och WEBUI_PORT (8080). Behåll loopback om inte betrott LAN eller värdproxy måste nå porten.

Modellidentifiering hos leverantörer

En leverantörs modellkatalog identifieras på nytt när den saknas eller är inaktuell, så omläsning återspeglar aktuella modeller. Variablerna justerar cykeln:

VariabelStandardSyfte
PLUGIN_MODEL_DISCOVERY_TTL_MS21600000 (6 h)Ålder då lagrad katalog uppdateras vid nästa pluginlisteläsning
PLUGIN_MODEL_DISCOVERY_RETRY_MS600000 (10 min)Minsta intervall mellan försök
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS3000Hur länge ett pluginlistesvar väntar på uppdatering

En uppdatering som överskrider tidsgränsen slutförs ändå och visas vid nästa begäran. Uppdatera modeller kontaktar alltid leverantören och ignorerar intervallet.

Nycklar för leverantörsplugin

Leverantörsplugin kan använda miljönycklar som driftsättningsomfattande standard:

VariabelLeverantör
OPENAI_API_KEYOpenAI och OpenAI TTS
ANTHROPIC_API_KEYAnthropic
GROQ_API_KEYGroq
GEMINI_API_KEYGoogle Gemini
MISTRAL_API_KEYMistral
OPENROUTER_API_KEYOpenRouter
KIMI_API_KEYKimi Code från Moonshot AI
GITHUB_API_KEYGitHub Models
HUGGINGFACE_API_KEYHugging Face-API:er där konfigurerat
ELEVENLABS_API_KEYElevenLabs TTS
COMFYUI_API_KEYComfyUI-driftsättningar som kräver API-nyckel

Användare kan lagra leverantörsuppgifter i UI:t. Miljönycklar används endast med dirigering och autentisering från en oskuggad medföljande definition. Importerade definitioner, skrivbara definitioner som återanvänder ID och administratörsrutter kräver uppgifter från samma konto. Libre WebUI kopplar inte miljönycklar till dessa rutter eller exponerar dem genom identifiering. Tillit kommer från kompilerad hash av varje levererat manifest, så containerlayouter med gemensam äldre/medföljande sökväg stöds utan att ändrat manifest behandlas som medföljande.

Användarsparade nycklar binds till effektiv definition, källa, autentiseringskontrakt och dirigering. Nyckeln måste sparas igen efter destinationsändring. Äldre obundna nycklar accepteras och binds första gången endast för exakt levererad definition på medföljande rutt.

Vid källstart löses relativ PLUGINS_DIR från backendkatalogen. Paketerad start gör uttryckligt relativt värde absolut från anroparen. Libre läser även backend/plugins och historiska platser. Flytta definitionerna till $DATA_DIR/plugins; återställning rapporterar äldre sökvägar som externt tillstånd och blockerar endast-volym-ögonblicksbild medan anpassningar finns kvar. Kataloger och JSON-definitioner måste vara fysiska normala poster; Libre följer inte symlänkar.

Frontend

VariabelStandardSyfte
VITE_API_BASE_URLdev-proxy på samma ursprung eller produktions-APIFrontend-API:ts bas-URL
VITE_WS_BASE_URLhärledd från API-URLAbsolut ws:/wss:-bas för Chatt- och Work-socketar
VITE_APP_VERSIONpaketversion från Vite-konfigurationVisad programversion
VITE_DEMO_MODEfalseAktivera demolägessimulering när true
VITE_API_TIMEOUT300000Frontend-API-tidsgräns i millisekunder
VITE_BACKEND_URLhttp://localhost:3001Används av vissa autentiseringshjälpare
VITE_DEBUG_VERBOSEinte angivenAktivera utförliga frontend-felsökningsloggar
VITE_LOG_LEVELinte angivenÅsidosätt frontendens loggnivå
ELECTRON_BUILDinte angivenAktivera Electron-specifikt Vite-beteende

VITE_WS_BASE_URL åsidosätter alla WebSocket-reserver för Chatt och Work-terminal. Den kan innehålla reverse proxy-sökvägsprefix men måste vara absolut ws:/wss: utan uppgifter, fråga eller fragment. Utan värde använder Electron file: ws://localhost:3001; webbläsare härleder basen från VITE_API_BASE_URL, sedan webbläsarens ursprung. Vite proxyar utvecklingsursprunget till backend-en på port 3001.

Underhållsskript

VariabelSyfte
CHANGELOG_AIAnge 0 för att inaktivera AI-stödda ändringsloggutkast
CHANGELOG_AI_MODELOllama-modell för utgåve-/ändringsloggsgenerering
CHANGELOG_AI_TIMEOUT_MSTidsgräns för AI-ändringslogg i millisekunder

Exempel:

CHANGELOG_AI_MODEL=glm-5.2:cloud npm run changelog
CHANGELOG_AI=0 npm run release:minor

Produktionsexempel

NODE_ENV=production
PORT=3001
SERVE_FRONTEND=true
DATA_DIR=/data/libre-webui
CORS_ORIGIN=https://librewebui.example
BASE_URL=https://librewebui.example

JWT_SECRET=replace-with-a-long-random-secret
ENCRYPTION_KEY=replace-with-64-hex-characters
ENABLE_SIGNUP=false

OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_TIMEOUT=300000
OLLAMA_LONG_OPERATION_TIMEOUT=900000
OLLAMA_MAX_CONTEXT=32768

TURNSTILE_SITE_KEY=...
TURNSTILE_SECRET_KEY=...
TURNSTILE_EXPECTED_HOSTNAME=librewebui.example

Relaterad dokumentation