Passa al contenuto principale

Variabili d’ambiente

Questa pagina elenca le variabili per operatori lette da backend, frontend e script di manutenzione attuali. I canary interni per test sono omessi.

Server backend​

VariabilePredefinitoScopo
NODE_ENVdevelopmentModalità runtime
PORT3001 sviluppo, 8080 produzionePorta HTTP
TRUST_PROXYnon impostato (0 Helm)Numero esatto di hop proxy fidati per derivare l'indirizzo client
CORS_ORIGINorigini localiOrigini browser esatte, separate da virgola; * consente qualsiasi origine valida
SERVE_FRONTENDnon impostatoServire frontend compilato quando true
DOCKER_ENVnon impostatoComportamento Docker quando true
DATA_DIRbackend/data; ~/.libre-webui nel CLIDirectory dati persistenti
PLATFORM_PREFLIGHT_TMP_DIRbackend/temp/preflight; cache utente nel CLISpazio temporaneo per copia privata DB/WAL; dimensiona per entrambi
PLUGIN_UPLOAD_TEMP_DIRlibre-webui-plugin-uploads nella temp OSSpazio upload in corso
PLUGINS_DIR$DATA_DIR/pluginsDirectory scrivibile dei plugin
BASE_URLhttp://localhost:3001Base callback OAuth
LOG_LEVELinfo (warn nei test)Livello log
LOG_FORMATtextjson abilita log strutturati con timestamp, ID e redazione
OTEL_EXPORTER_OTLP_ENDPOINTnon impostatoExport OTLP/HTTP JSON opt-in; assente significa nessuna telemetria
OTEL_EXPORTER_OTLP_HEADERSnon impostatoHeader key=value separati da virgola
OTEL_SERVICE_NAMElibre-webuiAttributo service.name
WEBUI_HOSTloopback; 0.0.0.0 DockerIndirizzo di ascolto
OPEN_BROWSERtrue servendo frontendfalse non apre browser
FULL_DOCUMENT_CONTEXT_MAX_TOKENS32000Limite token modalità documento completo (1000-2000000)
GALLERY_RETENTION_DAYSnon impostato (per sempre)Elimina media più vecchi
RECOVERY_DRILL_INTERVAL_HOURSnon impostato (drill disattivati)Drill verificato ogni N ore (solo)
RECOVERY_DRILL_HISTORY60Voci cronologia

Le voci di CORS_ORIGIN corrispondono alle origini browser serializzate: schema, hostname e porta facoltativa, senza percorso, credenziali, query o frammento. Le richieste devono avere un'unica origine canonica; valori malformati ed elenchi di origini vengono rifiutati anche con CORS_ORIGIN=*. I client che omettono Origin restano consentiti. L'origine opaca null richiede una voce null esplicita oppure *.

In Docker (DOCKER_ENV=true) e nelle modalità non di produzione vengono accettati anche, per le origini HTTP(S), localhost esatto e gli indirizzi IPv4 letterali in 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 e 100.64.0.0/10. Gli hostname che iniziano soltanto con quelle stringhe, come localhost.attacker.example, non sono indirizzi locali. Le origini IPv6 richiedono una voce esplicita oppure *; non sono incluse automaticamente nell'eccezione di rete. I deployment nativi di produzione usano solo l'elenco esplicito di origini o il carattere jolly. CORS non sostituisce l'autenticazione dell'API tramite bearer token.

Le esecuzioni da sorgente ancorano valori relativi DATA_DIR, PLUGINS_DIR, PLATFORM_PREFLIGHT_TMP_DIR alla directory backend. DATA_DIR=./data sceglie backend/data; il legacy DATA_DIR=./backend/data sceglie backend/backend/data. Cambialo solo in una migrazione fermata e con backup. Senza valore, usa la directory storica se è l'unico store. Se entrambe contengono stato e nessuna è selezionata, l'avvio fallisce invece di indovinare, copiare o unire.

npx, npm globale e Homebrew conservano in ~/.libre-webui. Un DATA_DIR relativo esplicito viene risolto dalla directory chiamante e convertito in assoluto. PLUGINS_DIR segue la stessa regola; assente rimane in $DATA_DIR/plugins. Il preflight usa cache esterna: ~/Library/Caches/libre-webui su macOS, %LOCALAPPDATA%\libre-webui Windows o ${XDG_CACHE_HOME:-~/.cache}/libre-webui. Homebrew usa var/libre-webui/preflight. Imposta PLATFORM_PREFLIGHT_TMP_DIR se non contiene database e WAL. Docker/Helm usano /app/backend/data e /app/backend/temp/preflight su mount separati.

Fondazione della piattaforma​

solo usa SQLite, blob e vettori locali cifrati, coordinamento locale e worker integrato. team usa PostgreSQL, S3 privato, PGVector, Redis e worker esterno. Team fallisce chiuso se le dipendenze condivise non sono selezionate insieme.

VariabilePredefinitoScopo
LIBRE_PLATFORM_MODEsoloProfilo solo o team
DATABASE_BACKENDsqlitesqlite o postgres
DATABASE_URLnon impostatoURL PostgreSQL richiesta con postgres
DATABASE_SSL_MODEverify-fullTLS disable, require, verify-full
POSTGRES_MIGRATION_MODEapplyMigrazioni sotto leader lock o validate
POSTGRES_POOL_MAX10Connessioni per processo (1-100)
POSTGRES_CONNECT_TIMEOUT_MS5000Timeout connessione (1-60000 ms)
POSTGRES_IDLE_TIMEOUT_MS30000Timeout inattivo (1-600000 ms)
POSTGRES_STATEMENT_TIMEOUT_MS30000Timeout statement (1-600000 ms)
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS60000Attesa lock (1-600000 ms)
BLOB_STORE_BACKENDlocallocal cifrato o s3 privato
VECTOR_STORE_BACKENDembedded con SQLiteembedded cifrato o pgvector
COORDINATION_BACKENDlocal solo; redis teamCoordinamento locale o Redis
REDIS_URLnon impostatoURL redis:/rediss: richiesta
REDIS_KEY_PREFIXlibreNamespace 1-64 caratteri
REDIS_CONNECT_TIMEOUT_MS5000Timeout iniziale, max 60 secondi
JOB_WORKER_MODEembedded solo; external teamHandler nell'app o worker condiviso
RESOURCE_LEASE_TTL_MS30000TTL lease (5000-300000)
JOB_WORKER_CONCURRENCY4Lavori simultanei (1-32)
CHAT_STREAM_EVENT_RETENTION_HOURS24Ore retention chunk chat
PLATFORM_EVENT_RETENTION_DAYS30Giorni retention eventi
PLATFORM_JOB_RETENTION_DAYS30Giorni retention lavori
LIBRE_SKIP_STARTUP_INTEGRITY_SCANnon impostato1 salta la scansione profonda successiva
STORAGE_ENCRYPTION_KEYSnon impostatoMappa JSON con legacy uguale a ENCRYPTION_KEY
STORAGE_ENCRYPTION_ACTIVE_KEY_IDnon impostatoID per nuove scritture
BLOB_QUOTA_BYTES_PER_USER10737418240Byte plaintext massimi per proprietario
BLOB_QUOTA_RESERVATION_TTL_MS3600000Vita prenotazione abbandonata (min 60000 ms)
S3_BUCKETnon impostatoBucket richiesto con s3
S3_REGIONnon impostatoRegione richiesta
S3_ENDPOINTdefault providerEndpoint HTTP(S) opzionale
S3_ACCESS_KEY_IDcatena credenziali SDKChiave esplicita
S3_SECRET_ACCESS_KEYcatena credenziali SDKRichiesta con chiave esplicita
S3_SESSION_TOKENnon impostatoToken opzionale
S3_FORCE_PATH_STYLEfalsetrue per path-style
S3_BLOB_PREFIXlibre/blobsPrefisso opaco

Senza mappa versionata, gli adattatori usano ENCRYPTION_KEY come ID legacy; senza, leggono ${DATA_DIR}/.encryption_key senza generare/modificare. Configurazione e file devono coincidere. Introducendo una mappa, mantieni la chiave sotto legacy finché oggetti e vettori non sono riscritti/verificati. Conflitti, permessi insicuri, symlink o chiavi mancanti falliscono chiuso.

Redis coordina, non è persistenza canonica. Da solo non rende SQLite/file sicuri tra repliche. In team, rate limit HTTP, connessioni, STT/TTS/audio, import e terminali Work usano admission condivisa. Errori restituiscono 503 o abortiscono, senza fallback locale. Vedi Fondazione piattaforma.

Compose/Helm team inoltrano selettori e tuning ad app e worker. Nel chart i non-secret sono in env; connessioni/chiavi in secrets.redisUrl, secrets.databaseUrl, secrets.storageEncryptionKeys. I pool sono per processo: riserva (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX più margine. Mantieni DATABASE_SSL_MODE=verify-full remoto; Compose isolato usa disable. Team Helm richiede secrets.jwtSecret stabile in ogni Pod. S3 riceve chiavi opache e ciphertext.

Gli archivi integrati conservano pool/timeout PostgreSQL, Redis, quote blob, selettori e S3 nella configurazione cifrata e firmata.

App e worker ricevono stessi OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT, OLLAMA_MAX_CONTEXT. I valori devono essere interi decimali positivi completi. 300000ms, esponente/esadecimale, fuori range o timeout lungo inferiore falliscono l'avvio.

Helm limita TRUST_PROXY a 0–16 e lo invia solo ai Pod HTTP. Usa 0 diretto e numero esatto nella catena; mai true.

La compatibilità PostgreSQL è esatta. App/worker usano Recreate; drena tutti i vecchi Pod prima dell'upgrade e lascia un nuovo processo migrare sotto advisory lock. Niente versioni miste o zero-downtime. Rollback ripristina l'archivio verificato in target puliti.

Un'app team attiva richiede worker.replicaCount >= 1. Azzera app e worker per sospensione completa; app zero e worker positivo è drain/recupero worker-only.

Helper di backup privato​

Queste variabili configurano deploy/private/libre-webui-backup e sono lette dallo script di manutenzione:

VariabilePredefinitoScopo
LIBRE_WEBUI_STACK_DIR/opt/libre-webuiDirectory Compose privata
LIBRE_WEBUI_BACKUP_DIR/var/backups/libre-webuiDirectory protetta backup/lock
LIBRE_WEBUI_BACKUP_RETENTION_DAYS14Età di rimozione
LIBRE_WEBUI_CONTAINER_NAMElibre-webuiContainer da ispezionare
LIBRE_WEBUI_BACKUP_KEY_DIR/etc/libre-webui/backup-keysDirectory chiavi cifratura/firma
LIBRE_WEBUI_RESTORE_IMAGErichiesta per restoreID/digest immutabile revisionato
LIBRE_WEBUI_RESTORE_CONFIG_DIRpercorso per volume in /etc/libre-webui/restoredNuova directory configurazione recuperata

L'unità systemd legge override da /etc/libre-webui/backup.env root-owned, modalità 0600. La sandbox permette scrittura solo nella directory predefinita. Un LIBRE_WEBUI_BACKUP_DIR custom richiede anche la directory esatta precreata in un drop-in ReadWritePaths=; vedi Distribuzione remota privata.

Autenticazione e sicurezza​

VariabilePredefinitoScopo
ENABLE_SIGNUPfalseRegistrazioni dopo il primo admin
JWT_SECRETgenerato/fallback sviluppoSegreto firma; impostalo in produzione
JWT_EXPIRES_IN7dDurata sessione
ENCRYPTION_KEYauto-generataChiave esadecimale 64 caratteri
DEBUG_ENCRYPTIONnon impostatoLog debug cifratura
TURNSTILE_SITE_KEYnon impostatoChiave sito Turnstile
TURNSTILE_SECRET_KEYnon impostatoChiave segreta
TURNSTILE_EXPECTED_HOSTNAMEhostname da BASE_URLHost richiesto
MFA_REQUIRED_MODEnon impostato (toggle admin, optional)optional o required
WEBAUTHN_RP_IDhostname richiestaRelying-party ID fisso
VAPID_PUBLIC_KEYgenerata e cifrataChiave pubblica VAPID (base64url P-256 point)
VAPID_PRIVATE_KEYgenerata e cifrataChiave privata VAPID (base64url scalar)
VAPID_SUBJECTmailto:admin@localhostContatto Web Push

Turnstile è attivo solo con entrambe.

ENABLE_SIGNUP=false consente comunque il primo admin in database vuoto. Proteggi una route remota di bootstrap con una frontiera identità esterna.

Ogni JWT è legato a sessione server-side (claim sid); logout/revoca invalida subito su tutte le repliche e chiude WebSocket.

VariabilePredefinitoScopo
AUDIT_RETENTION_DAYS180Giorni retention audit

Single Sign-On OIDC generico​

Qualunque provider OpenID Connect con discovery document può essere usato. Il flusso usa PKCE (S256), stato CSRF e nonce nel token verificato. Identità legate a claim sub.

VariabilePredefinitoScopo
OIDC_ISSUER_URLnon impostatoBase issuer; discovery da <issuer>/.well-known/openid-configuration
OIDC_CLIENT_IDnon impostatoClient ID
OIDC_CLIENT_SECRETnon impostatoClient secret
OIDC_DISPLAY_NAMESingle Sign-OnEtichetta login
OIDC_SCOPESopenid profile emailScope
OIDC_CALLBACK_URLBASE_URL + route OIDCRedirect URI
OIDC_ALLOWED_EMAIL_DOMAINSnon impostatoDomini email verificati
OIDC_GROUP_CLAIMgroupsClaim gruppi
OIDC_ADMIN_GROUPSnon impostatoGruppi che controllano admin
OIDC_SYNC_GROUPSfalsetrue sincronizza gruppi

Richiede issuer, ID e secret. Email già usata da account locale non collegato viene rifiutata; la creazione rispetta ENABLE_SIGNUP.

Admisson WebSocket:

VariabilePredefinitoScopo
CHAT_WS_MAX_PAYLOAD_BYTES10 MiBPayload massimo
CHAT_WS_MAX_MESSAGES_PER_MINUTE120Messaggi per connessione
CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER4Generazioni per account
CHAT_WS_MAX_CONNECTIONS_PER_USER5Socket simultanei
WEBSOCKET_TICKET_TTL_MS30000Vita ticket, max 60s

Il browser scambia Authorization con ticket opaco breve, monouso e hashato. Quando CORS_ORIGIN o BASE_URL è configurato, Origin deve coincidere. Impostane almeno uno in remoto; senza, è permissivo per sviluppo. Upgrade senza Origin restano per Electron/non-browser, ma richiedono ticket e stessi controlli; limita con TLS/firewall/proxy.

OAuth​

VariabileScopo
GITHUB_CLIENT_IDGitHub client ID
GITHUB_CLIENT_SECRETGitHub secret
GITHUB_CALLBACK_URLCallback override
HUGGINGFACE_CLIENT_IDHugging Face client ID
HUGGINGFACE_CLIENT_SECRETHugging Face secret
HUGGINGFACE_CALLBACK_URLCallback override

Senza callback, Libre li crea da BASE_URL.

Ollama​

VariabilePredefinitoScopo
OLLAMA_BASE_URLhttp://localhost:11434URL base
DEFAULT_MODEL(vuoto)Modello con cui iniziano i nuovi account finché non ne scelgono uno (--model da CLI)
OLLAMA_TIMEOUT300000Timeout standard (1.000-3.600.000 ms)
OLLAMA_LONG_OPERATION_TIMEOUT900000Timeout lungo non inferiore a OLLAMA_TIMEOUT
OLLAMA_MAX_CONTEXT32768Contesto massimo (128-2.097.152 token)

Ricerca web​

VariabilePredefinitoScopo
SEARXNG_URLnon impostatoEndpoint predefinito; l'admin lo abilita nelle Impostazioni

Notifiche email​

Queste variabili configurano il server di posta in uscita che gli amministratori gestiscono in Impostazioni > Gestione utenti > Accesso e criteri > Notifiche email. Un valore salvato lì ha la precedenza sulla variabile; svuotare il campo nella UI ripristina la variabile. Le email restano disattivate finché un amministratore non attiva l'interruttore, e ogni utente sceglie comunque se attivarle per ciascun tipo di notifica in Impostazioni > Notifiche.

VariabilePredefinitoScopo
SMTP_HOSTnon impostatoNome host del server di posta
SMTP_PORT587, oppure 465 con tlsPorta del server di posta
SMTP_SECURITYstarttlsstarttls (eleva una connessione in chiaro), tls (TLS implicito) o none (rete affidabile)
SMTP_USERnon impostatoUtente per l'autenticazione; lascia non impostato per un relay che accetta posta senza autenticazione
SMTP_PASSWORDnon impostatoPassword per l'autenticazione; una password salvata nella UI viene cifrata e ha la precedenza
SMTP_FROMnon impostatoMittente, ad esempio Libre WebUI <[email protected]>
SMTP_TLS_REJECT_UNAUTHORIZEDtrueImposta false solo per un relay con certificato autofirmato
BASE_URLnon impostatoURL pubblico dell'istanza, usato per i link nei messaggi

Motore Strands​

VariabilePredefinitoScopo
LIBRE_STRANDS_ACCESSnon impostata (impostazione admin, disattivo)Fissa chi può usare il motore Strands integrato: disabled, admins o all-users. Qualsiasi altro valore lo blocca su disattivato

Runtime Work​

Queste variabili configurano Work sulla macchina o cluster del backend. Docker è default; Helm sceglie Kubernetes con work.enabled=true.

VariabilePredefinitoScopo
WORK_RUNTIME_IMAGEnode:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3Immagine sandbox fissata
WORK_DOCKER_COMMANDdockerEseguibile CLI
WORK_COMMAND_TIMEOUT_MS120000Timeout default; tool fino a 600000 ms
WORK_MAX_OUTPUT_CHARS50000Limite stdout/stderr per stream
WORK_MAX_AGENT_ROUNDS48Round per esecuzione
WORK_STATUS_BLURB_MODEL10 salta la richiesta di stato agente
WORK_MEMORY_LIMIT2gMemoria per container
WORK_CPU_LIMIT2CPU
WORK_PIDS_LIMIT256Processi
WORK_PREVIEW_PORT4173Porta preview interna
WORK_PREVIEW_BIND127.0.0.1Interfaccia host; con Compose su Docker Engine nativo serve un'interfaccia bridge non pubblica raggiungibile
WORK_DOCKER_PUBLISHED_HOSTapp: uguale a WORK_PREVIEW_BIND; Compose: host.docker.internalHost/IP backend per preview/schermo/audio
WORK_COMPUTER_SCREEN_PORT6080Porta bridge schermo
WORK_COMPUTER_AUDIO_PORT6081Porta bridge audio
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL3Attività runtime simultanee istanza
WORK_MAX_ACTIVE_RUNTIMES_PER_USER2Per utente
WORK_MAX_TASKS_GLOBAL500Attività persistenti istanza
WORK_MAX_TASKS_PER_USER100Per admin
WORK_NETWORK_NAMElibre-webui-workBridge gestito
WORK_RUN_LEASE_WAIT_MS60000Attesa lease condiviso (team)
WORK_RUNTIME_DNSnon impostatoIP resolver separati da virgola
WORK_DOCKER_SOCKETDOCKER_HOST se unix:// o tcp://, altrimenti /var/run/docker.sockEndpoint Engine
WORK_TERMINAL_MAX_SESSIONS_PER_TASK2Terminali simultanei
WORK_TERMINAL_IDLE_TIMEOUT_MS900000Timeout inattività
WORK_RUNTIME_IDLE_TIMEOUT_MS1800000 (30 min)Ferma sandbox inattivo
WORK_HOST_WORKSPACES_ENABLEDfalsePermetti cartella host
WORK_HOST_WORKSPACE_ROOTShome utente serverRadici :
WORK_RUNTIME_BACKENDdockerdocker/kubernetes
WORK_K8S_NAMESPACElibre-webui-workNamespace
WORK_K8S_STORAGE_CLASSdefault clusterStorageClass
WORK_K8S_WORKSPACE_SIZE5GiPVC per attività
WORK_K8S_POD_READY_TIMEOUT_MS900000Attesa Running
WORK_K8S_POD_GONE_TIMEOUT_MS60000Attesa eliminazione
AGENT_CLI_MODELS_ENABLEDnon impostato (toggle admin, off)Fissa lo stato dei modelli di agenti CLI diretti; se non impostata, usa il relativo interruttore separato
TOOLS_ACCESS_MODEnon impostato (admin-only)admins/all-users
STT_ACCESS_MODEnon impostato (tutti)Accesso STT
TTS_ACCESS_MODEnon impostato (tutti)Accesso TTS
VOICE_MODE_ACCESS_MODEnon impostato (tutti)Modalità voce
VOICE_CLONING_ACCESS_MODEnon impostato (tutti)Clonazione
TOOLS_PRIVATE_NETWORK_ALLOWLISTnon impostatoHost esatti privati
AGENT_CLI_TIMEOUT_MS600000Timeout agent CLI
CODEX_OAUTH_MODELS_ENABLEDtrueCodex (ChatGPT) agli admin
CODEX_HOME~/.codexPercorso auth.json

Agent CLI e credenziali Codex sono node-local e supportati solo in solo. Team richiede AGENT_CLI_MODELS_ENABLED=false e CODEX_OAUTH_MODELS_ENABLED=false; usa Ollama o plugin con stato condiviso.

Una cartella host viene montata in /workspace, permettendo accesso diretto. Kubernetes la rifiuta. Mantieni WORK_HOST_WORKSPACES_ENABLED off e WORK_HOST_WORKSPACE_ROOTS stretto. I percorsi risolvono symlink e rifiutano .ssh, .gnupg, .aws, .config.

I modelli Agent CLI espongono claude, codex installati senza API key. Solo admin li vedono e il CLI eredita credenziali: equivalente ad accesso shell degli agenti.

Le attività networked entrano nella bridge WORK_NETWORK_NAME senza comunicazione inter-container. WORK_RUNTIME_DNS usa resolver filtrante; valori non IP sono rifiutati. Non limita IP diretti, quindi serve firewall. Kubernetes usa work.networkPolicy.blockedEgressCidrs.

Terminale e diagnostica parlano Engine API via WORK_DOCKER_SOCKET, poi DOCKER_HOST (unix:// o tcp:// HTTP, vedi docker-compose.socket-proxy.yml), poi /var/run/docker.sock. ssh:// o tcp:// con DOCKER_TLS_VERIFY rendono terminale/diagnostica indisponibili, mentre il resto usa CLI. Kubernetes usa Pod exec.

La porta preview è interna e pubblicata dinamicamente su loopback. Fissa l'immagine. WORK_MAX_AGENT_ROUNDS vale per Ollama e plugin; budget tool max(128, WORK_MAX_AGENT_ROUNDS × 8). Esaurito, richiede handoff finale e termina needs_input; una nuova esecuzione continua. Output persistito circa 20.000 caratteri più marker.

Compose abilita Work con CLI e socket. Variabili:

VariabilePredefinitoScopo
DOCKER_GID0Gruppo socket aggiunto all'utente
DOCKER_SOCKET/var/run/docker.sockPercorso socket

DOCKER_GID deve essere il gruppo visto nel container; macOS differisce. Team non monta socket finché non aggiungi docker-compose.team.work.yml, che usa proxy filtrato per app/worker. Creare container resta controllo host; preferisci daemon dedicato/rootless. Helm usa Pod/PVC con work.enabled=true.

solo ha zero o una replica. team completo può averne molte grazie a PostgreSQL, S3, PGVector e Redis. I Pod Work scalano separatamente e il worker riceve stessa immagine, StorageClass e work.env.

Compose accetta WEBUI_BIND_ADDRESS default 127.0.0.1 e WEBUI_PORT default 8080; mantieni loopback salvo necessità affidabile.

Scoperta modelli provider​

VariabilePredefinitoScopo
PLUGIN_MODEL_DISCOVERY_TTL_MS21600000 (6 h)Età per refresh
PLUGIN_MODEL_DISCOVERY_RETRY_MS600000 (10 min)Intervallo minimo
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS3000Attesa prima della risposta

Refresh tardivo appare dopo. Aggiorna modelli ignora intervallo.

Chiavi plugin provider​

VariabileProvider
OPENAI_API_KEYOpenAI e OpenAI TTS
ANTHROPIC_API_KEYAnthropic
GROQ_API_KEYGroq
GEMINI_API_KEYGoogle Gemini
MISTRAL_API_KEYMistral
DEEPSEEK_API_KEYDeepSeek
AWS_BEARER_TOKEN_BEDROCKChiave API di Amazon Bedrock
OPENROUTER_API_KEYOpenRouter
KIMI_API_KEYKimi Code di Moonshot AI
GITHUB_API_KEYGitHub Models
HUGGINGFACE_API_KEYAPI Hugging Face
ELEVENLABS_API_KEYElevenLabs TTS
COMFYUI_API_KEYComfyUI con chiave

Gli utenti possono salvare credenziali. Le chiavi ambientali valgono solo per definizione inclusa non shadowed; importate, scrivibili con ID incluso e route custom richiedono credenziale account. La fiducia viene dall'hash compilato.

Le chiavi salvate dagli utenti sono legate alla definizione effettiva del provider, all’origine, al contratto di autenticazione e ai valori di routing. Gli aggiornamenti del catalogo dei modelli le conservano. Gli utenti devono salvare di nuovo la chiave dopo che un amministratore ha cambiato quella destinazione. Le chiavi non vincolate precedenti all’aggiornamento sono accettate e vincolate al primo utilizzo solo per una definizione distribuita esatta che usa la sua route inclusa.

PLUGINS_DIR relativo da source risolve dal backend, nel pacchetto dal chiamante. Libre legge anche backend/plugins e percorsi legacy; sposta in $DATA_DIR/plugins. Il recovery blocca snapshot solo-volume mentre esiste stato esterno. Plugin devono essere file fisici, niente symlink.

Frontend​

VariabilePredefinitoScopo
VITE_API_BASE_URLproxy di sviluppo stessa origine o API di produzioneURL base API
VITE_WS_BASE_URLinferito dall'APIBase ws:/wss: Chat/Work
VITE_APP_VERSIONversione packageVersione mostrata
VITE_DEMO_MODEfalseMock quando true
VITE_API_TIMEOUT300000Timeout ms
VITE_BACKEND_URLhttp://localhost:3001Helper auth
VITE_DEBUG_VERBOSEnon impostatoLog debug
VITE_LOG_LEVELnon impostatoLivello log
ELECTRON_BUILDnon impostatoComportamento Electron con true

VITE_WS_BASE_URL sostituisce fallback WebSocket; deve essere assoluto ws:/wss: senza credenziali, query o fragment. Assente, Electron file: usa ws://localhost:3001; il browser deriva dalla VITE_API_BASE_URL, poi dall'origine del browser. Vite instrada in proxy l'origine di sviluppo verso il backend sulla porta 3001.

Script di manutenzione​

VariabileScopo
CHANGELOG_AI0 disabilita bozze IA
CHANGELOG_AI_MODELModello Ollama
CHANGELOG_AI_TIMEOUT_MSTimeout ms
CHANGELOG_AI_MODEL=glm-5.2:cloud npm run changelog
CHANGELOG_AI=0 npm run release:minor

Esempio produzione​

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

Documenti correlati​