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 consentite, separate da virgola
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 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 016 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
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

Libre Claw

VariabilePredefinitoScopo
LIBRE_CLAW_BASE_URLhttp://127.0.0.1:8766URL daemon opzionale
LIBRE_CLAW_TIMEOUT_MS30000Timeout HTTP

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_MS0 disabilitatoFerma 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 Agents
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
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 sono legate a definizione, origine, autenticazione e rotta; vanno risalvate dopo cambio. Legacy senza legame migra solo su definizione/rotta esatte.

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