Miljøvariabler
Denne side viser de operatørrettede miljøvariabler, som læses af den aktuelle Libre WebUI-backend, frontend og vedligeholdelsesscripts. Interne kanarieværdier kun til test er bevidst udeladt.
Backendserver
| Variabel | Standard | Formål |
|---|---|---|
NODE_ENV | development | Runtime-tilstand |
PORT | 3001 i udvikling, 8080 i produktion | Backendens HTTP-port |
TRUST_PROXY | ikke angivet (0 i Helm) | Nøjagtigt antal betroede reverse proxy-hop til klientadressen |
CORS_ORIGIN | lokale udviklings-origins | Kommaseparerede tilladte browser-origins |
SERVE_FRONTEND | ikke angivet | Servér bygget frontend fra backend, når true |
DOCKER_ENV | ikke angivet | Aktivér Docker-orienteret adfærd, når true |
DATA_DIR | backend/data; ~/.libre-webui i pakket CLI | Vedvarende datamappe |
PLATFORM_PREFLIGHT_TMP_DIR | backend/temp/preflight; brugercache i pakket CLI | Arbejdsplads til privat DB-/WAL-inspektionskopi; dimensionér til database plus WAL |
PLUGIN_UPLOAD_TEMP_DIR | libre-webui-plugin-uploads i operativsystemets temp | Arbejdsplads til igangværende pluginuploads |
PLUGINS_DIR | $DATA_DIR/plugins | Skrivbar mappe til installerede/tilpassede plugins |
BASE_URL | http://localhost:3001 | Basis-URL til OAuth-callbackstandard |
LOG_LEVEL | info (warn i test) | Backendens logniveau |
LOG_FORMAT | text | json giver strukturerede enkeltlinjelogge med tid, korrelations-ID og maskering |
OTEL_EXPORTER_OTLP_ENDPOINT | ikke angivet | Valgfri OTLP/HTTP JSON-telemetrieksport; uden værdi forlader ingen telemetri processen |
OTEL_EXPORTER_OTLP_HEADERS | ikke angivet | Kommaseparerede key=value-headere til OTLP-indsamleren |
OTEL_SERVICE_NAME | libre-webui | Ressourceattributten service.name på eksporteret telemetri |
WEBUI_HOST | loopback; 0.0.0.0 i Docker | HTTP-lytteadresse |
OPEN_BROWSER | true, når frontend serveres | Angiv false for at forhindre automatisk browserstart |
FULL_DOCUMENT_CONTEXT_MAX_TOKENS | 32000 | Tokenbeskyttelse til fulddokumentkontekst pr. chat (1000-2000000) |
GALLERY_RETENTION_DAYS | ikke angivet (behold altid) | Slet gallerimedier ældre end dette antal dage gennem planlæggerens gennemløb |
RECOVERY_DRILL_INTERVAL_HOURS | ikke angivet (øvelser slået fra) | Kør verificeret gendannelsesøvelse automatisk hver N. time (solo) |
RECOVERY_DRILL_HISTORY | 60 | Bevarede historikposter for gendannelsesøvelser |
Kildekørsler forankrer relative DATA_DIR, PLUGINS_DIR og PLATFORM_PREFLIGHT_TMP_DIR i backendmappen uafhængigt af shellens arbejdsmappe. Uden DATA_DIR eller med DATA_DIR=./data bruger rod- og backendkommandoer derfor backend/data. For kompatibilitet fortsætter DATA_DIR=./backend/data med at vælge backend/backend/data; ændr kun under en bevidst, stoppet sikkerhedskopiering og migrering. En kildeprofil uden værdi bruger også backend/backend/data, når det er det eneste vedvarende lager. Hvis begge placeringer indeholder tilstand, og ingen sti er valgt, afvises starten sikkert i stedet for at gætte, kopiere eller sammenflette.
Startprogrammerne npx, global npm og interaktiv Homebrew bevarer data under ~/.libre-webui. En udtrykkelig relativ DATA_DIR opløses fra kalderens arbejdsmappe og gøres absolut før backendstart. Relativ PLUGINS_DIR følger samme regel; uden værdi findes skrivbare plugins under $DATA_DIR/plugins. Inspektionsområdet er som standard en skrivbar cache uden for datamappen: ~/Library/Caches/libre-webui på macOS, %LOCALAPPDATA%\libre-webui på Windows eller ${XDG_CACHE_HOME:-~/.cache}/libre-webui på andre systemer. Homebrew-tjenesten fastgør samme hjemmemappe og bruger var/libre-webui/preflight. Angiv PLATFORM_PREFLIGHT_TMP_DIR, når cachen ikke rummer database og WAL. Docker- og Helm-udrulninger bruger absolutte /app/backend/data og /app/backend/temp/preflight med separate monteringer.
Platformsgrundlag
Standardprofilen solo bruger SQLite, lokale krypterede blobs, krypterede indlejrede vektorer, lokal koordinering og en indlejret vedvarende worker. team bruger PostgreSQL, private S3-kompatible blobs, PGVector, Redis og en ekstern worker. Teamkonfiguration afvises sikkert, medmindre alle delte afhængigheder vælges sammen.
| Variabel | Standard | Formål |
|---|---|---|
LIBRE_PLATFORM_MODE | solo | Vælg sammenhængende solo- eller team-profil |
DATABASE_BACKEND | sqlite | Vælg sqlite eller postgres |
DATABASE_URL | ikke angivet | PostgreSQL-forbindelses-URL, kræves med postgres |
DATABASE_SSL_MODE | verify-full | PostgreSQL TLS-politik: disable, require eller værtsnavnsverificerende verify-full |
POSTGRES_MIGRATION_MODE | apply | Kør kompatible migreringer under lederlåsen eller validate til skrivebeskyttet skemakontrol |
POSTGRES_POOL_MAX | 10 | Højeste PostgreSQL-forbindelser pr. program- eller workerproces (1-100) |
POSTGRES_CONNECT_TIMEOUT_MS | 5000 | Tidsgrænse for PostgreSQL-forbindelse (1-60000 ms) |
POSTGRES_IDLE_TIMEOUT_MS | 30000 | Tidsgrænse for inaktiv PostgreSQL-forbindelse (1-600000 ms) |
POSTGRES_STATEMENT_TIMEOUT_MS | 30000 | Tidsgrænse for PostgreSQL-sætning (1-600000 ms) |
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS | 60000 | Ventetid på migreringslederlås (1-600000 ms) |
BLOB_STORE_BACKEND | local | Vælg krypteret local lager eller privat s3 |
VECTOR_STORE_BACKEND | embedded med SQLite | Vælg krypterede embedded vektorer eller pgvector |
COORDINATION_BACKEND | local i solo; redis i team | Vælg proceslokal eller Redis-koordinering |
REDIS_URL | ikke angivet | redis:- eller rediss:-URL, kræves med Redis-koordinering |
REDIS_KEY_PREFIX | libre | Namespace på 1-64 tegn til Libres koordineringsnøgler |
REDIS_CONNECT_TIMEOUT_MS | 5000 | Indledende tidsgrænse for Redis-forbindelse, højst 60 sekunder |
JOB_WORKER_MODE | embedded i solo; external i team | Kør håndteringer i programmet eller en separat delt worker |
RESOURCE_LEASE_TTL_MS | 30000 | Koordineringslease-TTL til vedvarende jobressourcer (5000-300000) |
JOB_WORKER_CONCURRENCY | 4 | Vedvarende job en worker kan køre samtidigt (1-32) |
CHAT_STREAM_EVENT_RETENTION_HOURS | 24 | Timer, hvor chatstrømshændelser bevares før timerensning |
PLATFORM_EVENT_RETENTION_DAYS | 30 | Dage, en vedvarende hændelse bevares før timerensning |
PLATFORM_JOB_RETENTION_DAYS | 30 | Dage, afsluttede ikke-livscyklusjob bevares |
LIBRE_SKIP_STARTUP_INTEGRITY_SCAN | ikke angivet | 1 springer dyb scanning af ældre chiffertekst over ved næste start |
STORAGE_ENCRYPTION_KEYS | ikke angivet | Hemmeligt JSON-nøglekort; skal indeholde legacy, der matcher ENCRYPTION_KEY |
STORAGE_ENCRYPTION_ACTIVE_KEY_ID | ikke angivet | Nøgle-ID til nye lokale blobs og indlejrede vektorer |
BLOB_QUOTA_BYTES_PER_USER | 10737418240 | Vedvarende maksimale klartekst-blobbytes pr. ejer |
BLOB_QUOTA_RESERVATION_TTL_MS | 3600000 | Levetid for forladt streamingkvotereservation (mindst 60000 ms) |
S3_BUCKET | ikke angivet | Privat S3-kompatibel bucket, kræves med s3 |
S3_REGION | ikke angivet | S3-region, kræves med s3 |
S3_ENDPOINT | udbyderstandard | Valgfri absolut HTTP(S)-endpoint til MinIO eller kompatibel tjeneste |
S3_ACCESS_KEY_ID | SDK-legitimationskæde | Valgfri udtrykkelig S3-adgangsnøgle |
S3_SECRET_ACCESS_KEY | SDK-legitimationskæde | Kræves, når udtrykkelig adgangsnøgle angives |
S3_SESSION_TOKEN | ikke angivet | Valgfri token sammen med udtrykkelige S3-oplysninger |
S3_FORCE_PATH_STYLE | false | Angiv true til tjenester, der kræver stibaseret adressering |
S3_BLOB_PREFIX | libre/blobs | Uigennemsigtigt bucketnøglepræfiks ejet af Libre |
Uden et versionsstyret lagernøglekort bruger lageradaptere den eksisterende ENCRYPTION_KEY som ID legacy; hvis den også mangler, læser de ${DATA_DIR}/.encryption_key uden at oprette eller ændre den. Udtrykkelig konfiguration og den vedvarende fil skal stemme overens. Hvis kortet indføres, mens en ældre nøgle findes, bevares den under præcis ID legacy, indtil alle objekter og vektorer er skrevet eller pakket om og verificeret. Konflikter, usikre filtilladelser, symlinks og manglende nøgler afvises sikkert.
Redis er koordinering, ikke kanonisk persistens. Redis alene gør ikke SQLite, lokale filer eller procesejet tilstand sikker på tværs af replikaer. I teamtilstand bruger HTTP-grænser, chat-/WebSocket-forbindelser, STT/TTS/lydarbejde, arkivimporter og Work-terminaler Redis-baseret fælles adgang. Kapaciteter gælder på tværs af alle replikaer. Fejl returnerer 503 eller afbryder den igangværende operation; Libre falder aldrig tilbage til en uafhængig lokal tæller.
Se Platformsgrundlag.
Medfølgende team-Compose og Helm videresender alle vælgere og justeringsværdier til program og ekstern worker. I Helm findes ikke-hemmelige vælgere under env; brug secrets.redisUrl, secrets.databaseUrl og secrets.storageEncryptionKeys til forbindelser og nøgler. PostgreSQL-poolgrænser er pr. proces: budgettér mindst (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX forbindelser plus margin. Behold DATABASE_SSL_MODE=verify-full til administreret/fjern-PostgreSQL. Kun medfølgende Compose vælger disable, fordi lytteren er isoleret. Team-Helm kræver en stabil secrets.jwtSecret, der deles af alle pods; ellers oprettes proceslokalt signeringsmateriale. S3 modtager uigennemsigtige nøgler og chiffertekst; bucket- og udbyder-URL'er gemmes ikke i metadata.
Integrerede solo- og teamarkiver bevarer PostgreSQL-pools og tidsgrænser, Redis-tidsgrænsen, begge blobkvoter, platformsvælgere og S3-adressering i signeret og krypteret beskyttet konfiguration. En ren gendannelse kan derfor publicere driftsværdier uden klartekst i arkivmetadata.
Team-Compose- og Helm-par får samme opløste OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT og OLLAMA_MAX_CONTEXT. Udbyderkald til indlejringer, vedvarende chats og Work kører i workeren, så værdierne må ikke afvige. Serverindgangene fortolker numeriske værdier som fuldstændige positive base-10-heltal før tilstand. Delværdier som 300000ms, eksponent/hex, værdier uden for interval og lang tidsgrænse under standarden stopper starten.
Helm begrænser TRUST_PROXY til præcist heltal 0–16 og sender det kun til HTTP-pods. Behold 0 til direkte trafik. Angiv præcist fast antal for ingress-/load-balancer-kæden; brug aldrig ubegrænset true. Forkert antal grupperer klienter under proxyadressen eller stoler på en klientangivet adresse.
PostgreSQL-skemakompatibilitet kræver præcis version. Helm-program og worker bruger Recreate; dræn og afslut alle gamle pods før teamopgradering, og lad én ny proces migrere under rådgivende lederlås. Kør ikke blandede binærversioner, og påstå ikke nul afbrydelse. Rollback gendanner det verificerede arkiv til rene PostgreSQL-/S3-mål før den matchende ældre binær.
Et aktivt teamprogram kræver worker.replicaCount >= 1; Helm afviser et levende program uden vedvarende worker. Sæt program og worker til nul for fuld pause. Program nul med positiv worker er en bevidst worker-eksklusiv drænings-/gendannelsestilstand, der fortsætter købehandling uden webtrafik.
Privat sikkerhedskopieringshjælp
Variablerne konfigurerer deploy/private/libre-webui-backup og læses af vedligeholdelsesscriptet, ikke programprocessen:
| Variabel | Standard | Formål |
|---|---|---|
LIBRE_WEBUI_STACK_DIR | /opt/libre-webui | Mappe med privat Compose-fil |
LIBRE_WEBUI_BACKUP_DIR | /var/backups/libre-webui | Beskyttet mappe til sikkerhedskopier og låsefil |
LIBRE_WEBUI_BACKUP_RETENTION_DAYS | 14 | Alder, hvor færdige sikkerhedskopier slettes |
LIBRE_WEBUI_CONTAINER_NAME | libre-webui | Udrullet programcontainer, der inspiceres |
LIBRE_WEBUI_BACKUP_KEY_DIR | /etc/libre-webui/backup-keys | Privat mappe til arkivkryptering og signeringsnøgler |
LIBRE_WEBUI_RESTORE_IMAGE | kræves til gendannelse | Gennemgået uforanderligt Libre-image-ID eller digest |
LIBRE_WEBUI_RESTORE_CONFIG_DIR | sti pr. volumen under /etc/libre-webui/restored | Ny mappe til gendannet konfiguration |
systemd-enheden læser tilsidesættelser fra den valgfrie root-ejede /etc/libre-webui/backup.env. Angiv tilstand 0600. Stackmappe, opbevaringstid, containernavn og nøglemappe kan angives der. Filsystemsandkassen tillader kun skrivning under standardmappen. En tilpasset LIBRE_WEBUI_BACKUP_DIR kræver desuden præcis forudoprettet mappe i en ReadWritePaths=-drop-in; se
Privat fjernudrulning.
Godkendelse og sikkerhed
| Variabel | Standard | Formål |
|---|---|---|
ENABLE_SIGNUP | false | Tillad registrering efter første lokale administrator |
JWT_SECRET | genereret/reserve i udvikling | JWT-signeringshemmelighed; angiv i produktion |
JWT_EXPIRES_IN | 7d | Sessionstokens levetid |
ENCRYPTION_KEY | automatisk genereret | Hexnøgle på 64 tegn til krypterede værdier |
DEBUG_ENCRYPTION | ikke angivet | Log krypteringsfejlfinding, når angivet |
TURNSTILE_SITE_KEY | ikke angivet | Cloudflare Turnstile-webstedsnøgle til login |
TURNSTILE_SECRET_KEY | ikke angivet | Turnstile-hemmelighed til backendverifikation |
TURNSTILE_EXPECTED_HOSTNAME | værtsnavn fra BASE_URL | Obligatorisk værtsnavn i Cloudflares verifikationssvar |
MFA_REQUIRED_MODE | ikke angivet (optional) | Fastgør tofaktorpolitikken til optional eller required |
WEBAUTHN_RP_ID | anmodningens værtsnavn | Fast relying-party-ID til passkeys bag flere værtsnavne |
VAPID_PUBLIC_KEY | genereret og krypteret gemt | Fastgør offentlig Web Push VAPID-nøgle |
VAPID_PRIVATE_KEY | genereret og krypteret gemt | Fastgør privat Web Push VAPID-nøgle |
VAPID_SUBJECT | mailto:admin@localhost | Kontaktclaim i signerede Web Push-godkendelser |
Turnstile aktiveres kun, når begge nøgler findes.
ENABLE_SIGNUP=false tillader stadig den første lokale administrator i en tom database og blokerer derefter yderligere konti. Beskyt en fjernadgangsstartrute med en ydre identitetsgrænse før første start.
Hver JWT bindes til en serversession (sid), så logout eller tilbagekaldelse fra Indstillinger → Sessioner ugyldiggør token på alle replikaer og lukker aktive WebSocket-forbindelser. Opbevaring af sikkerhedsrevision kan konfigureres:
| Variabel | Standard | Formål |
|---|---|---|
AUDIT_RETENTION_DAYS | 180 | Dage, rækker bevares i sikkerhedsrevisionsloggen |
Generisk OIDC-baseret single sign-on
Alle OpenID Connect-udbydere med registreringsdokument kan bruges. Flowet bruger PKCE (S256), CSRF-tilstand og nonce, der verificeres i signaturkontrolleret ID-token. Identiteter forbindes på det stabile claim sub.
| Variabel | Standard | Formål |
|---|---|---|
OIDC_ISSUER_URL | ikke angivet | Udstederens basis-URL; registrering hentes fra <issuer>/.well-known/openid-configuration |
OIDC_CLIENT_ID | ikke angivet | OAuth-klient-ID registreret hos udbyderen |
OIDC_CLIENT_SECRET | ikke angivet | OAuth-klienthemmelighed |
OIDC_DISPLAY_NAME | Single Sign-On | Etiket på loginknappen |
OIDC_SCOPES | openid profile email | Anmodede omfang |
OIDC_CALLBACK_URL | BASE_URL + OIDC-callbackrute | Omdirigerings-URI registreret hos udbyderen |
OIDC_ALLOWED_EMAIL_DOMAINS | ikke angivet | Kommasepareret liste; verificeret e-mail i et domæne kræves |
OIDC_GROUP_CLAIM | groups | ID-tokenclaim med gruppenavne |
OIDC_ADMIN_GROUPS | ikke angivet | Kommasepareret liste; adminrollen følger medlemskab ved login |
OIDC_SYNC_GROUPS | false | true synkroniserer Libre-grupper med gruppeclaim ved login |
OIDC aktiveres kun, når udsteder-URL, klient-ID og klienthemmelighed findes. E-mail, der allerede bruges af en ikke-forbundet lokal konto, afvises i stedet for lydløst at blive flettet, og kontooprettelse følger ENABLE_SIGNUP.
WebSocket-adgang til Chat kan justeres uden svagere godkendelse:
| Variabel | Standard | Formål |
|---|---|---|
CHAT_WS_MAX_PAYLOAD_BYTES | 10 MiB | Største accepterede WebSocket-besked |
CHAT_WS_MAX_MESSAGES_PER_MINUTE | 120 | Beskedloft pr. WebSocket-forbindelse |
CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER | 4 | Udbydergenereringer pr. konto |
CHAT_WS_MAX_CONNECTIONS_PER_USER | 5 | Samtidige godkendte sockets pr. konto |
WEBSOCKET_TICKET_TTL_MS | 30000 | Levetid for engangsbillet Chat/Work, højst 60 sekunder |
Browseren udveksler Authorization-headeren med en uigennemsigtig billet og placerer kun den kortlivede værdi i WebSocket-URL'en. Billetter bruges én gang, bindes til protokol og session og gemmes som hash. Ved CORS_ORIGIN eller BASE_URL skal Origin matche. Angiv mindst én ved fjernadgang; uden begge tillader filteret lokal udvikling. Originløse opgraderinger understøttes bevidst til Electron og andre klienter, men kræver gyldig engangsbillet og samme konto-, Work- og opgavekontroller. Betragt billetten som godkendelsesgrænse, og begræns øvrig adgang med TLS, firewall og reverse proxy.
OAuth
| Variabel | Formål |
|---|---|
GITHUB_CLIENT_ID | GitHub OAuth-klient-ID |
GITHUB_CLIENT_SECRET | GitHub OAuth-klienthemmelighed |
GITHUB_CALLBACK_URL | Tilsidesættelse af GitHub-callback-URL |
HUGGINGFACE_CLIENT_ID | Hugging Face OAuth-klient-ID |
HUGGINGFACE_CLIENT_SECRET | Hugging Face OAuth-klienthemmelighed |
HUGGINGFACE_CALLBACK_URL | Tilsidesættelse af Hugging Face-callback-URL |
Hvis callback-URL'er ikke angives, bygger Libre WebUI standardværdier fra BASE_URL.
Ollama
| Variabel | Standard | Formål |
|---|---|---|
OLLAMA_BASE_URL | http://localhost:11434 | Basis-URL til Ollama-API |
OLLAMA_TIMEOUT | 300000 | Standardtidsgrænse for Ollama-anmodning (1.000-3.600.000 ms) |
OLLAMA_LONG_OPERATION_TIMEOUT | 900000 | Tidsgrænse for lang operation, ikke kortere end OLLAMA_TIMEOUT |
OLLAMA_MAX_CONTEXT | 32768 | Største modelkontekst, der anvendes automatisk (128-2.097.152 tokens) |
Websøgning
| Variabel | Standard | Formål |
|---|---|---|
SEARXNG_URL | ikke angivet | Standardendpoint til SearXNG; administratoren aktiverer stadig under Indstillinger > Søg |
Libre Claw
| Variabel | Standard | Formål |
|---|---|---|
LIBRE_CLAW_BASE_URL | http://127.0.0.1:8766 | Valgfri Libre Claw-daemon-URL |
LIBRE_CLAW_TIMEOUT_MS | 30000 | Tidsgrænse for Libre Claw HTTP-anmodning |
Work-runtime
Variablerne konfigurerer Work-kørsel på maskinen eller Kubernetes-clusteret, der kører backend. Docker er standardruntime; Helm vælger Kubernetes, når work.enabled=true.
| Variabel | Standard | Formål |
|---|---|---|
WORK_RUNTIME_IMAGE | node:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3 | Fastgjort image til Work-sandkasser |
WORK_DOCKER_COMMAND | docker | Docker-backendens CLI-program |
WORK_COMMAND_TIMEOUT_MS | 120000 | Standardtidsgrænse; værktøj kan anmode om højst 600000 ms |
WORK_MAX_OUTPUT_CHARS | 50000 | Grænse for indfanget stdout/stderr pr. stream |
WORK_MAX_AGENT_ROUNDS | 48 | Udbyderuafhængigt rundebudget pr. kørsel |
WORK_STATUS_BLURB_MODEL | 1 | Angiv 0 for at springe modelkaldet, der skriver agentstatus, over |
WORK_MEMORY_LIMIT | 2g | Hukommelsesgrænse pr. Work-container |
WORK_CPU_LIMIT | 2 | CPU-grænse pr. Work-container |
WORK_PIDS_LIMIT | 256 | Procesgrænse pr. Work-container |
WORK_PREVIEW_PORT | 4173 | Port til forhåndsvisningsserver i opgavecontaineren |
WORK_PREVIEW_BIND | 127.0.0.1 | Værtsgrænseflade, hvor forhåndsvisningsporten publiceres; Compose-installationer på native Docker Engine skal bruge en nåbar ikke-offentlig bridge-grænseflade |
WORK_DOCKER_PUBLISHED_HOST | appstandard: samme som WORK_PREVIEW_BIND; Compose-standard: host.docker.internal | Backendvært/IP til Docker-publicerede forhåndsvisnings-, skærm- og lydporte |
WORK_COMPUTER_SCREEN_PORT | 6080 | Containerport til Work Computer-skærmbro |
WORK_COMPUTER_AUDIO_PORT | 6081 | Containerport til Work Computer-lydbro |
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL | 3 | Samtidige runtimebaserede opgaver for instansen |
WORK_MAX_ACTIVE_RUNTIMES_PER_USER | 2 | Samtidige runtimebaserede opgaver pr. bruger |
WORK_MAX_TASKS_GLOBAL | 500 | Største antal vedvarende Work-opgaver for instansen |
WORK_MAX_TASKS_PER_USER | 100 | Største antal vedvarende Work-opgaver pr. administrator |
WORK_NETWORK_NAME | libre-webui-work | Administreret sandkassebro-netværk |
WORK_RUN_LEASE_WAIT_MS | 60000 | Ventetid på opgavens delte runtimelease før replikakonflikt |
WORK_RUNTIME_DNS | ikke angivet | Kommaseparerede resolver-IP'er til netværksopgaver |
WORK_DOCKER_SOCKET | DOCKER_HOST ved unix:// eller tcp://, ellers /var/run/docker.sock | Docker Engine-endpoint til terminal og diagnostik |
WORK_TERMINAL_MAX_SESSIONS_PER_TASK | 2 | Samtidige browserterminaler pr. opgave |
WORK_TERMINAL_IDLE_TIMEOUT_MS | 900000 | Inaktivitetstid før terminallukning |
WORK_RUNTIME_IDLE_TIMEOUT_MS | 0 (deaktiveret) | Stop sandkasse efter denne inaktivitet |
WORK_HOST_WORKSPACES_ENABLED | false | Tillad værtsmappe i stedet for volumen |
WORK_HOST_WORKSPACE_ROOTS | serverbrugerens hjemmemappe | :-separerede rødder, som værtsarbejdsområdet skal ligge inden for |
WORK_RUNTIME_BACKEND | docker | Sandkassebackend: docker eller kubernetes |
WORK_K8S_NAMESPACE | libre-webui-work | Namespace til Kubernetes-sandkassepods og PVC'er |
WORK_K8S_STORAGE_CLASS | clusterstandard | StorageClass til arbejdsområde-PVC'er |
WORK_K8S_WORKSPACE_SIZE | 5Gi | PVC-størrelse pr. opgave (reel diskkvote) |
WORK_K8S_POD_READY_TIMEOUT_MS | 900000 | Vent på, at en sandkasse-Pod bliver Running |
WORK_K8S_POD_GONE_TIMEOUT_MS | 60000 | Vent på, at slettet Pod forsvinder |
AGENT_CLI_MODELS_ENABLED | ikke angivet (adminregulator, fra) | Fastgør Agent-funktionen, eller overlad til administratorregulatoren |
TOOLS_ACCESS_MODE | ikke angivet (kun admin) | Fastgør chatværktøjer til admins eller all-users |
STT_ACCESS_MODE | ikke angivet (alle brugere) | Fastgør tale-til-tekst til admins eller all-users |
TTS_ACCESS_MODE | ikke angivet (alle brugere) | Fastgør tekst-til-tale til admins eller all-users |
VOICE_MODE_ACCESS_MODE | ikke angivet (alle brugere) | Fastgør håndfri stemmetilstand til admins eller all-users |
VOICE_CLONING_ACCESS_MODE | ikke angivet (alle brugere) | Fastgør stemmekloning til admins eller all-users |
TOOLS_PRIVATE_NETWORK_ALLOWLIST | ikke angivet | Nøjagtige værtsnavne til private adresser, kommaseparerede |
AGENT_CLI_TIMEOUT_MS | 600000 | Tid før agent-CLI afsluttes |
CODEX_OAUTH_MODELS_ENABLED | true | Tilbyd Codex (ChatGPT) til administratorer |
CODEX_HOME | ~/.codex | Placering af Codex CLI-login (auth.json) |
Agent-CLI-binærer og Codex OAuth-oplysninger er nodelokale. De understøttes kun i en solo-proces, hvor registrering og kørsel ser samme filsystem og miljø. Teamtilstand kører vedvarende chatjob i en ekstern worker og kræver derfor AGENT_CLI_MODELS_ENABLED=false og CODEX_OAUTH_MODELS_ENABLED=false; starten afviser øvrige værdier i stedet for at annoncere en udbyder, som kun findes på én programreplika. Brug Ollama eller et udbyderplugin, hvis oplysninger og routing gemmes i delt PostgreSQL eller videresendes identisk.
På Docker-backend bind-monterer et værtsarbejdsområde en rigtig mappe ved /workspace, så opgaven læser og skriver direkte i stedet for i egen volumen. Kubernetes afviser værtsmapper. Det reducerer bevidst Docker-sandkassen: hold WORK_HOST_WORKSPACES_ENABLED fra, og hold WORK_HOST_WORKSPACE_ROOTS så snæver som muligt. Stier opløses gennem symlinks før rodkontrol, og .ssh, .gnupg, .aws, .config afvises fuldstændigt.
Agent-CLI-modeller eksponerer installerede kodeagenter (claude, codex) som valgbare chatmodeller, så en abonnementsagent kan svare uden API-nøgle. Kun administratorer ser dem; CLI kører som serverbrugeren og arver agentoplysninger. Behandl det som shelladgang for agenterne.
På Docker forbindes netværksopgaver til den administrerede bro WORK_NETWORK_NAME, oprettet med intercontainerkommunikation slået fra, så sandkasser ikke når hinanden eller udrulningscontainere. WORK_RUNTIME_DNS er Docker-egresspolitikkens krog: peg på en filtrerende resolver til navnelister. Ikke-IP-adresser afvises og logges. DNS-filter begrænser ikke direkte IP-egress; brug værtsfirewall efter behov. Kubernetes bruger diagrammets standardafvisende NetworkPolicy og work.networkPolicy.blockedEgressCidrs.
På Docker kommunikerer terminal og diagnostik direkte med Docker Engine-API'et. De følger WORK_DOCKER_SOCKET, ellers DOCKER_HOST—unix:// eller almindelig HTTP tcp:// som en socketproxy (se docker-compose.socket-proxy.yml)—ellers /var/run/docker.sock. En DOCKER_HOST, klienten ikke kan bruge (ssh:// eller tcp:// med DOCKER_TLS_VERIFY), rapporterer terminal og diagnostik utilgængelige; Work fortsætter gennem Docker-CLI. På Kubernetes bruges Pod exec uden Docker-endpoint.
Work læser værdierne ved backendstart. Forhåndsvisningsporten er intern i opgavecontaineren; Libre WebUI publicerer den på en dynamisk loopbackport i stedet for alle værtsgrænseflader.
Fastgør runtime-imagen til en gennemgået version eller digest. Højere samtidighed og ressourcegrænser øger kapaciteten, autonome kørsler kan bruge. WORK_MAX_AGENT_ROUNDS gælder ens for Ollama og plugins. Sikkerhedsbudgettet er max(128, WORK_MAX_AGENT_ROUNDS × 8). Når budgettet er opbrugt, anmoder Work om en afsluttende overdragelse uden værktøjer og slutter i needs_input i stedet for en rå grænsefejl. En opfølgende kørsel fortsætter i samme vedvarende arbejdsområde. Gemt værktøjsoutput begrænses separat til ca. 20.000 kildetegn plus afkortningsmarkør.
Variablerne justerer en allerede tilgængelig Work-runtime. Repositoryts Compose-udrulning til én instans aktiverer den som standard: imagen indeholder Docker-CLI, og filerne monterer værtens socket. To Compose-variabler styrer forbindelsen:
| Variabel | Standard | Formål |
|---|---|---|
DOCKER_GID | 0 | Gruppe-ID for værtens Docker-socket, føjet til containerbrugeren |
DOCKER_SOCKET | /var/run/docker.sock | Værtssti til Docker-socketen, der monteres |
DOCKER_GID skal være socketens gruppe set inde fra containeren; macOS rapporterer noget andet. Team-Compose monterer ingen socket, og Docker-Work er utilgængelig, indtil docker-compose.team.work.yml tilføjes. Produktionslaget giver program og worker samme filtrerede interne proxyendpoint, aldrig socketmontering eller gruppe. Proxyen tillader kun de anvendte API-dele, men containeroprettelse er stadig værtskontrol; brug en dedikeret eller rootless Work-daemon til en stærkere grænse. Helm monterer aldrig nodesocket. Aktivér Pod-/PVC-backend med work.enabled=true.
Profilen solo skal have nul eller én programreplika, fordi den bruger SQLite, lokale filer og proceslokal koordinering. Helm accepterer nul til pause og afviser større antal eller autoskalering. Fuld team kan bruge flere replikaer og ekstern worker, fordi PostgreSQL, S3, PGVector og Redis ejer delt tilstand. Work-sandkassepods skalerer uafhængigt; ekstern worker får samme Kubernetes-image, StorageClass og work.env-grænser som programmet.
Compose-filer accepterer også WEBUI_BIND_ADDRESS (standard 127.0.0.1) og WEBUI_PORT (8080). Behold loopback, medmindre et betroet LAN eller en værtsproxy skal nå porten.
Modelregistrering hos udbydere
En udbyders modelkatalog registreres igen, når det mangler eller er forældet, så genindlæsning afspejler aktuelle modeller. Variablerne justerer cyklussen:
| Variabel | Standard | Formål |
|---|---|---|
PLUGIN_MODEL_DISCOVERY_TTL_MS | 21600000 (6 t) | Alder, hvor gemt katalog opdateres ved næste pluginlistelæsning |
PLUGIN_MODEL_DISCOVERY_RETRY_MS | 600000 (10 min) | Mindste interval mellem forsøg |
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS | 3000 | Hvor længe et pluginlistesvar venter på opdatering |
En opdatering, der overskrider tidsgrænsen, fuldføres stadig og vises ved næste anmodning. Opdatér modeller kontakter altid udbyderen og ignorerer intervallet.
Nøgler til udbyderplugins
Udbyderplugins kan bruge miljønøgler som standard for hele udrulningen:
| Variabel | Udbyder |
|---|---|
OPENAI_API_KEY | OpenAI og OpenAI TTS |
ANTHROPIC_API_KEY | Anthropic |
GROQ_API_KEY | Groq |
GEMINI_API_KEY | Google Gemini |
MISTRAL_API_KEY | Mistral |
OPENROUTER_API_KEY | OpenRouter |
KIMI_API_KEY | Kimi Code fra Moonshot AI |
GITHUB_API_KEY | GitHub Models |
HUGGINGFACE_API_KEY | Hugging Face-API'er, hvor konfigureret |
ELEVENLABS_API_KEY | ElevenLabs TTS |
COMFYUI_API_KEY | ComfyUI-udrulninger, der kræver API-nøgle |
Brugere kan gemme udbyderoplysninger i UI'et. Miljønøgler bruges kun med routing og godkendelse fra en ikke-skygget medfølgende definition. Importerede definitioner, skrivbare definitioner med genbrugt ID og administratorruter kræver oplysninger fra samme konto. Libre WebUI knytter ikke miljønøgler til disse ruter eller eksponerer dem gennem registrering. Tillid kommer fra en kompileret hash af hvert leveret manifest, så containerlayouts med fælles ældre/medfølgende sti understøttes uden at behandle et ændret manifest som medfølgende.
Brugergemte nøgler bindes til effektiv definition, kilde, godkendelseskontrakt og routing. Nøglen skal gemmes igen efter destinationsændring. Ældre ubundne nøgler accepteres og bindes første gang kun til præcis leveret definition på medfølgende rute.
Ved kildestart opløses relativ PLUGINS_DIR fra backendmappen. Den pakkede starter gør en udtrykkelig relativ værdi absolut fra kalderen. Libre læser også backend/plugins og historiske placeringer. Flyt definitionerne til $DATA_DIR/plugins; gendannelse rapporterer ældre stier som ekstern tilstand og blokerer snapshot kun af volumen, mens tilpasninger findes. Mapper og JSON-definitioner skal være fysiske normale poster; Libre følger ikke symlinks.
Frontend
| Variabel | Standard | Formål |
|---|---|---|
VITE_API_BASE_URL | dev-proxy fra samme origin eller produktions-API | Frontend-API'ets basis-URL |
VITE_WS_BASE_URL | udledt fra API-URL | Absolut ws:/wss:-base til Chat- og Work-sockets |
VITE_APP_VERSION | pakkeversion fra Vite-konfiguration | Vist programversion |
VITE_DEMO_MODE | false | Aktivér demotilstandssimulering, når true |
VITE_API_TIMEOUT | 300000 | Frontend-API-tidsgrænse i millisekunder |
VITE_BACKEND_URL | http://localhost:3001 | Bruges af visse godkendelseshjælpere |
VITE_DEBUG_VERBOSE | ikke angivet | Aktivér detaljerede frontend-fejlfindingslogge |
VITE_LOG_LEVEL | ikke angivet | Tilsidesæt frontendens logniveau |
ELECTRON_BUILD | ikke angivet | Aktivér Electron-specifik Vite-adfærd |
VITE_WS_BASE_URL tilsidesætter alle WebSocket-reserver for Chat og Work-terminalen. Den kan indeholde reverse proxy-stipræfiks, men skal være absolut ws:/wss: uden oplysninger, forespørgsel eller fragment. Uden værdi bruger Electron file: ws://localhost:3001; browsere udleder basen fra VITE_API_BASE_URL, derefter browserens origin. Vite proxyer udviklingsorigin til backenden på port 3001.
Vedligeholdelsesscripts
| Variabel | Formål |
|---|---|
CHANGELOG_AI | Angiv 0 for at deaktivere AI-understøttede ændringslogkladder |
CHANGELOG_AI_MODEL | Ollama-model til udgivelses-/ændringsloggenerering |
CHANGELOG_AI_TIMEOUT_MS | Tidsgrænse for AI-ændringslog i millisekunder |
Eksempel:
CHANGELOG_AI_MODEL=glm-5.2:cloud npm run changelog
CHANGELOG_AI=0 npm run release:minor
Produktionseksempel
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