Ga naar hoofdinhoud

Omgevingsvariabelen

Deze pagina vermeldt operatorgerichte variabelen voor backend, frontend en onderhoud. Interne testcanaries zijn weggelaten.

Backendserver

VariabeleStandaardDoel
NODE_ENVdevelopmentRuntime
PORT3001 dev, 8080 productieHTTP-poort
TRUST_PROXYniet ingesteld (0 Helm)Exact vertrouwd proxyaantal
CORS_ORIGINlokale oorsprongenToegestane browserorigins
SERVE_FRONTENDniet ingesteldFrontend serveren met true
DOCKER_ENVniet ingesteldDockergedrag met true
DATA_DIRbackend/data; CLI ~/.libre-webuiPermanente data
PLATFORM_PREFLIGHT_TMP_DIRbackend/temp/preflight; gebruikerscacheTijdelijke DB/WAL-inspectie
PLUGIN_UPLOAD_TEMP_DIRlibre-webui-plugin-uploads in OS-tempUploads
PLUGINS_DIR$DATA_DIR/pluginsSchrijfbare plugins
BASE_URLhttp://localhost:3001OAuth-callbackbasis
LOG_LEVELinfo (warn tests)Logniveau
LOG_FORMATtextjson gestructureerde, geredigeerde logs
OTEL_EXPORTER_OTLP_ENDPOINTniet ingesteldOpt-in OTLP; afwezig geen telemetrie
OTEL_EXPORTER_OTLP_HEADERSniet ingesteldkey=value-headers
OTEL_SERVICE_NAMElibre-webuiservice.name
WEBUI_HOSTloopback; Docker 0.0.0.0Luisteradres
OPEN_BROWSERtrue bij frontendfalse onderdrukt browser
FULL_DOCUMENT_CONTEXT_MAX_TOKENS32000Volledige-documentlimiet
GALLERY_RETENTION_DAYSniet ingesteldOude media verwijderen
RECOVERY_DRILL_INTERVAL_HOURSniet ingesteldHersteloefening iedere N uur
RECOVERY_DRILL_HISTORY60Geschiedenis

Source-runs verankeren relatieve DATA_DIR, PLUGINS_DIR, PLATFORM_PREFLIGHT_TMP_DIR aan backend. DATA_DIR=./data kiest backend/data; legacy DATA_DIR=./backend/data kiest backend/backend/data. Wijzig alleen bij gestopte migratie/back-up. Zonder keuze en beide met toestand faalt opstarten, zonder raden/kopiëren/samenvoegen.

npx, globaal npm en Homebrew bewaren in ~/.libre-webui. Expliciet relatief pad wordt vanaf oproeper absoluut. Pluginstandaard blijft $DATA_DIR/plugins. Cache is ~/Library/Caches/libre-webui, %LOCALAPPDATA%\libre-webui of ${XDG_CACHE_HOME:-~/.cache}/libre-webui; Homebrew gebruikt var/libre-webui/preflight. Docker/Helm gebruiken /app/backend/data en /app/backend/temp/preflight.

Platformfundament

solo: SQLite, lokale versleutelde blobs/vectoren, lokale coördinatie, ingebouwde worker. team: PostgreSQL, private S3, PGVector, Redis, externe worker. Team faalt veilig als niet alles samen is gekozen.

VariabeleStandaardDoel
LIBRE_PLATFORM_MODEsolosolo/team
DATABASE_BACKENDsqlitesqlite/postgres
DATABASE_URLniet ingesteldPostgreSQL URL
DATABASE_SSL_MODEverify-fulldisable, require, verify-full
POSTGRES_MIGRATION_MODEapplyapply/validate
POSTGRES_POOL_MAX10Verbindingen per proces
POSTGRES_CONNECT_TIMEOUT_MS5000Verbindingstimeout
POSTGRES_IDLE_TIMEOUT_MS30000Inactief
POSTGRES_STATEMENT_TIMEOUT_MS30000Statement
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS60000Migratielock
BLOB_STORE_BACKENDlocallocal/s3
VECTOR_STORE_BACKENDembedded met SQLiteembedded/pgvector
COORDINATION_BACKENDlocal solo, redis teamCoördinatie
REDIS_URLniet ingesteldredis:/rediss:
REDIS_KEY_PREFIXlibreNamespace
REDIS_CONNECT_TIMEOUT_MS5000Verbinding
JOB_WORKER_MODEembedded solo, external teamWorker
RESOURCE_LEASE_TTL_MS30000Lease TTL
JOB_WORKER_CONCURRENCY4Gelijktijdige jobs
CHAT_STREAM_EVENT_RETENTION_HOURS24Chatsegmenten
PLATFORM_EVENT_RETENTION_DAYS30Gebeurtenissen
PLATFORM_JOB_RETENTION_DAYS30Jobs
LIBRE_SKIP_STARTUP_INTEGRITY_SCANniet ingesteld1 slaat volgende diepgaande scan over
STORAGE_ENCRYPTION_KEYSniet ingesteldJSON-map met legacy gelijk aan ENCRYPTION_KEY
STORAGE_ENCRYPTION_ACTIVE_KEY_IDniet ingesteldNieuwe schrijfsleutel
BLOB_QUOTA_BYTES_PER_USER10737418240Blobquota
BLOB_QUOTA_RESERVATION_TTL_MS3600000Reservering
S3_BUCKETniet ingesteldBucket
S3_REGIONniet ingesteldRegio
S3_ENDPOINTproviderstandaardHTTP(S)-endpoint
S3_ACCESS_KEY_IDSDK-ketenToegang
S3_SECRET_ACCESS_KEYSDK-ketenGeheim
S3_SESSION_TOKENniet ingesteldToken
S3_FORCE_PATH_STYLEfalsetrue voor path-style
S3_BLOB_PREFIXlibre/blobsPrefix

Zonder versiekaart gebruikt opslag ENCRYPTION_KEY als legacy; anders leest ${DATA_DIR}/.encryption_key zonder te genereren. Alles moet overeenkomen. Houd legacy tot alle objecten opnieuw zijn verpakt/gecontroleerd. Conflicten, onveilige rechten, symlinks of ontbrekende sleutels falen veilig.

Redis is coördinatie, geen canonieke opslag. Alleen Redis maakt SQLite/lokale bestanden niet replicaveilig. Team gebruikt gedeelde admission voor HTTP, WebSocket, STT/TTS/audio, import en Work-terminal. Fouten geven 503 of breken af, geen lokale fallback. Zie Platformfundament.

Team Compose/Helm stuurt selectors naar app/worker. Niet-geheim onder env; materiaal in secrets.redisUrl, secrets.databaseUrl, secrets.storageEncryptionKeys. Reserveer (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX plus marge. Houd DATABASE_SSL_MODE=verify-full remote; private Compose gebruikt disable. Team Helm vereist stabiele secrets.jwtSecret. S3 krijgt opaque keys en ciphertext.

Geïntegreerde archieven bewaren pool/timeouts, Redis, blobquota, selectors en S3 in ondertekende versleutelde configuratie.

App en worker krijgen dezelfde OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT, OLLAMA_MAX_CONTEXT. Waarden moeten volledige positieve decimalen zijn; 300000ms, exponent/hex, buiten bereik of lang timeout korter faalt.

Helm beperkt TRUST_PROXY tot 016, alleen HTTP-Pods; nooit true.

PostgreSQL-schema is exact. App/worker Recreate; drain oude Pods vóór upgrade, één nieuw proces migreert onder advisory lock. Geen mixed of zero-downtime. Rollback naar schone PostgreSQL/S3.

Actieve team-app vereist worker.replicaCount >= 1; zet app/worker nul voor pauze, app nul met worker is drain.

Private back-uphelper

Variabelen voor deploy/private/libre-webui-backup, gelezen door onderhoud:

VariabeleStandaardDoel
LIBRE_WEBUI_STACK_DIR/opt/libre-webuiCompose-directory
LIBRE_WEBUI_BACKUP_DIR/var/backups/libre-webuiBeveiligde back-ups
LIBRE_WEBUI_BACKUP_RETENTION_DAYS14Bewaartijd
LIBRE_WEBUI_CONTAINER_NAMElibre-webuiContainer
LIBRE_WEBUI_BACKUP_KEY_DIR/etc/libre-webui/backup-keysSleutels
LIBRE_WEBUI_RESTORE_IMAGEverplichtOnveranderlijke image
LIBRE_WEBUI_RESTORE_CONFIG_DIRonder /etc/libre-webui/restoredHerstelconfiguratie

systemd leest rootbestand /etc/libre-webui/backup.env modus 0600. Custom LIBRE_WEBUI_BACKUP_DIR vereist precreated exact pad in ReadWritePaths=. Zie Private remote implementatie.

Authenticatie en beveiliging

VariabeleStandaardDoel
ENABLE_SIGNUPfalseRegistratie
JWT_SECRETgegenereerd devJWT
JWT_EXPIRES_IN7dLevensduur
ENCRYPTION_KEYautomatisch64-hex
DEBUG_ENCRYPTIONniet ingesteldDebug
TURNSTILE_SITE_KEYniet ingesteldSitekey
TURNSTILE_SECRET_KEYniet ingesteldGeheim
TURNSTILE_EXPECTED_HOSTNAMEhost van BASE_URLVerwachte host
MFA_REQUIRED_MODEniet ingesteld (optional)optional/required
WEBAUTHN_RP_IDverzoekhostPasskey-ID
VAPID_PUBLIC_KEYgegenereerd/cijferOpenbaar
VAPID_PRIVATE_KEYgegenereerd/cijferPrivé
VAPID_SUBJECTmailto:admin@localhostContact

Turnstile alleen met beide. ENABLE_SIGNUP=false laat eerste beheerder toe. Bescherm remote bootstrap.

JWT is gebonden aan server-side sessie (sid), dus intrekken werkt direct overal.

| AUDIT_RETENTION_DAYS | 180 | Auditdagen |

Algemene OIDC Single Sign-On

OpenID Connect met discovery, PKCE S256, CSRF state en nonce in geverifieerd ID-token; identiteit op sub.

VariabeleStandaardDoel
OIDC_ISSUER_URLniet ingesteld<issuer>/.well-known/openid-configuration
OIDC_CLIENT_IDniet ingesteldClient ID
OIDC_CLIENT_SECRETniet ingesteldGeheim
OIDC_DISPLAY_NAMESingle Sign-OnLabel
OIDC_SCOPESopenid profile emailScopes
OIDC_CALLBACK_URLBASE_URL + routeRedirect
OIDC_ALLOWED_EMAIL_DOMAINSniet ingesteldDomeinen
OIDC_GROUP_CLAIMgroupsGroepenclaim
OIDC_ADMIN_GROUPSniet ingesteldAdmingroepen
OIDC_SYNC_GROUPSfalseSynchroniseren

Vereist issuer, ID en secret. Bestaand ongebonden lokaal e-mail wordt geweigerd; maken respecteert ENABLE_SIGNUP.

VariabeleStandaardDoel
CHAT_WS_MAX_PAYLOAD_BYTES10 MiBBericht
CHAT_WS_MAX_MESSAGES_PER_MINUTE120Per verbinding
CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER4Generaties
CHAT_WS_MAX_CONNECTIONS_PER_USER5Sockets
WEBSOCKET_TICKET_TTL_MS30000Ticket

Browser wisselt Authorization voor kort monousoticket. Met CORS_ORIGIN of BASE_URL moet Origin overeenkomen. Originloze Electron/non-browser blijft mogelijk met ticket en TLS/firewall/proxy.

OAuth

VariabeleDoel
GITHUB_CLIENT_IDGitHub ID
GITHUB_CLIENT_SECRETGitHub geheim
GITHUB_CALLBACK_URLCallback
HUGGINGFACE_CLIENT_IDHugging Face ID
HUGGINGFACE_CLIENT_SECRETGeheim
HUGGINGFACE_CALLBACK_URLCallback

Zonder callback wordt BASE_URL gebruikt.

Ollama

VariabeleStandaardDoel
OLLAMA_BASE_URLhttp://localhost:11434Basis
OLLAMA_TIMEOUT300000Standaard
OLLAMA_LONG_OPERATION_TIMEOUT900000Lang, niet korter
OLLAMA_MAX_CONTEXT32768Max context

Webzoeken

| SEARXNG_URL | niet ingesteld | Standaardendpoint; beheerder activeert |

Libre Claw

| LIBRE_CLAW_BASE_URL | http://127.0.0.1:8766 | Daemon | | LIBRE_CLAW_TIMEOUT_MS | 30000 | Timeout |

Work-runtime

VariabeleStandaardDoel
WORK_RUNTIME_IMAGEnode:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3Sandboximage
WORK_DOCKER_COMMANDdockerCLI
WORK_COMMAND_TIMEOUT_MS120000Max 600000
WORK_MAX_OUTPUT_CHARS50000Uitvoer
WORK_MAX_AGENT_ROUNDS48Ronden
WORK_STATUS_BLURB_MODEL10 slaat statusmodel over
WORK_MEMORY_LIMIT2gGeheugen
WORK_CPU_LIMIT2CPU
WORK_PIDS_LIMIT256Processen
WORK_PREVIEW_PORT4173Preview
WORK_PREVIEW_BIND127.0.0.1Bind; native Docker Engine met Compose vereist een bereikbare niet-publieke bridge-interface
WORK_DOCKER_PUBLISHED_HOSTapp: gelijk aan WORK_PREVIEW_BIND; Compose: host.docker.internalBackendhost
WORK_COMPUTER_SCREEN_PORT6080Scherm
WORK_COMPUTER_AUDIO_PORT6081Audio
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL3Instantie
WORK_MAX_ACTIVE_RUNTIMES_PER_USER2Gebruiker
WORK_MAX_TASKS_GLOBAL500Taken
WORK_MAX_TASKS_PER_USER100Per admin
WORK_NETWORK_NAMElibre-webui-workBridge
WORK_RUN_LEASE_WAIT_MS60000Lease
WORK_RUNTIME_DNSniet ingesteldResolver-IPs
WORK_DOCKER_SOCKETDOCKER_HOST als unix:///tcp://, anders /var/run/docker.sockEngine
WORK_TERMINAL_MAX_SESSIONS_PER_TASK2Terminals
WORK_TERMINAL_IDLE_TIMEOUT_MS900000Inactief
WORK_RUNTIME_IDLE_TIMEOUT_MS0 uitSandboxstop
WORK_HOST_WORKSPACES_ENABLEDfalseHostmap
WORK_HOST_WORKSPACE_ROOTSgebruikershome:-wortels
WORK_RUNTIME_BACKENDdockerdocker/kubernetes
WORK_K8S_NAMESPACElibre-webui-workNamespace
WORK_K8S_STORAGE_CLASSclusterstandaardStorageClass
WORK_K8S_WORKSPACE_SIZE5GiPVC
WORK_K8S_POD_READY_TIMEOUT_MS900000Ready
WORK_K8S_POD_GONE_TIMEOUT_MS60000Gone
AGENT_CLI_MODELS_ENABLEDniet ingesteldAgents
TOOLS_ACCESS_MODEniet ingesteldadmins/all-users
STT_ACCESS_MODEniet ingesteldSTT
TTS_ACCESS_MODEniet ingesteldTTS
VOICE_MODE_ACCESS_MODEniet ingesteldVoice
VOICE_CLONING_ACCESS_MODEniet ingesteldKlonen
TOOLS_PRIVATE_NETWORK_ALLOWLISTniet ingesteldPrivate hosts
AGENT_CLI_TIMEOUT_MS600000Agenttimeout
CODEX_OAUTH_MODELS_ENABLEDtrueCodex
CODEX_HOME~/.codexauth.json

Agent CLI en Codex zijn node-local, alleen solo. Team vereist AGENT_CLI_MODELS_ENABLED=false en CODEX_OAUTH_MODELS_ENABLED=false; gebruik gedeelde Ollama/plugin.

Hostmap monteert in /workspace, Kubernetes weigert. Houd WORK_HOST_WORKSPACES_ENABLED uit en WORK_HOST_WORKSPACE_ROOTS smal; symlinks worden opgelost en .ssh, .gnupg, .aws, .config geweigerd.

Agent CLI toont claude, codex aan admins en erft serverreferenties — gelijk aan shelltoegang.

Netwerktaken gebruiken WORK_NETWORK_NAME zonder inter-containercommunicatie. WORK_RUNTIME_DNS kan filteren maar geen directe IPs; firewall nodig. Kubernetes gebruikt work.networkPolicy.blockedEgressCidrs.

Terminal/diagnostiek gebruikt WORK_DOCKER_SOCKET, dan DOCKER_HOST (unix:// of tcp://, zie docker-compose.socket-proxy.yml), dan /var/run/docker.sock. ssh:// of tcp:// met DOCKER_TLS_VERIFY maakt terminal onbeschikbaar, overige Work via CLI. Kubernetes Pod exec.

Previewpoort is intern en dynamisch op loopback. Pin image. WORK_MAX_AGENT_ROUNDS geldt voor Ollama/plugins; budget max(128, WORK_MAX_AGENT_ROUNDS × 8). Uitputting vraagt finale overdracht en eindigt needs_input; nieuwe run gaat verder. Persistente uitvoer circa 20.000 tekens.

Compose-variabelen:

| DOCKER_GID | 0 | Socketgroep | | DOCKER_SOCKET | /var/run/docker.sock | Socketpad |

DOCKER_GID is groep gezien in container. Team gebruikt docker-compose.team.work.yml met gefilterde proxy, geen mount. Containercreatie blijft hostcontrole; dedicated/rootless sterker. Helm gebruikt work.enabled=true.

solo nul/één replica; team meerdere met gedeelde state. Work-Pods apart; worker krijgt image, StorageClass, work.env.

Compose: WEBUI_BIND_ADDRESS standaard 127.0.0.1, WEBUI_PORT 8080.

Providermodelontdekking

| PLUGIN_MODEL_DISCOVERY_TTL_MS | 21600000 (6 h) | Leeftijd | | PLUGIN_MODEL_DISCOVERY_RETRY_MS | 600000 (10 min) | Interval | | PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS | 3000 | Deadline |

Expliciete Modellen vernieuwen negeert interval.

Providersleutels

VariabeleProvider
OPENAI_API_KEYOpenAI/OpenAI TTS
ANTHROPIC_API_KEYAnthropic
GROQ_API_KEYGroq
GEMINI_API_KEYGoogle Gemini
MISTRAL_API_KEYMistral
OPENROUTER_API_KEYOpenRouter
KIMI_API_KEYKimi Code
GITHUB_API_KEYGitHub Models
HUGGINGFACE_API_KEYHugging Face
ELEVENLABS_API_KEYElevenLabs
COMFYUI_API_KEYComfyUI

Omgevingssleutels alleen bij ingebouwd vertrouwd manifest; customroute vereist gebruikerssleutel. Opgeslagen sleutels zijn aan definitie/route gebonden.

Relatief PLUGINS_DIR resolveert vanaf backend bij source, vanaf oproeper in pakket. Libre leest voor compatibiliteit ook backend/plugins. Verplaats legacy naar $DATA_DIR/plugins; symlinks niet gevolgd.

Frontend

VariabeleStandaardDoel
VITE_API_BASE_URLsame-origin dev-proxy of productie-APIAPI
VITE_WS_BASE_URLafgeleidws:/wss:
VITE_APP_VERSIONpakketVersie
VITE_DEMO_MODEfalseMocks
VITE_API_TIMEOUT300000Timeout
VITE_BACKEND_URLhttp://localhost:3001Auth
VITE_DEBUG_VERBOSEniet ingesteldDebug
VITE_LOG_LEVELniet ingesteldLog
ELECTRON_BUILDniet ingesteldElectron

VITE_WS_BASE_URL moet absoluut ws:/wss: zijn zonder credentials/query/fragment. Electron file: gebruikt ws://localhost:3001 bij afwezigheid; browserclients leiden hun basis af van VITE_API_BASE_URL, en anders van de browserorigin. Vite proxyt de ontwikkelorigin naar de backend op poort 3001.

Onderhoud

| CHANGELOG_AI | 0 schakelt AI uit | | CHANGELOG_AI_MODEL | Ollama-model | | CHANGELOG_AI_TIMEOUT_MS | Timeout |

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

Productievoorbeeld

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

Gerelateerde documenten