Μετάβαση στο κύριο περιεχόμενο

Μεταβλητές περιβάλλοντος

Αυτή η σελίδα παραθέτει τις υποστηριζόμενες μεταβλητές περιβάλλοντος για χειριστές που διαβάζουν το τρέχον backend, frontend και τα scripts συντήρησης του Libre WebUI. Οι εσωτερικές τιμές canary που χρησιμοποιούνται μόνο σε δοκιμές παραλείπονται σκόπιμα.

Διακομιστής backend

ΜεταβλητήΠροεπιλογήΣκοπός
NODE_ENVdevelopmentΛειτουργία runtime
PORT3001 στην ανάπτυξη, 8080 στην παραγωγήΘύρα HTTP του backend
TRUST_PROXYδεν έχει οριστεί (0 στο Helm)Ακριβής αριθμός έμπιστων hop reverse proxy για την εξαγωγή της διεύθυνσης πελάτη
CORS_ORIGINτοπικές προελεύσεις ανάπτυξηςΕπιτρεπόμενες προελεύσεις προγράμματος περιήγησης, χωρισμένες με κόμμα
SERVE_FRONTENDδεν έχει οριστείΠαροχή του build frontend από το backend όταν είναι true
DOCKER_ENVδεν έχει οριστείΕνεργοποιεί συμπεριφορά προσανατολισμένη στο Docker όταν είναι true
DATA_DIRbackend/data· ~/.libre-webui στο πακεταρισμένο CLIΜόνιμος κατάλογος δεδομένων
PLATFORM_PREFLIGHT_TMP_DIRbackend/temp/preflight· cache χρήστη στο πακεταρισμένο CLIΠρόχειρος χώρος για ιδιωτικό αντίγραφο ελέγχου DB/WAL κατά την εκκίνηση· διαστασιολογήστε τον για τη βάση και το WAL
PLUGIN_UPLOAD_TEMP_DIRlibre-webui-plugin-uploads στον προσωρινό κατάλογο του OSΠρόχειρος χώρος για μεταφορτώσεις προσθέτων σε εξέλιξη
PLUGINS_DIR$DATA_DIR/pluginsΕγγράψιμος κατάλογος εγκατεστημένων/προσαρμοσμένων προσθέτων
BASE_URLhttp://localhost:3001Βασική URL για προεπιλεγμένα callback OAuth
LOG_LEVELinfo (warn στις δοκιμές)Επίπεδο καταγραφής backend
LOG_FORMATtextΤο json ενεργοποιεί δομημένες μονόγραμμες καταγραφές με χρονικές σημάνσεις, id συσχέτισης και απόκρυψη
OTEL_EXPORTER_OTLP_ENDPOINTδεν έχει οριστείΠροαιρετική εξαγωγή τηλεμετρίας OTLP/HTTP JSON· χωρίς τιμή δεν εξέρχεται τηλεμετρία από τη διεργασία
OTEL_EXPORTER_OTLP_HEADERSδεν έχει οριστείHeader key=value χωρισμένα με κόμμα που στέλνονται στον συλλέκτη OTLP (π.χ. έλεγχος ταυτότητας)
OTEL_SERVICE_NAMElibre-webuiΧαρακτηριστικό πόρου service.name στην εξαγόμενη τηλεμετρία
WEBUI_HOSTloopback· 0.0.0.0 στο DockerΔιεύθυνση ακρόασης HTTP
OPEN_BROWSERtrue κατά την παροχή του frontendΟρίστε false για να αποτρέψετε το αυτόματο άνοιγμα προγράμματος περιήγησης
FULL_DOCUMENT_CONTEXT_MAX_TOKENS32000Όριο token για τη λειτουργία περιεχομένου πλήρους εγγράφου ανά συνομιλία (1000-2000000)
GALLERY_RETENTION_DAYSδεν έχει οριστεί (διατήρηση για πάντα)Διαγραφή πολυμέσων συλλογής παλαιότερων από τόσες ημέρες μέσω του προγραμματιστή
RECOVERY_DRILL_INTERVAL_HOURSδεν έχει οριστεί (ασκήσεις ανενεργές)Αυτόματη εκτέλεση επαληθευμένης άσκησης ανάκτησης κάθε N ώρες (προφίλ solo)
RECOVERY_DRILL_HISTORY60Διατηρούμενες καταχωρίσεις ιστορικού ασκήσεων ανάκτησης

Οι εκκινήσεις από τον πηγαίο κώδικα αγκυρώνουν τις σχετικές τιμές DATA_DIR, PLUGINS_DIR και PLATFORM_PREFLIGHT_TMP_DIR στον κατάλογο backend, ανεξάρτητα από τον κατάλογο εργασίας του shell. Με το DATA_DIR χωρίς τιμή — ή με το παράδειγμα νέας εγκατάστασης DATA_DIR=./data — οι εντολές από τη ρίζα και τον χώρο εργασίας backend χρησιμοποιούν επομένως το backend/data. Για συμβατότητα, μια υπάρχουσα ρύθμιση πηγής με DATA_DIR=./backend/data εξακολουθεί να επιλέγει backend/backend/data· αλλάξτε την μόνο στο πλαίσιο σκόπιμου αντιγράφου ασφαλείας και μετεγκατάστασης με σταματημένη υπηρεσία. Ένα προφίλ πηγής χωρίς τιμή εξακολουθεί επίσης να χρησιμοποιεί backend/backend/data όταν αυτός είναι ο μόνος υπάρχων μόνιμος χώρος. Αν και οι δύο θέσεις περιέχουν κατάσταση και δεν έχει επιλεγεί διαδρομή, η εκκίνηση αποτυγχάνει με ασφαλή τρόπο αντί να μαντέψει, να αντιγράψει ή να συγχωνεύσει.

Οι εκκινητές npx, καθολικού npm και διαδραστικού Homebrew διατηρούν αντίθετα τα δεδομένα στο ~/.libre-webui. Ένα ρητό σχετικό DATA_DIR που δίνεται σε αυτόν τον εκκινητή επιλύεται από τον κατάλογο εργασίας του καλούντος και μετατρέπεται σε απόλυτη διαδρομή πριν ξεκινήσει το backend. Ένα ρητά ρυθμισμένο σχετικό PLUGINS_DIR ακολουθεί τον ίδιο κανόνα· όταν δεν έχει τιμή, τα εγγράψιμα πρόσθετα παραμένουν στο $DATA_DIR/plugins. Ο πρόχειρος χώρος ελέγχου χρησιμοποιεί από προεπιλογή εγγράψιμη cache χρήστη έξω από τον κατάλογο δεδομένων: ~/Library/Caches/libre-webui στο macOS, %LOCALAPPDATA%\libre-webui στα Windows ή ${XDG_CACHE_HOME:-~/.cache}/libre-webui σε άλλα συστήματα. Η υπηρεσία Homebrew καρφιτσώνει τον ίδιο οικιακό κατάλογο δεδομένων και χρησιμοποιεί το var/libre-webui/preflight του Homebrew ως πρόχειρο χώρο. Ορίστε ρητά το PLATFORM_PREFLIGHT_TMP_DIR όταν αυτή η cache δεν χωρά τη βάση δεδομένων και το WAL της. Οι παρεχόμενες αναπτύξεις Docker και Helm χρησιμοποιούν τις απόλυτες διαδρομές /app/backend/data και /app/backend/temp/preflight σε ξεχωριστές προσαρτήσεις.

Θεμέλιο πλατφόρμας

Το προεπιλεγμένο προφίλ solo χρησιμοποιεί SQLite, τοπικά κρυπτογραφημένα blob, κρυπτογραφημένα ενσωματωμένα διανύσματα, τοπικό συντονισμό και ενσωματωμένο μόνιμο worker. Το προφίλ team χρησιμοποιεί PostgreSQL, ιδιωτικά blob συμβατά με S3, PGVector, Redis και εξωτερικό worker. Η ρύθμιση team αποτυγχάνει με ασφαλή τρόπο: όλες οι κοινόχρηστες εξαρτήσεις πρέπει να επιλέγονται μαζί.

ΜεταβλητήΠροεπιλογήΣκοπός
LIBRE_PLATFORM_MODEsoloΕπιλογή συνεκτικού προφίλ solo ή team
DATABASE_BACKENDsqliteΕπιλογή sqlite ή postgres
DATABASE_URLδεν έχει οριστείURL σύνδεσης PostgreSQL, απαιτείται με postgres
DATABASE_SSL_MODEverify-fullΠολιτική TLS PostgreSQL: disable, require ή verify-full με επαλήθευση ονόματος host
POSTGRES_MIGRATION_MODEapplyΕκτέλεση συμβατών μετεγκαταστάσεων με κλείδωμα ηγέτη ή validate για έλεγχο σχήματος μόνο για ανάγνωση
POSTGRES_POOL_MAX10Μέγιστες συνδέσεις PostgreSQL ανά διεργασία εφαρμογής ή worker (1-100)
POSTGRES_CONNECT_TIMEOUT_MS5000Timeout σύνδεσης PostgreSQL (1-60000 ms)
POSTGRES_IDLE_TIMEOUT_MS30000Timeout αδρανούς σύνδεσης PostgreSQL (1-600000 ms)
POSTGRES_STATEMENT_TIMEOUT_MS30000Timeout εντολής PostgreSQL (1-600000 ms)
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS60000Αναμονή για το κλείδωμα ηγέτη μετεγκατάστασης (1-600000 ms)
BLOB_STORE_BACKENDlocalΕπιλογή κρυπτογραφημένου χώρου local ή ιδιωτικού s3
VECTOR_STORE_BACKENDembedded με SQLiteΕπιλογή κρυπτογραφημένων διανυσμάτων embedded ή pgvector
COORDINATION_BACKENDlocal στο solo· redis στο teamΕπιλογή συντονισμού εντός διεργασίας ή Redis
REDIS_URLδεν έχει οριστείURL redis: ή rediss:, απαιτείται με συντονισμό Redis
REDIS_KEY_PREFIXlibreNamespace 1-64 χαρακτήρων για κλειδιά συντονισμού Libre
REDIS_CONNECT_TIMEOUT_MS5000Αρχικό timeout σύνδεσης Redis, έως 60 δευτερόλεπτα
JOB_WORKER_MODEembedded στο solo· external στο teamΕκτέλεση handler στην εφαρμογή ή στον αυτόνομο κοινόχρηστο worker
RESOURCE_LEASE_TTL_MS30000TTL μίσθωσης συντονισμού για κατοχή πόρων μόνιμων job (5000-300000· εκτός εύρους η εκκίνηση αποτυγχάνει)
JOB_WORKER_CONCURRENCY4Μόνιμα job που μπορεί να εκτελεί ταυτόχρονα ένας worker (1-32)
CHAT_STREAM_EVENT_RETENTION_HOURS24Ώρες διατήρησης συμβάντων τμημάτων ροής συνομιλίας πριν από την ωριαία εκκαθάριση
PLATFORM_EVENT_RETENTION_DAYS30Ημέρες διατήρησης κάθε μόνιμου συμβάντος πριν από την ωριαία εκκαθάριση
PLATFORM_JOB_RETENTION_DAYS30Ημέρες διατήρησης ολοκληρωμένων job εκτός κύκλου ζωής πριν από την ωριαία εκκαθάριση
LIBRE_SKIP_STARTUP_INTEGRITY_SCANδεν έχει οριστείΤο 1 παραλείπει τον βαθύ έλεγχο παλαιού κρυπτοκειμένου στην επόμενη εκκίνηση (έξοδος ανάγκης· αλλιώς αποθηκεύεται ανά γενιά σχήματος)
STORAGE_ENCRYPTION_KEYSδεν έχει οριστείΜυστικός χάρτης κλειδιών JSON· πρέπει να περιέχει legacy που συμφωνεί με ENCRYPTION_KEY
STORAGE_ENCRYPTION_ACTIVE_KEY_IDδεν έχει οριστείID κλειδιού για νέες εγγραφές τοπικών blob και ενσωματωμένων διανυσμάτων
BLOB_QUOTA_BYTES_PER_USER10737418240Μόνιμο μέγιστο πλήθος byte απλού κειμένου blob ανά κάτοχο (θετικός ασφαλής ακέραιος)
BLOB_QUOTA_RESERVATION_TTL_MS3600000Διάρκεια εγκαταλελειμμένης κράτησης ποσόστωσης ροής (τουλάχιστον 60000 ms)
S3_BUCKETδεν έχει οριστείΙδιωτικό bucket συμβατό με S3, απαιτείται με s3
S3_REGIONδεν έχει οριστείΠεριοχή S3, απαιτείται με s3
S3_ENDPOINTπροεπιλογή παρόχουΠροαιρετικό απόλυτο endpoint HTTP(S) για MinIO ή άλλη συμβατή υπηρεσία
S3_ACCESS_KEY_IDαλυσίδα διαπιστευτηρίων SDKΠροαιρετικό ρητό κλειδί πρόσβασης S3
S3_SECRET_ACCESS_KEYαλυσίδα διαπιστευτηρίων SDKΑπαιτείται όταν έχει οριστεί ρητό κλειδί πρόσβασης
S3_SESSION_TOKENδεν έχει οριστείΠροαιρετικό token μαζί με ρητά διαπιστευτήρια S3
S3_FORCE_PATH_STYLEfalseΟρίστε true για υπηρεσίες που απαιτούν διευθυνσιοδότηση τύπου διαδρομής
S3_BLOB_PREFIXlibre/blobsΑδιαφανές πρόθεμα κλειδιών bucket που ανήκει στο Libre

Όταν απουσιάζει ο χάρτης κλειδιών αποθήκευσης με εκδόσεις, οι προσαρμογείς αποθήκευσης χρησιμοποιούν το υπάρχον ENCRYPTION_KEY ως ID κλειδιού legacy· όταν λείπει και αυτό, διαβάζουν το υπάρχον ${DATA_DIR}/.encryption_key χωρίς να το δημιουργούν ή τροποποιούν. Η ρητή ρύθμιση και το μόνιμο αρχείο πρέπει να συμφωνούν. Αν εισαχθεί χάρτης με εκδόσεις ενώ υπάρχει παλιό κλειδί, διατηρήστε το κλειδί με το ακριβές ID legacy μέχρι να επανεγγραφούν ή να επαναπεριτυλιχθούν και να επαληθευτούν όλα τα αντικείμενα και διανύσματα. Οι διενέξεις, τα μη ασφαλή δικαιώματα αρχείων, οι συμβολικοί σύνδεσμοι και τα ρυθμισμένα κλειδιά που λείπουν αποτυγχάνουν με ασφαλή τρόπο.

Το Redis χρησιμοποιείται για συντονισμό, όχι ως κανονική μόνιμη αποθήκευση. Η επιλογή του από μόνη της δεν καθιστά ασφαλή το SQLite, τα τοπικά αρχεία ή οποιαδήποτε άλλη κατάσταση ιδιοκτησίας διεργασίας ανάμεσα σε replica. Στη λειτουργία team, τα όρια ρυθμού HTTP, οι συνδέσεις chat/WebSocket, η εργασία παρόχων STT/TTS/ήχου, οι εισαγωγές αρχείων και οι συνεδρίες τερματικού Work χρησιμοποιούν κοινόχρηστη αποδοχή με Redis. Οι χωρητικότητες ισχύουν σε όλες τις replica και όχι μία φορά ανά διεργασία. Οι αποτυχίες αποδοχής και ανανεώσιμης άδειας επιστρέφουν 503 ή ακυρώνουν την ενέργεια σε εξέλιξη· το Libre δεν επιστρέφει ποτέ σε ανεξάρτητο τοπικό μετρητή. Ανατρέξτε στο Θεμέλιο πλατφόρμας.

Το συνοδευτικό προφίλ team Compose και το chart Helm προωθούν κάθε παραπάνω επιλογέα και τιμή ρύθμισης της πλατφόρμας team τόσο στην εφαρμογή όσο και στον εξωτερικό worker. Στο chart Helm, οι μη μυστικοί επιλογείς βρίσκονται στο env· ορίστε secrets.redisUrl, secrets.databaseUrl και secrets.storageEncryptionKeys για υλικό σύνδεσης ή κλειδιών. Τα όρια pool PostgreSQL ισχύουν ανά διεργασία: προβλέψτε στη βάση τουλάχιστον (replicaCount + worker.replicaCount) * POSTGRES_POOL_MAX συνδέσεις, συν περιθώριο για χειριστές και μετεγκαταστάσεις. Διατηρήστε DATABASE_SSL_MODE=verify-full για διαχειριζόμενο ή απομακρυσμένο PostgreSQL. Μόνο το συνοδευτικό προφίλ team Compose επιλέγει disable, επειδή ο listener της βάσης είναι απομονωμένος στο ιδιωτικό δίκτυο του έργου. Το Team Helm απαιτεί επίσης ένα σταθερό secrets.jwtSecret και προσαρτά το ίδιο κλειδί Secret σε κάθε Pod εφαρμογής και worker· διαφορετικά, η παράλειψη του μυστικού JWT θα δημιουργούσε υλικό υπογραφής τοπικό στη διεργασία. Το S3 λαμβάνει αδιαφανή κλειδιά και κρυπτοκείμενο· οι URL bucket και παρόχων δεν αποθηκεύονται στα μεταδεδομένα της εφαρμογής.

Τα ενσωματωμένα αρχεία solo και team διατηρούν τις ρυθμίσεις pool και timeout PostgreSQL, το timeout σύνδεσης Redis, και τις δύο ρυθμίσεις ποσόστωσης blob, τους επιλογείς πλατφόρμας και τις ρυθμίσεις διευθυνσιοδότησης S3 στην υπογεγραμμένη και κρυπτογραφημένη προστατευμένη ρύθμισή τους. Έτσι, μια καθαρή επαναφορά μπορεί να δημοσιεύσει τις λειτουργικές τιμές που χρειάζονται για να αναδημιουργηθεί η αντίστοιχη ανάπτυξη χωρίς να τις τοποθετήσει ως απλό κείμενο στα μεταδεδομένα του αρχείου.

Τα ζεύγη εφαρμογής/εξωτερικού worker του συνοδευτικού team Compose και Helm λαμβάνουν τις ίδιες επιλυμένες τιμές OLLAMA_BASE_URL, OLLAMA_TIMEOUT, OLLAMA_LONG_OPERATION_TIMEOUT και OLLAMA_MAX_CONTEXT. Οι κλήσεις παρόχων για embeddings εγγράφων, μόνιμες συνομιλίες και εκτελέσεις Work πραγματοποιούνται στον worker, επομένως αυτές οι τιμές δεν πρέπει να διαφέρουν μεταξύ διεργασιών. Και τα δύο σημεία εισόδου διακομιστή αναλύουν τις τρεις αριθμητικές τιμές ως πλήρεις θετικούς ακεραίους βάσης 10 πριν δημιουργήσουν τοπική κατάσταση ή συνδεθούν σε κοινόχρηστη κατάσταση. Μερικές τιμές όπως 300000ms, σημειογραφία εκθέτη/hex, τιμές εκτός εύρους και timeout μακράς ενέργειας μικρότερο από το τυπικό timeout αποτυγχάνουν στην εκκίνηση.

Το Helm περιορίζει το TRUST_PROXY σε ακριβή ακέραιο αριθμό hop από 0 έως 16 και το προωθεί μόνο στα Pod εφαρμογής HTTP. Διατηρήστε την προεπιλογή 0 για άμεση κίνηση. Ορίστε τον ακριβή σταθερό αριθμό για αλυσίδα ingress/load balancer· μην χρησιμοποιείτε ποτέ την απεριόριστη μορφή true του runtime. Ένας λανθασμένος αριθμός είτε ομαδοποιεί πελάτες κάτω από μια διεύθυνση proxy για κοινόχρηστα όρια ρυθμού είτε εμπιστεύεται διεύθυνση που μπορεί να δώσει ο πελάτης.

Η συμβατότητα σχήματος PostgreSQL απαιτεί ακριβή έκδοση. Η εφαρμογή και ο worker Helm χρησιμοποιούν Recreate· αδειάστε και τερματίστε κάθε παλιό Pod πριν από αναβάθμιση team και έπειτα αφήστε μία νέα διεργασία να εκτελέσει τη μετεγκατάσταση με το συμβουλευτικό κλείδωμα ηγέτη. Μην εκτελείτε ανάμεικτες δυαδικές εκδόσεις και μην ισχυρίζεστε ανάπτυξη σχήματος χωρίς διακοπή. Η επαναφορά σημαίνει αποκατάσταση του επαληθευμένου αρχείου team πριν από την αναβάθμιση σε καθαρούς στόχους PostgreSQL/S3 πριν ξεκινήσει το αντίστοιχο παλιότερο δυαδικό.

Μια ενεργή εφαρμογή team απαιτεί worker.replicaCount >= 1· το Helm απορρίπτει μια ενεργή εφαρμογή χωρίς μόνιμο worker αντί να περιμένει να αποτύχει η ετοιμότητα. Ορίστε σε μηδέν τόσο το πλήθος εφαρμογών όσο και worker για πλήρη αναστολή. Μηδενικές εφαρμογές με θετικό πλήθος worker είναι σκόπιμη λειτουργία εκκένωσης ή ανάκτησης μόνο για worker και συνεχίζει να επεξεργάζεται job στην ουρά χωρίς να εξυπηρετεί κίνηση ιστού.

Βοηθητικό εργαλείο ιδιωτικών αντιγράφων ασφαλείας

Αυτές οι μεταβλητές ρυθμίζουν το deploy/private/libre-webui-backup και διαβάζονται από το script συντήρησης, όχι από τη διεργασία εφαρμογής:

ΜεταβλητήΠροεπιλογήΣκοπός
LIBRE_WEBUI_STACK_DIR/opt/libre-webuiΚατάλογος που περιέχει το ιδιωτικό αρχείο Compose
LIBRE_WEBUI_BACKUP_DIR/var/backups/libre-webuiΠροστατευμένος κατάλογος συνόλων αντιγράφων και αρχείου κλειδώματος
LIBRE_WEBUI_BACKUP_RETENTION_DAYS14Ηλικία μετά την οποία αφαιρούνται ολοκληρωμένα σύνολα αντιγράφων
LIBRE_WEBUI_CONTAINER_NAMElibre-webuiΑνεπτυγμένο κοντέινερ εφαρμογής προς επιθεώρηση
LIBRE_WEBUI_BACKUP_KEY_DIR/etc/libre-webui/backup-keysΙδιωτικός κατάλογος κλειδιών κρυπτογράφησης και υπογραφής αρχείου
LIBRE_WEBUI_RESTORE_IMAGEαπαιτείται για επαναφοράΕλεγμένο αμετάβλητο ID ή digest image Libre
LIBRE_WEBUI_RESTORE_CONFIG_DIRδιαδρομή ανά τόμο κάτω από /etc/libre-webui/restoredΝέος κατάλογος ανακτημένης ρύθμισης

Η μονάδα systemd φορτώνει παρακάμψεις αντιγράφων ασφαλείας από το προαιρετικό αρχείο /etc/libre-webui/backup.env που ανήκει στον root. Ορίστε λειτουργία 0600. Ο κατάλογος στοίβας, η διατήρηση, το όνομα κοντέινερ και ο κατάλογος κλειδιών αντιγράφων μπορούν να οριστούν απευθείας εκεί. Το sandbox συστήματος αρχείων της μονάδας επιτρέπει εγγραφές μόνο κάτω από τον προεπιλεγμένο κατάλογο αντιγράφων. Ένα προσαρμοσμένο LIBRE_WEBUI_BACKUP_DIR απαιτεί επιπλέον αυτόν ακριβώς τον προδημιουργημένο κατάλογο σε drop-in υπηρεσίας ReadWritePaths=· ανατρέξτε στην Ιδιωτική απομακρυσμένη ανάπτυξη.

Έλεγχος ταυτότητας και ασφάλεια

ΜεταβλητήΠροεπιλογήΣκοπός
ENABLE_SIGNUPfalseΕπιτρέπεται εγγραφή μετά τον πρώτο τοπικό διαχειριστή
JWT_SECRETδημιουργείται/εφεδρικό στην ανάπτυξηΜυστικό υπογραφής JWT· ορίστε το ρητά στην παραγωγή
JWT_EXPIRES_IN7dΔιάρκεια ζωής token συνεδρίας
ENCRYPTION_KEYδημιουργείται αυτόματαΔεκαεξαδικό κλειδί 64 χαρακτήρων για κρυπτογραφημένες τιμές
DEBUG_ENCRYPTIONδεν έχει οριστείΚαταγράφει έξοδο αποσφαλμάτωσης κρυπτογράφησης όταν οριστεί
TURNSTILE_SITE_KEYδεν έχει οριστείΚλειδί ιστοτόπου Cloudflare Turnstile για σύνδεση και εγγραφή
TURNSTILE_SECRET_KEYδεν έχει οριστείΜυστικό κλειδί Cloudflare Turnstile για επαλήθευση backend
TURNSTILE_EXPECTED_HOSTNAMEόνομα host από το BASE_URLΑπαιτούμενο όνομα host στην απόκριση επαλήθευσης Cloudflare
MFA_REQUIRED_MODEδεν έχει οριστεί (διακόπτης διαχειριστή, optional)Καρφίτσωμα της πολιτικής δύο παραγόντων σε optional ή required
WEBAUTHN_RP_IDόνομα host αιτήματοςΣταθερό id relying-party για passkeys πίσω από πολλά ονόματα host
VAPID_PUBLIC_KEYδημιουργείται και αποθηκεύεται κρυπτογραφημένοΚαρφίτσωμα δημόσιου κλειδιού VAPID Web Push (σημείο base64url P-256)
VAPID_PRIVATE_KEYδημιουργείται και αποθηκεύεται κρυπτογραφημένοΚαρφίτσωμα ιδιωτικού κλειδιού VAPID Web Push (scalar base64url)
VAPID_SUBJECTmailto:admin@localhostClaim επικοινωνίας μέσα σε υπογεγραμμένες εξουσιοδοτήσεις Web Push

Το Turnstile ενεργοποιείται μόνο όταν υπάρχουν και τα δύο κλειδιά Turnstile.

Το ENABLE_SIGNUP=false εξακολουθεί να επιτρέπει τον πρώτο τοπικό διαχειριστή σε κενή βάση δεδομένων και έπειτα αποκλείει επιπλέον τοπικούς λογαριασμούς και λογαριασμούς OAuth. Πριν από την πρώτη εκκίνηση, προστατεύστε μια απομακρυσμένα προσβάσιμη αρχική διαδρομή με εξωτερικό όριο ταυτότητας.

Κάθε JWT που εκδίδεται δεσμεύεται σε συνεδρία στον διακομιστή (claim sid), επομένως η αποσύνδεση ή η ανάκληση συνεδρίας από τις Ρυθμίσεις → Συνεδρίες ακυρώνει αμέσως το token σε κάθε replica και κλείνει τις ενεργές συνδέσεις WebSocket. Η διατήρηση ελέγχου ασφάλειας μπορεί να ρυθμιστεί:

ΜεταβλητήΠροεπιλογήΣκοπός
AUDIT_RETENTION_DAYS180Ημέρες διατήρησης γραμμών στο αρχείο συμβάντων ελέγχου ασφάλειας

Γενική ενιαία σύνδεση OIDC

Για σύνδεση μπορεί να χρησιμοποιηθεί οποιοσδήποτε πάροχος OpenID Connect με έγγραφο εντοπισμού. Η ροή χρησιμοποιεί PKCE (S256), κατάσταση CSRF και nonce που επαληθεύεται μέσα στο ID token με ελεγμένη υπογραφή. Οι ταυτότητες συνδέονται μέσω του σταθερού claim sub.

ΜεταβλητήΠροεπιλογήΣκοπός
OIDC_ISSUER_URLδεν έχει οριστείΒασική URL εκδότη· ο εντοπισμός ανακτάται από <issuer>/.well-known/openid-configuration
OIDC_CLIENT_IDδεν έχει οριστείID πελάτη OAuth καταχωρισμένο στον πάροχο
OIDC_CLIENT_SECRETδεν έχει οριστείΜυστικό πελάτη OAuth
OIDC_DISPLAY_NAMESingle Sign-OnΕτικέτα στο κουμπί σύνδεσης
OIDC_SCOPESopenid profile emailΖητούμενα πεδία
OIDC_CALLBACK_URLBASE_URL + διαδρομή callback OIDCURI ανακατεύθυνσης καταχωρισμένο στον πάροχο
OIDC_ALLOWED_EMAIL_DOMAINSδεν έχει οριστείΛίστα με κόμματα· όταν οριστεί, απαιτείται επαληθευμένο e-mail σε έναν από τους domain
OIDC_GROUP_CLAIMgroupsClaim ID token που περιέχει ονόματα ομάδων
OIDC_ADMIN_GROUPSδεν έχει οριστείΛίστα με κόμματα· όταν οριστεί, ο ρόλος admin ακολουθεί τη συμμετοχή του claim σε κάθε σύνδεση
OIDC_SYNC_GROUPSfalseΤο true συμφιλιώνει τις συμμετοχές σε ομάδες Libre με το claim ομάδας σε κάθε σύνδεση

Το OIDC ενεργοποιείται μόνο όταν υπάρχουν η URL εκδότη, το id πελάτη και το μυστικό πελάτη. Ένα e-mail που χρησιμοποιείται ήδη από μη συνδεδεμένο τοπικό λογαριασμό απορρίπτεται αντί να συγχωνευτεί σιωπηρά και η δημιουργία λογαριασμού εξακολουθεί να σέβεται το ENABLE_SIGNUP.

Η αποδοχή Chat WebSocket μπορεί να ρυθμιστεί χωρίς να αποδυναμωθεί ο έλεγχος ταυτότητας:

ΜεταβλητήΠροεπιλογήΣκοπός
CHAT_WS_MAX_PAYLOAD_BYTES10 MiBΜέγιστο αποδεκτό μέγεθος μηνύματος WebSocket
CHAT_WS_MAX_MESSAGES_PER_MINUTE120Ανώτατο πλήθος μηνυμάτων WebSocket ανά σύνδεση
CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER4Δημιουργίες παρόχου που επιτρέπονται ανά λογαριασμό
CHAT_WS_MAX_CONNECTIONS_PER_USER5Ταυτόχρονα πιστοποιημένα socket ανά λογαριασμό
WEBSOCKET_TICKET_TTL_MS30000Διάρκεια εφάπαξ εισιτηρίου Chat/Work· έως 60 δευτερόλεπτα

Το πρόγραμμα περιήγησης ανταλλάσσει το κανονικό header Authorization με αδιαφανές εισιτήριο και τοποθετεί μόνο αυτή τη βραχύβια τιμή στη URL αναβάθμισης WebSocket. Τα εισιτήρια είναι εφάπαξ, δεσμευμένα σε πρωτόκολλο και συνεδρία και αποθηκεύονται μόνο ως hash. Έτσι, τα μόνιμα token συνεδρίας δεν εμφανίζονται στα αρχεία καταγραφής στόχων αιτημάτων reverse proxy. Όταν έχει ρυθμιστεί CORS_ORIGIN ή BASE_URL, οι αναβαθμίσεις προγράμματος περιήγησης με header Origin πρέπει να συμφωνούν με μία από αυτές τις προελεύσεις. Ορίστε τουλάχιστον μία σε απομακρυσμένα προσβάσιμη ανάπτυξη· αν δεν έχει οριστεί καμία, το φίλτρο Origin παραμένει ανεκτικό για συμβατότητα με την τοπική ανάπτυξη. Οι αναβαθμίσεις χωρίς origin υποστηρίζονται σκόπιμα για Electron και πελάτες εκτός προγράμματος περιήγησης, όπου δεν είναι διαθέσιμος ο έλεγχος Origin των προγραμμάτων περιήγησης· εξακολουθούν να χρειάζονται έγκυρο εφάπαξ εισιτήριο και υπόκεινται στους ίδιους ελέγχους τρέχοντος λογαριασμού, πρόσβασης Work και εργασίας. Αντιμετωπίζετε το εισιτήριο ως όριο ελέγχου ταυτότητας και περιορίστε την πρόσβαση εκτός προγράμματος περιήγησης με τους συνήθεις ελέγχους TLS, firewall και reverse proxy της ανάπτυξης.

OAuth

ΜεταβλητήΣκοπός
GITHUB_CLIENT_IDID πελάτη GitHub OAuth
GITHUB_CLIENT_SECRETΜυστικό πελάτη GitHub OAuth
GITHUB_CALLBACK_URLΠαράκαμψη URL callback GitHub
HUGGINGFACE_CLIENT_IDID πελάτη Hugging Face OAuth
HUGGINGFACE_CLIENT_SECRETΜυστικό πελάτη Hugging Face OAuth
HUGGINGFACE_CALLBACK_URLΠαράκαμψη URL callback Hugging Face

Αν δεν έχουν οριστεί URL callback, το Libre WebUI δημιουργεί προεπιλογές από το BASE_URL.

Ollama

ΜεταβλητήΠροεπιλογήΣκοπός
OLLAMA_BASE_URLhttp://localhost:11434Βασική URL API Ollama
OLLAMA_TIMEOUT300000Τυπικό timeout αιτήματος Ollama (1,000-3,600,000 ms)
OLLAMA_LONG_OPERATION_TIMEOUT900000Timeout μακράς ενέργειας (1,000-3,600,000 ms και όχι μικρότερο από OLLAMA_TIMEOUT)
OLLAMA_MAX_CONTEXT32768Μέγιστο περιεχόμενο μοντέλου που υιοθετείται αυτόματα (128-2,097,152 token)

Αναζήτηση ιστού

ΜεταβλητήΠροεπιλογήΣκοπός
SEARXNG_URLδεν έχει οριστείΠροεπιλεγμένο endpoint SearXNG για τη ρύθμιση αναζήτησης ιστού· ο διαχειριστής πρέπει ακόμη να το ενεργοποιήσει στις Ρυθμίσεις > Αναζήτηση

Libre Claw

ΜεταβλητήΠροεπιλογήΣκοπός
LIBRE_CLAW_BASE_URLhttp://127.0.0.1:8766Προαιρετική URL δαίμονα Libre Claw
LIBRE_CLAW_TIMEOUT_MS30000Timeout αιτήματος HTTP Libre Claw

Runtime Work

Αυτές οι μεταβλητές ρυθμίζουν την εκτέλεση Work στον υπολογιστή ή στο cluster Kubernetes όπου εκτελείται το backend του Libre WebUI. Το Docker είναι το προεπιλεγμένο runtime· το chart Helm επιλέγει Kubernetes όταν work.enabled=true.

ΜεταβλητήΠροεπιλογήΣκοπός
WORK_RUNTIME_IMAGEnode:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3Καρφιτσωμένο image για τα sandbox Work
WORK_DOCKER_COMMANDdockerΕκτελέσιμο CLI backend Docker διαθέσιμο στη διεργασία
WORK_COMMAND_TIMEOUT_MS120000Προεπιλεγμένο timeout· ένα εργαλείο μπορεί να ζητήσει έως 600000 ms
WORK_MAX_OUTPUT_CHARS50000Όριο καταγεγραμμένου stdout/stderr, ξεχωριστά για κάθε ροή
WORK_MAX_AGENT_ROUNDS48Προϋπολογισμός κύκλων μοντέλου/εργαλείων για μία εκτέλεση, ανεξάρτητος από πάροχο
WORK_STATUS_BLURB_MODEL1Ορίστε 0 για παράλειψη του αιτήματος μοντέλου που γράφει τη γραμμή κατάστασης agent μετά την εκτέλεση
WORK_MEMORY_LIMIT2gΌριο μνήμης για κάθε κοντέινερ Work
WORK_CPU_LIMIT2Όριο CPU για κάθε κοντέινερ Work
WORK_PIDS_LIMIT256Όριο διεργασιών για κάθε κοντέινερ Work
WORK_PREVIEW_PORT4173Θύρα που πρέπει να χρησιμοποιεί ο διακομιστής προεπισκόπησης μέσα στο κοντέινερ εργασίας
WORK_PREVIEW_BIND127.0.0.1Διεπαφή host όπου δημοσιεύεται η θύρα προεπισκόπησης εργασίας· οι εγκαταστάσεις Compose σε native Docker Engine πρέπει να χρησιμοποιούν προσβάσιμη μη δημόσια διεπαφή γέφυρας
WORK_DOCKER_PUBLISHED_HOSTπροεπιλογή εφαρμογής: ίδιο με WORK_PREVIEW_BIND· προεπιλογή Compose: host.docker.internalHost/IP που βλέπει το backend για θύρες προεπισκόπησης, οθόνης και ήχου δημοσιευμένες από Docker
WORK_COMPUTER_SCREEN_PORT6080Θύρα κοντέινερ της γέφυρας οθόνης Work Computer (websockify) σε sandbox με GUI
WORK_COMPUTER_AUDIO_PORT6081Θύρα κοντέινερ της γέφυρας ήχου Work Computer (websockify → monitor PulseAudio) σε sandbox με GUI
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL3Ταυτόχρονες εργασίες με runtime σε ολόκληρη την εγκατάσταση
WORK_MAX_ACTIVE_RUNTIMES_PER_USER2Ταυτόχρονες εργασίες με runtime για έναν χρήστη
WORK_MAX_TASKS_GLOBAL500Μέγιστες μόνιμες εργασίες Work σε ολόκληρη την εγκατάσταση
WORK_MAX_TASKS_PER_USER100Μέγιστες μόνιμες εργασίες Work για έναν διαχειριστή
WORK_NETWORK_NAMElibre-webui-workΔιαχειριζόμενο δίκτυο bridge sandbox για δικτυωμένες εργασίες
WORK_RUN_LEASE_WAIT_MS60000Αναμονή εκτέλεσης για την κοινόχρηστη μίσθωση runtime πριν αναφερθεί διένεξη replica (team)
WORK_RUNTIME_DNSδεν έχει οριστείIP resolver χωρισμένες με κόμμα που επιβάλλονται σε δικτυωμένες εργασίες
WORK_DOCKER_SOCKETDOCKER_HOST αν είναι unix:// ή tcp://, αλλιώς /var/run/docker.sockEndpoint Docker Engine για τερματικά και διαγνωστικά
WORK_TERMINAL_MAX_SESSIONS_PER_TASK2Ταυτόχρονα τερματικά προγράμματος περιήγησης σε μία εργασία
WORK_TERMINAL_IDLE_TIMEOUT_MS900000Χρόνος αδράνειας πριν κλείσει μια συνεδρία τερματικού
WORK_RUNTIME_IDLE_TIMEOUT_MS0 (ανενεργό)Διακοπή sandbox μετά από τόση αδράνεια (και προεπισκοπήσεων)
WORK_HOST_WORKSPACES_ENABLEDfalseΝα επιτρέπεται σε εργασία να χρησιμοποιεί φάκελο host αντί για τόμο
WORK_HOST_WORKSPACE_ROOTSο οικιακός κατάλογος του χρήστη διακομιστήΡίζες χωρισμένες με : μέσα στις οποίες πρέπει να βρίσκεται ο χώρος εργασίας host
WORK_RUNTIME_BACKENDdockerBackend sandbox: docker ή kubernetes
WORK_K8S_NAMESPACElibre-webui-workNamespace με Pod sandbox Kubernetes και PVC
WORK_K8S_STORAGE_CLASSπροεπιλογή clusterStorageClass για PVC χώρων εργασίας
WORK_K8S_WORKSPACE_SIZE5GiΜέγεθος PVC χώρου εργασίας ανά εργασία (πραγματική ποσόστωση δίσκου)
WORK_K8S_POD_READY_TIMEOUT_MS900000Αναμονή για να φτάσει ένα Pod sandbox σε Running (περιλαμβάνει λήψεις)
WORK_K8S_POD_GONE_TIMEOUT_MS60000Αναμονή για να εξαφανιστεί ένα διαγραμμένο Pod sandbox
AGENT_CLI_MODELS_ENABLEDδεν έχει οριστεί (διακόπτης διαχειριστή, ανενεργό)Καρφίτσωμα της δυνατότητας Agents ενεργής/ανενεργής· χωρίς τιμή ελέγχεται στη Διαχείριση χρηστών (προεπιλογή ανενεργή)
TOOLS_ACCESS_MODEδεν έχει οριστεί (διακόπτης διαχειριστή, μόνο διαχειριστές)Καρφίτσωμα εργαλείων chat σε admins ή all-users και κλείδωμα διακόπτη στη Διαχείριση χρηστών
STT_ACCESS_MODEδεν έχει οριστεί (διακόπτης διαχειριστή, όλοι οι χρήστες)Καρφίτσωμα ομιλίας σε κείμενο σε admins ή all-users και κλείδωμα διακόπτη στη Διαχείριση χρηστών
TTS_ACCESS_MODEδεν έχει οριστεί (διακόπτης διαχειριστή, όλοι οι χρήστες)Καρφίτσωμα κειμένου σε ομιλία σε admins ή all-users και κλείδωμα διακόπτη στη Διαχείριση χρηστών
VOICE_MODE_ACCESS_MODEδεν έχει οριστεί (διακόπτης διαχειριστή, όλοι οι χρήστες)Καρφίτσωμα φωνητικής λειτουργίας hands-free σε admins ή all-users και κλείδωμα διακόπτη στη Διαχείριση χρηστών
VOICE_CLONING_ACCESS_MODEδεν έχει οριστεί (διακόπτης διαχειριστή, όλοι οι χρήστες)Καρφίτσωμα κλωνοποίησης φωνής σε admins ή all-users και κλείδωμα διακόπτη στη Διαχείριση χρηστών
TOOLS_PRIVATE_NETWORK_ALLOWLISTδεν έχει οριστείΑκριβή ονόματα host όπου οι διακομιστές εργαλείων και οι στόχοι webhook μπορούν να επιλύονται σε ιδιωτικές διευθύνσεις (με κόμμα)· καρφιτσωμένα
AGENT_CLI_TIMEOUT_MS600000Χρόνος εκτέλεσης CLI agent πριν τερματιστεί
CODEX_OAUTH_MODELS_ENABLEDtrueΠροσφορά του παρόχου Codex (ChatGPT) σε διαχειριστές
CODEX_HOME~/.codexΘέση ανάγνωσης σύνδεσης CLI Codex (auth.json)

Τα δυαδικά CLI agent και τα διαπιστευτήρια Codex OAuth είναι τοπικά στον κόμβο. Υποστηρίζονται μόνο σε διεργασία solo, όπου ο εντοπισμός και η εκτέλεση βλέπουν το ίδιο σύστημα αρχείων και περιβάλλον. Η λειτουργία team εκτελεί μόνιμα job συνομιλίας σε εξωτερικό worker, επομένως απαιτεί και AGENT_CLI_MODELS_ENABLED=false και CODEX_OAUTH_MODELS_ENABLED=false· η εκκίνηση απορρίπτει οποιαδήποτε άλλη τιμή αντί να διαφημίζει πάροχο που μπορεί να υπάρχει μόνο σε μία replica εφαρμογής. Χρησιμοποιήστε Ollama ή πρόσθετο παρόχου του οποίου τα διαπιστευτήρια και η δρομολόγηση αποθηκεύονται σε κοινόχρηστο PostgreSQL ή προωθούνται πανομοιότυπα σε κάθε εφαρμογή και worker.

Στο backend Docker, ένας χώρος εργασίας host προσαρτά έναν πραγματικό κατάλογο στο /workspace, ώστε η εργασία να διαβάζει και να γράφει απευθείας αυτά τα αρχεία αντί να εργάζεται στον δικό της τόμο Docker. Το Kubernetes απορρίπτει χώρους εργασίας με φάκελο host. Πρόκειται για σκόπιμη αποδυνάμωση του sandbox Docker: διατηρήστε το WORK_HOST_WORKSPACES_ENABLED ανενεργό εκτός αν το χρειάζεστε και το WORK_HOST_WORKSPACE_ROOTS όσο το δυνατόν στενότερο. Οι ζητούμενες διαδρομές επιλύονται μέσω συμβολικών συνδέσμων πριν ελεγχθούν έναντι των ριζών και φάκελοι όπως .ssh, .gnupg, .aws και .config απορρίπτονται κατηγορηματικά.

Τα μοντέλα CLI agent εκθέτουν τους agent προγραμματισμού που είναι ήδη εγκατεστημένοι στον διακομιστή (claude, codex) ως επιλέξιμα μοντέλα συνομιλίας, ώστε ένας agent συνδρομής να μπορεί να απαντά χωρίς κλειδί API. Τα βλέπουν μόνο οι διαχειριστές, το CLI εκτελείται ως χρήστης διακομιστή Libre WebUI και κληρονομεί τα διαπιστευτήρια agent αυτού του χρήστη — αντιμετωπίστε το ως ισοδύναμο με παραχώρηση πρόσβασης shell σε αυτούς τους agent.

Στο Docker, οι δικτυωμένες εργασίες Work συνδέονται στο διαχειριζόμενο bridge WORK_NETWORK_NAME, το οποίο δημιουργείται με απενεργοποιημένη επικοινωνία μεταξύ κοντέινερ, ώστε ένα sandbox να μην μπορεί να φτάσει άλλο sandbox ή τα ίδια τα κοντέινερ της ανάπτυξης. Το WORK_RUNTIME_DNS είναι το υποστηριζόμενο σημείο πολιτικής εξερχόμενης κίνησης Docker: κατευθύνετέ το σε resolver φιλτραρίσματος για λίστες επιτρεπόμενων/απαγορευμένων ονομάτων. Καταχωρίσεις που δεν είναι διευθύνσεις IPv4/IPv6 απορρίπτονται και καταγράφονται. Το φιλτράρισμα DNS δεν περιορίζει την άμεση έξοδο προς IP· προσθέστε κανόνες firewall host όπου απαιτείται. Το backend Kubernetes χρησιμοποιεί αντίθετα τις προεπιλεγμένες NetworkPolicies default-deny του chart και τις τιμές work.networkPolicy.blockedEgressCidrs.

Στο Docker, το διαδραστικό τερματικό και τα διαγνωστικά συστήματος επικοινωνούν απευθείας με το API Docker Engine. Ακολουθούν το WORK_DOCKER_SOCKET όταν έχει οριστεί, διαφορετικά το DOCKER_HOST — είτε socket unix:// είτε endpoint tcp:// μέσω απλού HTTP, όπως socket proxy (βλ. docker-compose.socket-proxy.yml) — και διαφορετικά το /var/run/docker.sock. Ένα DOCKER_HOST με το οποίο δεν μπορεί να επικοινωνήσει αυτός ο πελάτης (ssh:// ή tcp:// με ορισμένο DOCKER_TLS_VERIFY) αναφέρει το τερματικό και τα διαγνωστικά Docker ως μη διαθέσιμα· το υπόλοιπο Work συνεχίζει να εκτελείται μέσω του CLI Docker, το οποίο κατανοεί μόνο του αυτά τα endpoints. Στο Kubernetes, το τερματικό χρησιμοποιεί τον υποπόρο exec του Pod και δεν χρησιμοποιεί endpoint Docker.

Το Work διαβάζει αυτές τις τιμές κατά την εκκίνηση του backend. Η θύρα προεπισκόπησης είναι εσωτερική στο κοντέινερ εργασίας· το Libre WebUI τη δημοσιεύει σε δυναμικά εκχωρημένη θύρα loopback αντί να εκθέτει αυτή την τιμή απευθείας σε κάθε διεπαφή host.

Διατηρήστε το image runtime καρφιτσωμένο σε ελεγμένη έκδοση ή digest. Η αύξηση της ταυτόχρονης εκτέλεσης ή των ορίων πόρων αυξάνει τη χωρητικότητα runtime που μπορούν να καταναλώσουν μία ή περισσότερες αυτόνομες εκτελέσεις. Το WORK_MAX_AGENT_ROUNDS ισχύει εξίσου για Ollama και εκτελέσεις μέσω προσθέτων· δεν υπάρχει χαμηλότερος περιορισμός μόνο για πρόσθετα. Ο προϋπολογισμός ασφάλειας κλήσεων εργαλείων είναι max(128, WORK_MAX_AGENT_ROUNDS × 8). Όταν μια εκτέλεση εξαντλήσει τον προϋπολογισμό κύκλων, το Work ζητά από το μοντέλο τελική παράδοση χωρίς εργαλεία και τερματίζει στην κατάσταση needs_input αντί να επιστρέψει ακατέργαστο σφάλμα ορίου κύκλων ή να ισχυριστεί επιτυχημένη ολοκλήρωση. Μια επόμενη εκτέλεση συνεχίζει στον ίδιο μόνιμο χώρο εργασίας. Η μόνιμα αποθηκευμένη έξοδος εργαλείων έχει ξεχωριστό όριο περίπου 20,000 χαρακτήρων πηγής συν δείκτη περικοπής.

Αυτές οι μεταβλητές ρυθμίζουν ένα runtime Work που είναι ήδη προσβάσιμο. Οι αναπτύξεις Compose μίας εγκατάστασης από το αποθετήριο το ενεργοποιούν από προεπιλογή: το image περιλαμβάνει το CLI Docker και αυτά τα αρχεία Compose προσαρτούν το socket Docker του host. Δύο μεταβλητές επιπέδου Compose ελέγχουν αυτή τη σύνδεση:

ΜεταβλητήΠροεπιλογήΣκοπός
DOCKER_GID0ID ομάδας του socket Docker host, που προστίθεται στον χρήστη κοντέινερ
DOCKER_SOCKET/var/run/docker.sockΔιαδρομή host του socket Docker προς προσάρτηση

Το DOCKER_GID πρέπει να είναι η ομάδα του socket όπως φαίνεται μέσα σε κοντέινερ· ένας host macOS αναφέρει διαφορετική τιμή. Η βάση team Compose δεν προσαρτά socket και διατηρεί το Work με backend Docker μη διαθέσιμο μέχρι να προστεθεί το docker-compose.team.work.yml. Αυτό το overlay παραγωγής δίνει στην εφαρμογή και τον worker το ίδιο εσωτερικό φιλτραρισμένο endpoint proxy, ποτέ προσάρτηση ή ομάδα socket. Το proxy επιτρέπει μόνο τα τμήματα API Docker που χρησιμοποιεί το runtime, αλλά η δημιουργία κοντέινερ παραμένει διαπιστευτήριο ελέγχου host Docker· χρησιμοποιήστε αποκλειστικό ή rootless δαίμονα Work για ισχυρότερο όριο. Το chart Helm δεν προσαρτά ποτέ socket runtime κόμβου. Ενεργοποιήστε το εγγενές backend Pod/PVC Work με work.enabled=true.

Το προφίλ solo πρέπει να παραμένει σε μηδέν ή μία replica εφαρμογής, επειδή χρησιμοποιεί SQLite, τοπικά αρχεία και συντονισμό εντός διεργασίας. Το chart Helm δέχεται μηδέν για σκόπιμη αναστολή και απορρίπτει μεγαλύτερο πλήθος replica solo ή αυτόματη κλιμάκωση solo. Ένα πλήρες προφίλ team μπορεί να χρησιμοποιεί πολλές replica εφαρμογής και εξωτερικό worker, επειδή το PostgreSQL, S3, PGVector και Redis κατέχουν την κοινόχρηστη κατάσταση. Τα Pod sandbox Work κλιμακώνονται ανεξάρτητα σε κάθε προφίλ· στη λειτουργία team ο εξωτερικός worker λαμβάνει το ίδιο image runtime Kubernetes, StorageClass και όρια work.env με τα Pod εφαρμογής.

Τα αρχεία Compose του αποθετηρίου δέχονται επίσης WEBUI_BIND_ADDRESS (προεπιλογή 127.0.0.1) και WEBUI_PORT (προεπιλογή 8080). Διατηρήστε την προεπιλογή loopback εκτός αν πρέπει να φτάνει στη θύρα ένα έμπιστο LAN ή reverse proxy host.

Εντοπισμός μοντέλων παρόχων

Ο κατάλογος μοντέλων ενός παρόχου εντοπίζεται ξανά αυτόματα όταν λείπει ή είναι παρωχημένος, ώστε η ανανέωση να αντικατοπτρίζει τα μοντέλα που προσφέρει τώρα ο πάροχος. Αυτές οι μεταβλητές ρυθμίζουν τον κύκλο:

ΜεταβλητήΠροεπιλογήΣκοπός
PLUGIN_MODEL_DISCOVERY_TTL_MS21600000 (6 h)Ηλικία στην οποία ένας αποθηκευμένος κατάλογος ανανεώνεται στην επόμενη ανάγνωση λίστας προσθέτων
PLUGIN_MODEL_DISCOVERY_RETRY_MS600000 (10 min)Ελάχιστο διάστημα μεταξύ προσπαθειών, ώστε ένας αποτυχημένος πάροχος να μην ελέγχεται συχνά
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS3000Χρόνος αναμονής μιας απόκρισης λίστας προσθέτων για ανανεώσεις πριν απαντήσει

Μια ανανέωση που ξεπερνά το χρονικό όριο εξακολουθεί να ολοκληρώνεται και το αποτέλεσμά της παρέχεται στο επόμενο αίτημα. Η ρητή επιλογή Ανανέωση μοντέλων επικοινωνεί πάντα με τον πάροχο και αγνοεί το διάστημα.

Κλειδιά προσθέτων παρόχων

Τα πρόσθετα παρόχων μπορούν να χρησιμοποιούν κλειδιά περιβάλλοντος ως προεπιλογές για ολόκληρη την ανάπτυξη:

ΜεταβλητήΠάροχος
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 από Moonshot AI
GITHUB_API_KEYΜοντέλα GitHub
HUGGINGFACE_API_KEYAPI Hugging Face όπου έχουν ρυθμιστεί
ELEVENLABS_API_KEYElevenLabs TTS
COMFYUI_API_KEYΑναπτύξεις ComfyUI που απαιτούν κλειδί API

Οι χρήστες μπορούν επίσης να αποθηκεύουν διαπιστευτήρια παρόχων στο UI όταν προτιμώνται κλειδιά ανά χρήστη. Τα κλειδιά περιβάλλοντος χρησιμοποιούνται μόνο με την προβολή δρομολόγησης και ελέγχου ταυτότητας ενός μη επισκιασμένου συνοδευτικού ορισμού. Οι εισαγόμενοι ορισμοί, οι εγγράψιμοι ορισμοί που επαναχρησιμοποιούν συνοδευτικό ID και οι προσαρμοσμένες διαδρομές που αποθηκεύει διαχειριστής απαιτούν διαπιστευτήριο αποθηκευμένο από τον συγκεκριμένο λογαριασμό. Το Libre WebUI δεν συνδέει κλειδί περιβάλλοντος σε αυτές τις διαδρομές ούτε το εκθέτει μέσω ελέγχων εντοπισμού και διαθεσιμότητας. Η εμπιστοσύνη προέρχεται από μεταγλωττισμένο hash κάθε παρεχόμενου manifest, ώστε οι διατάξεις κοντέινερ όπου οι παλιοί και συνοδευτικοί κατάλογοι προσθέτων μοιράζονται διαδρομή να υποστηρίζονται χωρίς να θεωρείται συνοδευτικό ένα τροποποιημένο manifest.

Τα κλειδιά που αποθηκεύει ο χρήστης δεσμεύονται στον πραγματικό ορισμό παρόχου, την πηγή, τη σύμβαση ελέγχου ταυτότητας και τις τιμές δρομολόγησης. Οι χρήστες πρέπει να αποθηκεύσουν ξανά ένα κλειδί αφού ο διαχειριστής αλλάξει τον προορισμό. Μη δεσμευμένα κλειδιά πριν από αναβάθμιση γίνονται δεκτά και δεσμεύονται κατά την πρώτη χρήση μόνο για ακριβή παρεχόμενο ορισμό που χρησιμοποιεί τη συνοδευτική διαδρομή του.

Στις εκκινήσεις από πηγαίο κώδικα, οι σχετικές τιμές PLUGINS_DIR επιλύονται από τον κατάλογο backend. Ο πακεταρισμένος εκκινητής μετατρέπει αντίθετα μια ρητά ρυθμισμένη σχετική τιμή σε απόλυτη διαδρομή ως προς τον καλούντα πριν εκκινήσει το backend. Για συμβατότητα, το Libre διαβάζει επίσης τον ντετερμινιστικό κατάλογο backend/plugins και ιστορικές θέσεις που επέλεξαν προηγούμενες ρυθμίσεις. Μετακινήστε αυτούς τους ορισμούς στο $DATA_DIR/plugins· η ανάκτηση αναφέρει τις παλιές διαδρομές ως εξωτερική κατάσταση και αποκλείει στιγμιότυπο μόνο τόμου όσο παραμένουν εκεί προσαρμοσμένοι ορισμοί. Οι κατάλογοι προσθέτων και οι ορισμοί JSON πρέπει να είναι φυσικές κανονικές καταχωρίσεις — το Libre δεν ακολουθεί συμβολικούς συνδέσμους προσθέτων.

Frontend

ΜεταβλητήΠροεπιλογήΣκοπός
VITE_API_BASE_URLdev proxy ίδιας προέλευσης ή production APIΒασική URL API frontend
VITE_WS_BASE_URLεξάγεται από τη URL APIΑπόλυτη βάση ws:/wss: για socket Chat και Work
VITE_APP_VERSIONέκδοση πακέτου από τη ρύθμιση ViteΕμφανιζόμενη έκδοση εφαρμογής
VITE_DEMO_MODEfalseΕνεργοποιεί εικονικά δεδομένα επίδειξης όταν true
VITE_API_TIMEOUT300000Timeout API frontend σε χιλιοστά του δευτερολέπτου
VITE_BACKEND_URLhttp://localhost:3001Χρησιμοποιείται από βοηθητικά στοιχεία ελέγχου ταυτότητας
VITE_DEBUG_VERBOSEδεν έχει οριστείΕνεργοποιεί αναλυτικές καταγραφές αποσφαλμάτωσης frontend στην ανάπτυξη
VITE_LOG_LEVELδεν έχει οριστείΠαρακάμπτει το επίπεδο καταγραφής frontend
ELECTRON_BUILDδεν έχει οριστείΕνεργοποιεί συμπεριφορά Vite ειδική για Electron όταν true

Το VITE_WS_BASE_URL παρακάμπτει κάθε εφεδρική τιμή WebSocket τόσο για το Chat όσο και για το τερματικό Work. Μπορεί να περιλαμβάνει πρόθεμα διαδρομής reverse proxy, αλλά πρέπει να είναι απόλυτη URL ws: ή wss: χωρίς διαπιστευτήρια, ερώτημα ή fragment. Όταν δεν έχει οριστεί, οι πελάτες Electron file: χρησιμοποιούν ws://localhost:3001· οι πελάτες προγράμματος περιήγησης εξάγουν τη βάση τους από το VITE_API_BASE_URL και έπειτα από την προέλευση του προγράμματος περιήγησης. Το Vite προωθεί την προέλευση ανάπτυξης στο backend στη θύρα 3001.

Scripts συντήρησης

ΜεταβλητήΣκοπός
CHANGELOG_AIΟρίστε 0 για απενεργοποίηση προσχεδίων αλλαγών με βοήθεια AI
CHANGELOG_AI_MODELΜοντέλο Ollama για δημιουργία έκδοσης/αρχείου αλλαγών
CHANGELOG_AI_TIMEOUT_MSTimeout δημιουργίας αρχείου αλλαγών με AI σε χιλιοστά του δευτερολέπτου

Παράδειγμα:

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

Παράδειγμα παραγωγής

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

Σχετική τεκμηρίωση