# 📖 Setup Guide — OmniRoute (Ελληνικά) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/SETUP_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/SETUP_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/SETUP_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/SETUP_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/SETUP_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/SETUP_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/SETUP_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/SETUP_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/SETUP_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/SETUP_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/SETUP_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/SETUP_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/SETUP_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/SETUP_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/SETUP_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/SETUP_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/SETUP_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/SETUP_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/SETUP_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/SETUP_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/SETUP_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/SETUP_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/SETUP_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/SETUP_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/SETUP_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/SETUP_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/SETUP_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/SETUP_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/SETUP_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/SETUP_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/SETUP_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/SETUP_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/SETUP_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/SETUP_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/SETUP_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/SETUP_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/SETUP_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/SETUP_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/SETUP_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/SETUP_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/SETUP_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/SETUP_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/SETUP_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/SETUP_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/SETUP_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/SETUP_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/SETUP_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/SETUP_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/SETUP_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/SETUP_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/SETUP_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/SETUP_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/SETUP_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/SETUP_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/SETUP_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/SETUP_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/SETUP_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/SETUP_GUIDE.md) --- > Πλήρης αναφορά ρύθμισης για το OmniRoute. Για τη σύντομη έκδοση, ανατρέξτε στη [Γρήγορη εκκίνηση στο README](../README.md#-quick-start). ## Πίνακας περιεχομένων - [Μέθοδοι εγκατάστασης](#install-methods) - [Διαμόρφωση εργαλείου CLI](#cli-tool-configuration) - [Ρύθμιση πρωτοκόλλων (MCP + A2A)](#protocol-setup-mcp--a2a) - [Διαμόρφωση χρονικών ορίων](#timeout-configuration) - [Λειτουργία διαχωρισμένων θυρών](#split-port-mode) - [Void Linux (xbps-src)](#void-linux-xbps-src-template) - [Απεγκατάσταση](#uninstalling) --- ## Μέθοδοι εγκατάστασης ### npm (συνιστάται) ```bash npm install -g omniroute omniroute ``` Ο πίνακας ελέγχου ανοίγει στη διεύθυνση `http://localhost:20128` και το βασικό URL του API είναι `http://localhost:20128/v1`. ### pnpm ```bash pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core omniroute ``` > **Χρήστες του pnpm:** η σημαία `--allow-build` απαιτείται για την ενεργοποίηση των εγγενών σεναρίων δόμησης για τα `better-sqlite3` και `@swc/core`. Η εντολή `pnpm approve-builds -g` δεν υποστηρίζεται για καθολικές εγκαταστάσεις στο pnpm v11. ### Arch Linux (AUR) ```bash yay -S omniroute-bin systemctl --user enable --now omniroute.service ``` Το [πακέτο AUR](https://aur.archlinux.org/packages/omniroute-bin) εγκαθιστά το OmniRoute και παρέχει μια υπηρεσία χρήστη systemd. ### Από τον πηγαίο κώδικα ```bash npm install PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev ``` > **Σημείωση για Windows:** Από προεπιλογή, το OmniRoute χρησιμοποιεί το `%APPDATA%\omniroute` όταν δεν υπάρχει ο παλαιού τύπου κατάλογος `%USERPROFILE%\.omniroute`. Ορίστε το `DATA_DIR` για να επιλέξετε διαφορετική τοποθεσία καταλόγου δεδομένων. > **Σημείωση:** Το `npm install` δημιουργεί αυτόματα το `.env` από το `.env.example` κατά την πρώτη εκτέλεση. Οι επόμενες εγκαταστάσεις δεν θα αντικαταστήσουν ένα υπάρχον `.env`, επομένως οι προσαρμογές διατηρούνται. Για να το δημιουργήσετε εκ νέου, διαγράψτε το `.env` πριν από την επανεκτέλεση. ### Docker Ανατρέξτε στον [Οδηγό Docker](./DOCKER_GUIDE.md) για την πλήρη ρύθμιση του Docker, συμπεριλαμβανομένων των προφίλ Compose και του Caddy HTTPS. ### Εφαρμογή επιφάνειας εργασίας (Electron) Το OmniRoute περιλαμβάνει ένα περίβλημα εφαρμογής επιφάνειας εργασίας που έχει δημιουργηθεί με Electron 41 + electron-builder 26.10. Διαθέσιμα σενάρια (ριζικός κατάλογος χώρου εργασίας): ```bash npm run electron:dev # Εκτέλεση της εφαρμογής επιφάνειας εργασίας με άμεση επαναφόρτωση npm run electron:build # Δόμηση για το τρέχον λειτουργικό σύστημα (αυτόματη ανίχνευση) npm run electron:build:win # Πρόγραμμα εγκατάστασης Windows (NSIS + φορητή έκδοση) npm run electron:build:mac # macOS (dmg + zip, arm64+x64) npm run electron:build:linux # Linux (AppImage + deb + rpm) npm run electron:smoke:packaged # Δοκιμή καπνού της πακεταρισμένης έκδοσης ``` Οι εκδόσεις των προγραμμάτων εγκατάστασης για επιφάνεια εργασίας επισυνάπτονται στις Εκδόσεις GitHub. Για την πλήρη και εις βάθος τεκμηρίωση του Electron (υπογραφή, γέφυρα IPC, διανομές), ανατρέξτε στο [`ELECTRON_GUIDE.md`](./ELECTRON_GUIDE.md) _(δημιουργήθηκε σε μεταγενέστερη φάση)_. ### Διακομιστής χωρίς γραφικό περιβάλλον (CI/αυτοματοποίηση) Για εγκαταστάσεις χωρίς επίβλεψη (Docker, Kubernetes, CI), χρησιμοποιήστε: ```bash omniroute setup --non-interactive omniroute providers test-batch ``` Σε συνδυασμό με μεταβλητές περιβάλλοντος (`INITIAL_PASSWORD`, `OMNIROUTE_WS_BRIDGE_SECRET` κ.λπ.), αυτό σας επιτρέπει να θέσετε σε λειτουργία μια πλήρως προγραμματιζόμενη παρουσία του OmniRoute. ### Επιλογές CLI | Εντολή | Περιγραφή | | ----------------------- | ---------------------------------------------------------------------------------------- | | `omniroute` | Εκκίνηση διακομιστή (`PORT=20128`, API και πίνακας ελέγχου στην ίδια θύρα) | | `omniroute setup` | Καθοδηγούμενη αρχική ρύθμιση μέσω CLI για τον κωδικό πρόσβασης και τον πρώτο πάροχο | | `omniroute doctor` | Εκτέλεση τοπικών ελέγχων εύρυθμης λειτουργίας χωρίς εκκίνηση του διακομιστή | | `omniroute providers` | Εντοπισμός, εμφάνιση, επικύρωση και δοκιμή παρόχων από το CLI | | `omniroute config` | Διαμόρφωση εργαλείου CLI — εμφάνιση, ανάκτηση, ορισμός και επικύρωση διαμορφώσεων | | `omniroute status` | Πίνακας ελέγχου κατάστασης εκτός σύνδεσης — έκδοση, βάση δεδομένων, εργαλεία, διαμόρφωση | | `omniroute logs` | Ροή αρχείων καταγραφής χρήσης από το API (υποστηρίζει `--follow`) | | `omniroute update` | Έλεγχος για ενημερώσεις του OmniRoute ή εφαρμογή τους | | `omniroute provider` | Διαχείριση συνδέσεων παρόχων — προσθήκη, εμφάνιση, αφαίρεση, δοκιμή, προεπιλογή | | `omniroute --port 3000` | Ορισμός της κανονικής θύρας/θύρας API σε 3000 | | `omniroute --mcp` | Εκκίνηση διακομιστή MCP (μεταφορά stdio) | | `omniroute --no-open` | Να μην ανοίγει αυτόματα το πρόγραμμα περιήγησης | | `omniroute --help` | Εμφάνιση βοήθειας | Η ρύθμιση χωρίς γραφικό περιβάλλον μπορεί να αυτοματοποιηθεί με σημαίες ή μεταβλητές περιβάλλοντος: ```bash omniroute setup --non-interactive --password "$OMNIROUTE_PASSWORD" omniroute setup --non-interactive --add-provider --provider openai --api-key "$OPENAI_API_KEY" omniroute setup --non-interactive --add-provider --provider openai --api-key "$OPENAI_API_KEY" --test-provider ``` Εκτελέστε τοπικά διαγνωστικά χωρίς να ανοίξετε τον πίνακα ελέγχου: ```bash omniroute doctor omniroute doctor --json omniroute doctor --no-liveness ``` Διαχειριστείτε παρόχους μέσω SSH ή σεναρίων χωρίς να ανοίξετε τον πίνακα ελέγχου: ```bash omniroute providers available omniroute providers available --search openai omniroute providers available --category api-key omniroute providers list omniroute providers test omniroute providers test-all omniroute providers validate ``` --- ## Ρύθμιση εργαλείων CLI ### 1) Συνδέστε παρόχους και δημιουργήστε κλειδί API 1. Ανοίξτε τον Πίνακα ελέγχου → `Πάροχοι` και συνδέστε τουλάχιστον έναν πάροχο (OAuth ή κλειδί API). 2. Ανοίξτε τον Πίνακα ελέγχου → `Τελικά σημεία` και δημιουργήστε ένα κλειδί API. 3. (Προαιρετικά) Ανοίξτε τον Πίνακα ελέγχου → `Συνδυασμοί` και ορίστε την αλυσίδα εφεδρείας σας. ### 2) Κατευθύνετε το εργαλείο προγραμματισμού σας ```txt Βασικό URL: http://localhost:20128/v1 Κλειδί API: [αντιγράψτε από τη σελίδα Τελικού σημείου] Μοντέλο: if/qwen3.8-max-preview (ή οποιοδήποτε πρόθεμα παρόχου/μοντέλου) ``` Αν το πρόγραμμα επεξεργασίας σας δεν μπορεί να στείλει `Authorization: Bearer ...`, χρησιμοποιήστε αντ’ αυτού τη βασική διεύθυνση συμβατότητας με ενσωματωμένο διακριτικό: ```txt Βασικό URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/ URL μοντέλων: http://localhost:20128/api/v1/vscode/YOUR_KEY/models URL συνομιλίας: http://localhost:20128/api/v1/vscode/YOUR_KEY/chat/completions URL ετικετών Ollama: http://localhost:20128/api/v1/vscode/YOUR_KEY/api/tags ``` Λειτουργεί με τα Claude Code, Codex CLI, Cursor, Cline, OpenClaw, OpenCode και SDK συμβατά με το OpenAI. #### Αυτόματη ρύθμιση με `setup-*` Αντί να επικολλήσετε χειροκίνητα το βασικό URL και το κλειδί, αφήστε το OmniRoute να γράψει τη ρύθμιση κάθε εργαλείου από τον ενεργό κατάλογο μοντέλων. Μία εντολή ανά εργαλείο: ```bash omniroute setup-codex # Προφίλ ~/.codex/.config.toml omniroute setup-claude # ~/.claude/profiles//settings.json omniroute setup-opencode # ~/.config/opencode/opencode.json (συμβατό με OpenAI) omniroute setup-cline # Ρυθμίσεις Cline CLI + επέκτασης VS Code omniroute setup-kilo # Kilo Code omniroute setup-continue # ~/.continue/config.yaml (Continue / cn) omniroute setup-cursor # Εμφανίζει τα βήματα εντός της εφαρμογής Cursor omniroute setup-roo # Εισαγωγή Roo Code + δείκτης autoImport omniroute setup-crush # ~/.config/crush/crush.json omniroute setup-zed # ~/.config/zed/settings.json (openai_compatible) omniroute setup-goose # ~/.config/goose/config.yaml omniroute setup-aider # ~/.aider.conf.yml omniroute setup-qwen # ~/.qwen/settings.json + ~/.qwen/.env ``` Καθεμία δέχεται `--remote --api-key ` για τη ρύθμιση ενός τοπικού εργαλείου ώστε να χρησιμοποιεί ένα **απομακρυσμένο** OmniRoute, καθώς και `--dry-run` για προεπισκόπηση. Για να εκκινήσετε ένα CLI με το σωστό περιβάλλον ενσωματωμένο και χωρίς να γραφτεί καμία ρύθμιση, χρησιμοποιήστε το γενικό πρόγραμμα εκκίνησης `omniroute run ` (claude, codex, aider, goose, opencode, qwen, gemini)· τα παλαιού τύπου προγράμματα εκκίνησης ανά εργαλείο `omniroute launch` (Claude Code) και `omniroute launch-codex` (Codex) παραμένουν διαθέσιμα. Για τον πλήρη πίνακα (τι γράφει κάθε εντολή, κάθε σημαία, τοπική έναντι απομακρυσμένης λειτουργίας, συμβάσεις βασικού URL `/v1`), ανατρέξτε στις **[Ενσωματώσεις CLI](./CLI-INTEGRATIONS.md)**. Για λεπτομερείς ρυθμίσεις ανά εργαλείο (Claude Code, Codex CLI, Cursor, Cline, OpenClaw, Kilo Code, Copilot και άλλα), ανατρέξτε στον ειδικό **[Οδηγό εργαλείων CLI](../reference/CLI-TOOLS.md)**. --- ## Ρύθμιση πρωτοκόλλου (MCP + A2A) ### Ρύθμιση MCP (Πρωτόκολλο περιβάλλοντος μοντέλου) Ξεκινήστε τη μεταφορά MCP σε λειτουργία stdio: ```bash omniroute --mcp ``` Προτεινόμενη ροή επικύρωσης: ```bash # 1. Start MCP server omniroute --mcp # 2. From your MCP client, call: omniroute_get_health # Should return system health omniroute_list_combos # Should return active combos # 3. Or run the full E2E suite: npm run test:protocols:e2e ``` #### Διαμόρφωση πελάτη MCP **Κωδικός Claude :** ```bash claude mcp add --transport http omniroute http://localhost:20128/api/mcp/stream ``` **Cursor / Cline:** Προσθέστε στις ρυθμίσεις σας MCP (stdio, με το κλειδί ώστε ο καλών να έχει έναν κύριο): ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"], "env": { "OMNIROUTE_API_KEY": "your-key", "OMNIROUTE_BASE_URL": "http://localhost:20128" } } } } ``` Ή, όταν `mcpTransport` είναι `streamable-http` (ρυθμίστε το σε `/dashboard/mcp` ή με `omniroute mcp enable --transport streamable-http`), τοποθετήστε την καταχώρηση απομακρυσμένου διακομιστή MCP του πελάτη στο `http://localhost:20128/api/mcp/stream`. Το κλειδί ταξιδεύει ως `Authorization: Bearer ` (δείτε [MCP Server → Απομακρυσμένη πρόσβαση](../frameworks/MCP-SERVER.md#remote-access-manage-scope-bypass) για απομακρυσμένους κεντρικούς υπολογιστές· ένα απομακρυσμένο κλειδί χρειάζεται `mcp:connect` συν τα πεδία read/write του). **Πλήρης τεκμηρίωση MCP :** [Διακομιστής MCP README](../../open-sse/mcp-server/README.md) — 110 εργαλεία, ρυθμίσεις παραμέτρων IDE, πελάτες Python/TS/Go. Αναφορά χειριστή για τα εργαλεία συμπίεσης CCR/dedup (δείκτες, προαπαιτούμενα, πεδία ανά εργαλείο, σελιδοποίηση ανάκτησης, διαγνωστικά): [Μηχανές συμπίεσης → Προαπαιτούμενα / οδηγός χειριστή](../compression/COMPRESSION_ENGINES.md#prerequisites--operator-guide-ccr--session-dedup). ### Ρύθμιση A2A (Πρωτόκολλο Agent-to-Agent) Επαληθεύστε την κάρτα αντιπροσώπου: ```bash curl http://localhost:20128/.well-known/agent.json ``` Αποστολή εργασίας: ```bash curl -X POST http://localhost:20128/a2a \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}' ``` **Πλήρης τεκμηρίωση A2A :** [Διακομιστής A2A README](../../src/lib/a2a/README.md) — JSON-RPC 2.0, δεξιότητες, ροή, κύκλος ζωής εργασιών. --- ## Ρύθμιση χρονικών ορίων ### Βασικά χρονικά όρια Για τις περισσότερες εγκαταστάσεις, χρειάζεστε μόνο αυτές τις δύο μεταβλητές: | Μεταβλητή | Προεπιλογή | Σκοπός | | ------------------------ | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `REQUEST_TIMEOUT_MS` | `600000` | Κοινή τιμή βάσης για το χρονικό όριο έναρξης απόκρισης της ανάντη υπηρεσίας, τα κρυφά χρονικά όρια του Undici, τα αιτήματα αποτυπώματος TLS και τα χρονικά όρια αιτημάτων/μεσολάβησης της γέφυρας API | | `STREAM_IDLE_TIMEOUT_MS` | κληρονομεί το `REQUEST_TIMEOUT_MS` | Μέγιστο διάστημα μεταξύ τμημάτων ροής προτού το OmniRoute διακόψει τη ροή SSE | Διατηρείται η συμβατότητα προς τα πίσω: οι υπάρχουσες μεταβλητές χρονικών ορίων `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS` και άλλες μεταβλητές ανά επίπεδο εξακολουθούν να λειτουργούν και υπερισχύουν της κοινής τιμής βάσης. ### Σημειώσεις ειδικά για παρόχους Για ανάντη υπηρεσίες συμβατές με το Claude Code (`anthropic-compatible-cc-*`), το OmniRoute παράγει την εξερχόμενη κεφαλίδα `X-Stainless-Timeout` από το επιλυμένο χρονικό όριο ανάκτησης, ώστε τα χρονικά όρια ανάγνωσης στην πλευρά του παρόχου να παραμένουν ευθυγραμμισμένα με τη ρύθμιση του περιβάλλοντός σας. Για αντίστροφους διακομιστές μεσολάβησης τρίτων που είναι συμβατοί με το Claude Code, το OmniRoute διατηρεί συντηρητικό το προεπιλεγμένο σύνολο `anthropic-beta` και, όταν το `Client Cache Control` παραμένει στο `Auto`, προωθεί μόνο τους δείκτες `cache_control` που παρέχονται από τον πελάτη. Ενεργοποιήστε την εναλλαγή "Enable redact-thinking beta" ανά σύνδεση μόνο όταν η ανάντη υπηρεσία απαιτεί συγκεκριμένα ροές συλλογισμού Claude με απόκρυψη. ### Σύνθετες παρακάμψεις χρονικών ορίων | Μεταβλητή | Προεπιλογή | Σκοπός | | ---------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | | `FETCH_TIMEOUT_MS` | κληρονομεί το `REQUEST_TIMEOUT_MS` | Χρονικό όριο έναρξης απόκρισης της ανάντη υπηρεσίας, το οποίο χρησιμοποιείται μέχρι να ληφθούν οι κεφαλίδες απόκρισης | | `FETCH_HEADERS_TIMEOUT_MS` | κληρονομεί το `FETCH_TIMEOUT_MS` | Χρονικό όριο του Undici για τη λήψη των κεφαλίδων απόκρισης της ανάντη υπηρεσίας | | `FETCH_BODY_TIMEOUT_MS` | κληρονομεί το `FETCH_TIMEOUT_MS` | Χρονικό όριο του Undici μεταξύ τμημάτων του σώματος της ανάντη απόκρισης (το `0` το απενεργοποιεί) | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Χρονικό όριο σύνδεσης TCP του Undici | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Χρονικό όριο αδράνειας υποδοχής keep-alive του Undici | | `TLS_CLIENT_TIMEOUT_MS` | κληρονομεί το `FETCH_TIMEOUT_MS` | Χρονικό όριο για αιτήματα αποτυπώματος TLS που πραγματοποιούνται μέσω του `wreq-js` | | `API_BRIDGE_PROXY_TIMEOUT_MS` | κληρονομεί το `REQUEST_TIMEOUT_MS` ή `600000` | Χρονικό όριο για την προώθηση μέσω διακομιστή μεσολάβησης `/v1` από τη θύρα API στη θύρα του πίνακα ελέγχου | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `max(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | Χρονικό όριο εισερχόμενων αιτημάτων στον διακομιστή γέφυρας API | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Χρονικό όριο εισερχόμενων κεφαλίδων στον διακομιστή γέφυρας API | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Χρονικό όριο keep-alive στον διακομιστή γέφυρας API | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Χρονικό όριο αδράνειας υποδοχής στον διακομιστή γέφυρας API (το `0` το απενεργοποιεί) | > **Σημείωση:** Για αιτήματα ροής, το `FETCH_TIMEOUT_MS` καλύπτει μόνο τη δημιουργία της σύνδεσης / την αναμονή για την πρώτη απόκριση της ανάντη υπηρεσίας. Μόλις ενεργοποιηθεί η ροή, το OmniRoute θα τη διακόψει μόνο σε περίπτωση πραγματικής εμπλοκής (`STREAM_IDLE_TIMEOUT_MS`) ή αδράνειας του σώματος στο Undici (`FETCH_BODY_TIMEOUT_MS`). ### Συμβατότητα με αντίστροφους διακομιστές μεσολάβησης Εάν εκτελείτε το OmniRoute πίσω από Nginx, Caddy, Cloudflare ή άλλον αντίστροφο διακομιστή μεσολάβησης, βεβαιωθείτε ότι τα χρονικά όρια του διακομιστή μεσολάβησης είναι επίσης μεγαλύτερα από τα χρονικά όρια ροής/ανάκτησης του OmniRoute. --- ## Λειτουργία διαχωρισμένων θυρών Εκτελέστε το API και τον Πίνακα ελέγχου σε ξεχωριστές θύρες για προηγμένα σενάρια (αντίστροφος διακομιστής μεσολάβησης, δικτύωση κοντέινερ): ```bash PORT=20128 DASHBOARD_PORT=20129 omniroute # API: http://localhost:20128/v1 # Πίνακας ελέγχου: http://localhost:20129 ``` --- ## Κενό πρότυπο Linux (xbps-src). Για χρήστες Void Linux, μπορείτε να δημιουργήσετε ένα εγγενές πακέτο χρησιμοποιώντας `xbps-src`. Αποθηκεύστε αυτό το μπλοκ ως `srcpkgs/omniroute/template`: ```bash # Template file for 'omniroute' pkgname=omniroute version=3.8.0 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit " license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" # Regenerate the checksum for each release with: # curl -L -o /tmp/omniroute.tar.gz "https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" && sha256sum /tmp/omniroute.tar.gz checksum=PLACEHOLDER_REGENERATE_PER_RELEASE system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false do_build() { local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac NODE_ENV=development npm ci --ignore-scripts npm run build cp -r .next/static .next/standalone/.next/static [ -d public ] && cp -r public .next/standalone/public || true local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js (cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch") local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release mkdir -p "$_bs3_release" cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/" rm -rf .next/standalone/node_modules/@img for _mod in pino-abstract-transport split2 process-warning; do cp -r "node_modules/$_mod" .next/standalone/node_modules/ done } do_check() { npm run test:unit } do_install() { vmkdir usr/lib/omniroute/.next vcopy .next/standalone/. usr/lib/omniroute/.next/standalone for _d in \ .next/standalone/.next/server/app/dashboard \ .next/standalone/.next/server/app/dashboard/settings \ .next/standalone/.next/server/app/dashboard/providers; do touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep" done cat > "${WRKDIR}/omniroute" <<'EOF' #!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" } post_install() { vlicense LICENSE } ``` --- ## Απεγκατάσταση | Εντολή | Ενέργεια | | ------------------------ | ------------------------------------------------------------------------------------------------------------------ | | `npm run uninstall` | Καταργεί την εφαρμογή συστήματος, αλλά **διατηρεί τη βάση δεδομένων και τις διαμορφώσεις σας** στο `~/.omniroute`. | | `npm run uninstall:full` | Καταργεί την εφαρμογή ΚΑΙ **διαγράφει οριστικά όλες τις διαμορφώσεις, τα κλειδιά και τις βάσεις δεδομένων**. | > Για λεπτομερείς οδηγίες απεγκατάστασης για όλες τις μεθόδους, ανατρέξτε στο [UNINSTALL.md](./UNINSTALL.md).