Μεταβλητές περιβάλλοντος
Αυτή η σελίδα παραθέτει τις υποστηριζόμενες μεταβλητές περιβάλλοντος για χειριστές που διαβάζουν το τρέχον backend, frontend και τα scripts συντήρησης του Libre WebUI. Οι εσωτερικές τιμές canary που χρησιμοποιούνται μόνο σε δοκιμές παραλείπονται σκόπιμα.
Διακομιστής backend
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
NODE_ENV | development | Λειτουργία runtime |
PORT | 3001 στην ανάπτυξη, 8080 στην παραγωγή | Θύρα HTTP του backend |
TRUST_PROXY | δεν έχει οριστεί (0 στο Helm) | Ακριβής αριθμός έμπιστων hop reverse proxy για την εξαγωγή της διεύθυνσης πελάτη |
CORS_ORIGIN | τοπικές προελεύσεις ανάπτυξης | Επιτρεπόμενες προελεύσεις προγράμματος περιήγησης, χωρισμένες με κόμμα |
SERVE_FRONTEND | δεν έχει οριστεί | Παροχή του build frontend από το backend όταν είναι true |
DOCKER_ENV | δεν έχει οριστεί | Ενεργοποιεί συμπεριφορά προσανατολισμένη στο Docker όταν είναι true |
DATA_DIR | backend/data· ~/.libre-webui στο πακεταρισμένο CLI | Μόνιμος κατάλογος δεδομένων |
PLATFORM_PREFLIGHT_TMP_DIR | backend/temp/preflight· cache χρήστη στο πακεταρισμένο CLI | Πρόχειρος χώρος για ιδιωτικό αντίγραφο ελέγχου DB/WAL κατά την εκκίνηση· διαστασιολογήστε τον για τη βάση και το WAL |
PLUGIN_UPLOAD_TEMP_DIR | libre-webui-plugin-uploads στον προσωρινό κατάλογο του OS | Πρόχειρος χώρος για μεταφορτώσεις προσθέτων σε εξέλιξη |
PLUGINS_DIR | $DATA_DIR/plugins | Εγγράψιμος κατάλογος εγκατεστημένων/προσαρμοσμένων προσθέτων |
BASE_URL | http://localhost:3001 | Βασική URL για προεπιλεγμένα callback OAuth |
LOG_LEVEL | info (warn στις δοκιμές) | Επίπεδο καταγραφής backend |
LOG_FORMAT | text | Το json ενεργοποιεί δομημένες μονόγραμμες καταγραφές με χρονικές σημάνσεις, id συσχέτισης και απόκρυψη |
OTEL_EXPORTER_OTLP_ENDPOINT | δεν έχει οριστεί | Προαιρετική εξαγωγή τηλεμετρίας OTLP/HTTP JSON· χωρίς τιμή δεν εξέρχεται τηλεμετρία από τη διεργασία |
OTEL_EXPORTER_OTLP_HEADERS | δεν έχει οριστεί | Header key=value χωρισμένα με κόμμα που στέλνονται στον συλλέκτη OTLP (π.χ. έλεγχος ταυτότητας) |
OTEL_SERVICE_NAME | libre-webui | Χαρακτηριστικό πόρου service.name στην εξαγόμενη τηλεμετρία |
WEBUI_HOST | loopback· 0.0.0.0 στο Docker | Διεύθυνση ακρόασης HTTP |
OPEN_BROWSER | true κατά την παροχή του frontend | Ορίστε false για να αποτρέψετε το αυτόματο άνοιγμα προγράμματος περιήγησης |
FULL_DOCUMENT_CONTEXT_MAX_TOKENS | 32000 | Όριο token για τη λειτουργία περιεχομένου πλήρους εγγράφου ανά συνομιλία (1000-2000000) |
GALLERY_RETENTION_DAYS | δεν έχει οριστεί (διατήρηση για πάντα) | Διαγραφή πολυμέσων συλλογής παλαιότερων από τόσες ημέρες μέσω του προγραμματιστή |
RECOVERY_DRILL_INTERVAL_HOURS | δεν έχει οριστεί (ασκήσεις ανενεργές) | Αυτόματη εκτέλεση επαληθευμένης άσκησης ανάκτησης κάθε N ώρες (προφίλ solo) |
RECOVERY_DRILL_HISTORY | 60 | Διατηρούμενες καταχωρίσεις ιστορικού ασκήσεων ανάκτησης |
Οι εκκινήσεις από τον πηγαίο κώδικα αγκυρώνουν τις σχετικές τιμές 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_MODE | solo | Επιλογή συνεκτικού προφίλ solo ή team |
DATABASE_BACKEND | sqlite | Επιλογή sqlite ή postgres |
DATABASE_URL | δεν έχει οριστεί | URL σύνδεσης PostgreSQL, απαιτείται με postgres |
DATABASE_SSL_MODE | verify-full | Πολιτική TLS PostgreSQL: disable, require ή verify-full με επαλήθευση ονόματος host |
POSTGRES_MIGRATION_MODE | apply | Εκτέλεση συμβατών μετεγκαταστάσεων με κλείδωμα ηγέτη ή validate για έλεγχο σχήματος μόνο για ανάγνωση |
POSTGRES_POOL_MAX | 10 | Μέγιστες συνδέσεις PostgreSQL ανά διεργασία εφαρμογής ή worker (1-100) |
POSTGRES_CONNECT_TIMEOUT_MS | 5000 | Timeout σύνδεσης PostgreSQL (1-60000 ms) |
POSTGRES_IDLE_TIMEOUT_MS | 30000 | Timeout αδρανούς σύνδεσης PostgreSQL (1-600000 ms) |
POSTGRES_STATEMENT_TIMEOUT_MS | 30000 | Timeout εντολής PostgreSQL (1-600000 ms) |
POSTGRES_MIGRATION_LOCK_TIMEOUT_MS | 60000 | Αναμονή για το κλείδωμα ηγέτη μετεγκατάστασης (1-600000 ms) |
BLOB_STORE_BACKEND | local | Επιλογή κρυπτογραφημένου χώρου local ή ιδιωτικού s3 |
VECTOR_STORE_BACKEND | embedded με SQLite | Επιλογή κρυπτογραφημένων διανυσμάτων embedded ή pgvector |
COORDINATION_BACKEND | local στο solo· redis στο team | Επιλογή συντονισμού εντός διεργασίας ή Redis |
REDIS_URL | δεν έχει οριστεί | URL redis: ή rediss:, απαιτείται με συντονισμό Redis |
REDIS_KEY_PREFIX | libre | Namespace 1-64 χαρακτήρων για κλειδιά συντονισμού Libre |
REDIS_CONNECT_TIMEOUT_MS | 5000 | Αρχικό timeout σύνδεσης Redis, έως 60 δευτερόλεπτα |
JOB_WORKER_MODE | embedded στο solo· external στο team | Εκτέλεση handler στην εφαρμογή ή στον αυτόνομο κοινόχρηστο worker |
RESOURCE_LEASE_TTL_MS | 30000 | TTL μίσθωσης συντονισμού για κατοχή πόρων μόνιμων job (5000-300000· εκτός εύρους η εκκίνηση αποτυγχάνει) |
JOB_WORKER_CONCURRENCY | 4 | Μόνιμα job που μπορεί να εκτελεί ταυτόχρονα ένας worker (1-32) |
CHAT_STREAM_EVENT_RETENTION_HOURS | 24 | Ώρες διατήρησης συμβάντων τμημάτων ροής συνομιλίας πριν από την ωριαία εκκαθάριση |
PLATFORM_EVENT_RETENTION_DAYS | 30 | Ημέρες διατήρησης κάθε μόνιμου συμβάντος πριν από την ωριαία εκκαθάριση |
PLATFORM_JOB_RETENTION_DAYS | 30 | Ημέρες διατήρησης ολοκληρωμένων 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_USER | 10737418240 | Μόνιμο μέγιστο πλήθος byte απλού κειμένου blob ανά κάτοχο (θετικός ασφαλής ακέραιος) |
BLOB_QUOTA_RESERVATION_TTL_MS | 3600000 | Διάρκεια εγκαταλελειμμένης κράτησης ποσόστωσης ροής (τουλάχιστον 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_STYLE | false | Ορίστε true για υπηρεσίες που απαιτούν διευθυνσιοδότηση τύπου διαδρομής |
S3_BLOB_PREFIX | libre/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_DAYS | 14 | Ηλικία μετά την οποία αφαιρούνται ολοκληρωμένα σύνολα αντιγράφων |
LIBRE_WEBUI_CONTAINER_NAME | libre-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_SIGNUP | false | Επιτρέπεται εγγραφή μετά τον πρώτο τοπικό διαχειριστή |
JWT_SECRET | δημιουργείται/εφεδρικό στην ανάπτυξη | Μυστικό υπογραφής JWT· ορίστε το ρητά στην παραγωγή |
JWT_EXPIRES_IN | 7d | Διάρκεια ζωής 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_SUBJECT | mailto:admin@localhost | Claim επικοινωνίας μέσα σε υπογεγραμμένες εξουσιοδοτήσεις Web Push |
Το Turnstile ενεργοποιείται μόνο όταν υπάρχουν και τα δύο κλειδιά Turnstile.
Το ENABLE_SIGNUP=false εξακολουθεί να επιτρέπει τον πρώτο τοπικό διαχειριστή σε κενή βάση δεδομένων και έπειτα αποκλείει επιπλέον τοπικούς λογαριασμούς και λογαριασμούς OAuth. Πριν από την πρώτη εκκίνηση, προστατεύστε μια απομακρυσμένα προσβάσιμη αρχική διαδρομή με εξωτερικό όριο ταυτότητας.
Κάθε JWT που εκδίδεται δεσμεύεται σε συνεδρία στον διακομιστή (claim sid), επομένως η αποσύνδεση ή η ανάκληση συνεδρίας από τις Ρυθμίσεις → Συνεδρίες ακυρώνει αμέσως το token σε κάθε replica και κλείνει τις ενεργές συνδέσεις WebSocket. Η διατήρηση ελέγχου ασφάλειας μπορεί να ρυθμιστεί:
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
AUDIT_RETENTION_DAYS | 180 | Ημέρες διατήρησης γραμμών στο αρχείο συμβάντων ελέγχου ασφάλειας |
Γενική ενιαία σύνδεση 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_NAME | Single Sign-On | Ετικέτα στο κουμπί σύνδεσης |
OIDC_SCOPES | openid profile email | Ζητούμενα πεδία |
OIDC_CALLBACK_URL | BASE_URL + διαδρομή callback OIDC | URI ανακατεύθυνσης καταχωρισμένο στον πάροχο |
OIDC_ALLOWED_EMAIL_DOMAINS | δεν έχει οριστεί | Λίστα με κόμματα· όταν οριστεί, απαιτείται επαληθευμένο e-mail σε έναν από τους domain |
OIDC_GROUP_CLAIM | groups | Claim ID token που περιέχει ονόματα ομάδων |
OIDC_ADMIN_GROUPS | δεν έχει οριστεί | Λίστα με κόμματα· όταν οριστεί, ο ρόλος admin ακολουθεί τη συμμετοχή του claim σε κάθε σύνδεση |
OIDC_SYNC_GROUPS | false | Το true συμφιλιώνει τις συμμετοχές σε ομάδες Libre με το claim ομάδας σε κάθε σύνδεση |
Το OIDC ενεργοποιείται μόνο όταν υπάρχουν η URL εκδότη, το id πελάτη και το μυστικό πελάτη. Ένα e-mail που χρησιμοποιείται ήδη από μη συνδεδεμένο τοπικό λογαριασμό απορρίπτεται αντί να συγχωνευτεί σιωπηρά και η δημιουργία λογαριασμού εξακολουθεί να σέβεται το ENABLE_SIGNUP.
Η αποδοχή Chat WebSocket μπορεί να ρυθμιστεί χωρίς να αποδυναμωθεί ο έλεγχος ταυτότητας:
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
CHAT_WS_MAX_PAYLOAD_BYTES | 10 MiB | Μέγιστο αποδεκτό μέγεθος μηνύματος WebSocket |
CHAT_WS_MAX_MESSAGES_PER_MINUTE | 120 | Ανώτατο πλήθος μηνυμάτων WebSocket ανά σύνδεση |
CHAT_WS_MAX_ACTIVE_GENERATIONS_PER_USER | 4 | Δημιουργίες παρόχου που επιτρέπονται ανά λογαριασμό |
CHAT_WS_MAX_CONNECTIONS_PER_USER | 5 | Ταυτόχρονα πιστοποιημένα socket ανά λογαριασμό |
WEBSOCKET_TICKET_TTL_MS | 30000 | Διάρκεια εφάπαξ εισιτηρίου 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_ID | ID πελάτη GitHub OAuth |
GITHUB_CLIENT_SECRET | Μυστικό πελάτη GitHub OAuth |
GITHUB_CALLBACK_URL | Παράκαμψη URL callback GitHub |
HUGGINGFACE_CLIENT_ID | ID πελάτη 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_URL | http://localhost:11434 | Βασική URL API Ollama |
OLLAMA_TIMEOUT | 300000 | Τυπικό timeout αιτήματος Ollama (1,000-3,600,000 ms) |
OLLAMA_LONG_OPERATION_TIMEOUT | 900000 | Timeout μακράς ενέργειας (1,000-3,600,000 ms και όχι μικρότερο από OLLAMA_TIMEOUT) |
OLLAMA_MAX_CONTEXT | 32768 | Μέγιστο περιεχόμενο μοντέλου που υιοθετείται αυτόματα (128-2,097,152 token) |
Αναζήτηση ιστού
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
SEARXNG_URL | δεν έχει οριστεί | Προεπιλεγμένο endpoint SearXNG για τη ρύθμιση αναζήτησης ιστού· ο διαχειριστής πρέπει ακόμη να το ενεργοποιήσει στις Ρυθμίσεις > Αναζήτηση |
Libre Claw
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
LIBRE_CLAW_BASE_URL | http://127.0.0.1:8766 | Προαιρετική URL δαίμονα Libre Claw |
LIBRE_CLAW_TIMEOUT_MS | 30000 | Timeout αιτήματος HTTP Libre Claw |
Runtime Work
Αυτές οι μεταβλητές ρυθμίζουν την εκτέλεση Work στον υπολογιστή ή στο cluster Kubernetes όπου εκτελείται το backend του Libre WebUI. Το Docker είναι το προεπιλεγμένο runtime· το chart Helm επιλέγει Kubernetes όταν work.enabled=true.
| Μεταβλητή | Προεπιλογή | Σκοπός |
|---|---|---|
WORK_RUNTIME_IMAGE | node:22.22-bookworm@sha256:2d178f2785b96dfbf62a416ca2e40f50e30150b4ff3320d706f0d96e90600eb3 | Καρφιτσωμένο image για τα sandbox Work |
WORK_DOCKER_COMMAND | docker | Εκτελέσιμο CLI backend Docker διαθέσιμο στη διεργασία |
WORK_COMMAND_TIMEOUT_MS | 120000 | Προεπιλεγμένο timeout· ένα εργαλείο μπορεί να ζητήσει έως 600000 ms |
WORK_MAX_OUTPUT_CHARS | 50000 | Όριο καταγεγραμμένου stdout/stderr, ξεχωριστά για κάθε ροή |
WORK_MAX_AGENT_ROUNDS | 48 | Προϋπολογισμός κύκλων μοντέλου/εργαλείων για μία εκτέλεση, ανεξάρτητος από πάροχο |
WORK_STATUS_BLURB_MODEL | 1 | Ορίστε 0 για παράλειψη του αιτήματος μοντέλου που γράφει τη γραμμή κατάστασης agent μετά την εκτέλεση |
WORK_MEMORY_LIMIT | 2g | Όριο μνήμης για κάθε κοντέινερ Work |
WORK_CPU_LIMIT | 2 | Όριο CPU για κάθε κοντέινερ Work |
WORK_PIDS_LIMIT | 256 | Όριο διεργασιών για κάθε κοντέινερ Work |
WORK_PREVIEW_PORT | 4173 | Θύρα που πρέπει να χρησιμοποιεί ο διακομιστής προεπισκόπησης μέσα στο κοντέινερ εργασίας |
WORK_PREVIEW_BIND | 127.0.0.1 | Διεπαφή host όπου δημοσιεύεται η θύρα προεπισκόπησης εργασίας· οι εγκαταστάσεις Compose σε native Docker Engine πρέπει να χρησιμοποιούν προσβάσιμη μη δημόσια διεπαφή γέφυρας |
WORK_DOCKER_PUBLISHED_HOST | προεπιλογή εφαρμογής: ίδιο με WORK_PREVIEW_BIND· προεπιλογή Compose: host.docker.internal | Host/IP που βλέπει το backend για θύρες προεπισκόπησης, οθόνης και ήχου δημοσιευμένες από Docker |
WORK_COMPUTER_SCREEN_PORT | 6080 | Θύρα κοντέινερ της γέφυρας οθόνης Work Computer (websockify) σε sandbox με GUI |
WORK_COMPUTER_AUDIO_PORT | 6081 | Θύρα κοντέινερ της γέφυρας ήχου Work Computer (websockify → monitor PulseAudio) σε sandbox με GUI |
WORK_MAX_ACTIVE_RUNTIMES_GLOBAL | 3 | Ταυτόχρονες εργασίες με runtime σε ολόκληρη την εγκατάσταση |
WORK_MAX_ACTIVE_RUNTIMES_PER_USER | 2 | Ταυτόχρονες εργασίες με runtime για έναν χρήστη |
WORK_MAX_TASKS_GLOBAL | 500 | Μέγιστες μόνιμες εργασίες Work σε ολόκληρη την εγκατάσταση |
WORK_MAX_TASKS_PER_USER | 100 | Μέγιστες μόνιμες εργασίες Work για έναν διαχειριστή |
WORK_NETWORK_NAME | libre-webui-work | Διαχειριζόμενο δίκτυο bridge sandbox για δικτυωμένες εργασίες |
WORK_RUN_LEASE_WAIT_MS | 60000 | Αναμονή εκτέλεσης για την κοινόχρηστη μίσθωση runtime πριν αναφερθεί διένεξη replica (team) |
WORK_RUNTIME_DNS | δεν έχει οριστεί | IP resolver χωρισμένες με κόμμα που επιβάλλονται σε δικτυωμένες εργασίες |
WORK_DOCKER_SOCKET | DOCKER_HOST αν είναι unix:// ή tcp://, αλλιώς /var/run/docker.sock | Endpoint Docker Engine για τερματικά και διαγνωστικά |
WORK_TERMINAL_MAX_SESSIONS_PER_TASK | 2 | Ταυτόχρονα τερματικά προγράμματος περιήγησης σε μία εργασία |
WORK_TERMINAL_IDLE_TIMEOUT_MS | 900000 | Χρόνος αδράνειας πριν κλείσει μια συνεδρία τερματικού |
WORK_RUNTIME_IDLE_TIMEOUT_MS | 0 (ανενεργό) | Διακοπή sandbox μετά από τόση αδράνεια (και προεπισκοπήσεων) |
WORK_HOST_WORKSPACES_ENABLED | false | Να επιτρέπεται σε εργασία να χρησιμοποιεί φάκελο host αντί για τόμο |
WORK_HOST_WORKSPACE_ROOTS | ο οικιακός κατάλογος του χρήστη διακομιστή | Ρίζες χωρισμένες με : μέσα στις οποίες πρέπει να βρίσκεται ο χώρος εργασίας host |
WORK_RUNTIME_BACKEND | docker | Backend sandbox: docker ή kubernetes |
WORK_K8S_NAMESPACE | libre-webui-work | Namespace με Pod sandbox Kubernetes και PVC |
WORK_K8S_STORAGE_CLASS | προεπιλογή cluster | StorageClass για PVC χώρων εργασίας |
WORK_K8S_WORKSPACE_SIZE | 5Gi | Μέγεθος PVC χώρου εργασίας ανά εργασία (πραγματική ποσόστωση δίσκου) |
WORK_K8S_POD_READY_TIMEOUT_MS | 900000 | Αναμονή για να φτάσει ένα Pod sandbox σε Running (περιλαμβάνει λήψεις) |
WORK_K8S_POD_GONE_TIMEOUT_MS | 60000 | Αναμονή για να εξαφανιστεί ένα διαγραμμένο 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_MS | 600000 | Χρόνος εκτέλεσης CLI agent πριν τερματιστεί |
CODEX_OAUTH_MODELS_ENABLED | true | Προσφορά του παρόχου 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_GID | 0 | ID ομάδας του 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_MS | 21600000 (6 h) | Ηλικία στην οποία ένας αποθηκευμένος κατάλογος ανανεώνεται στην επόμενη ανάγνωση λίστας προσθέτων |
PLUGIN_MODEL_DISCOVERY_RETRY_MS | 600000 (10 min) | Ελάχιστο διάστημα μεταξύ προσπαθειών, ώστε ένας αποτυχημένος πάροχος να μην ελέγχεται συχνά |
PLUGIN_MODEL_DISCOVERY_REFRESH_DEADLINE_MS | 3000 | Χρόνος αναμονής μιας απόκρισης λίστας προσθέτων για ανανεώσεις πριν απαντήσει |
Μια ανανέωση που ξεπερνά το χρονικό όριο εξακολουθεί να ολοκληρώνεται και το αποτέλεσμά της παρέχεται στο επόμενο αίτημα. Η ρητή επιλογή Ανανέωση μοντέλων επικοινωνεί πάντα με τον πάροχο και αγνοεί το διάστημα.
Κλειδιά προσθέτων παρόχων
Τα πρόσθετα παρόχων μπορούν να χρησιμοποιούν κλειδιά περιβάλλοντος ως προεπιλογές για ολόκληρη την ανάπτυξη:
| Μεταβλητή | Πάροχος |
|---|---|
OPENAI_API_KEY | OpenAI και OpenAI TTS |
ANTHROPIC_API_KEY | Anthropic |
GROQ_API_KEY | Groq |
GEMINI_API_KEY | Google Gemini |
MISTRAL_API_KEY | Mistral |
OPENROUTER_API_KEY | OpenRouter |
KIMI_API_KEY | Kimi Code από Moonshot AI |
GITHUB_API_KEY | Μοντέλα GitHub |
HUGGINGFACE_API_KEY | API Hugging Face όπου έχουν ρυθμιστεί |
ELEVENLABS_API_KEY | ElevenLabs 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_URL | dev proxy ίδιας προέλευσης ή production API | Βασική URL API frontend |
VITE_WS_BASE_URL | εξάγεται από τη URL API | Απόλυτη βάση ws:/wss: για socket Chat και Work |
VITE_APP_VERSION | έκδοση πακέτου από τη ρύθμιση Vite | Εμφανιζόμενη έκδοση εφαρμογής |
VITE_DEMO_MODE | false | Ενεργοποιεί εικονικά δεδομένα επίδειξης όταν true |
VITE_API_TIMEOUT | 300000 | Timeout API frontend σε χιλιοστά του δευτερολέπτου |
VITE_BACKEND_URL | http://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_MS | Timeout δημιουργίας αρχείου αλλαγών με 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