# 📖 Setup Guide — OmniRoute (Igbo) 🌐 **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) · 🇬🇷 [el](../../../el/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) · 🇮🇹 [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) --- > Ntụaka nhazi zuru ezu maka OmniRoute. Maka ụdị dị nkenke, lee [Mmalite Ngwa Ngwa dị na README](../README.md#-quick-start). ## Ndepụta Ihe Dị n’Ime - [Ụzọ Nwụnye](#install-methods) - [Nhazi Ngwaọrụ CLI](#cli-tool-configuration) - [Nhazi Protocol (MCP + A2A)](#protocol-setup-mcp--a2a) - [Nhazi Oge Nchere](#timeout-configuration) - [Ọnọdụ Ọdụ Ụzọ Kewara Ekewa](#split-port-mode) - [Void Linux (xbps-src)](#void-linux-xbps-src-template) - [Iwepụ Nwụnye](#uninstalling) --- ## Ụzọ Nwụnye ### npm (a tụrụ aro) ```bash npm install -g omniroute omniroute ``` Dashboard ga-emeghe na `http://localhost:20128`, ebe URL ntọala API bụ `http://localhost:20128/v1`. ### pnpm ```bash pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core omniroute ``` > **Ndị ọrụ pnpm:** ọkọlọtọ `--allow-build` dị mkpa iji mee ka skripụ build nke sistemụ maka `better-sqlite3` na `@swc/core` rụọ ọrụ. A naghị akwado iwu `pnpm approve-builds -g` maka nrụnye global na pnpm v11. ### Arch Linux (AUR) ```bash yay -S omniroute-bin systemctl --user enable --now omniroute.service ``` [Ngwugwu AUR](https://aur.archlinux.org/packages/omniroute-bin) na-etinye OmniRoute ma na-enye ọrụ onye ọrụ systemd. ### Site na Source ```bash npm install PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev ``` > **Ihe ndetu maka Windows:** Na ndabara, OmniRoute na-eji `%APPDATA%\omniroute` mgbe ndekọ ochie `%USERPROFILE%\.omniroute` adịghị. Tọọ `DATA_DIR` iji họrọ ebe ndekọ data ọzọ. > **Ihe ndetu:** `npm install` na-emepụta `.env` na-akpaghị aka site na `.env.example` mgbe a na-agba ya nke mbụ. Nrụnye ndị na-esote agaghị edegharị `.env` dị adị, ya mere a ga-echekwa mgbanwe ahaziri iche. Iji malitegharịa ya site na ntọala mbụ, hichapụ `.env` tupu ịgba ya ọzọ. ### Docker Lee [Nduzi Docker](./DOCKER_GUIDE.md) maka nhazi Docker zuru ezu, gụnyere profaịlụ Compose na Caddy HTTPS. ### Ngwa Desktop (Electron) OmniRoute nwere wrapper desktop e wuru na Electron 41 + electron-builder 26.10. Skripụ ndị dị (na mgbọrọgwụ workspace): ```bash npm run electron:dev # Gbaa desktop nwere hot-reload npm run electron:build # Mee build maka OS dị ugbu a (a na-achọpụta ya na-akpaghị aka) npm run electron:build:win # Installer Windows (NSIS + portable) npm run electron:build:mac # macOS (dmg + zip, arm64+x64) npm run electron:build:linux # Linux (AppImage + deb + rpm) npm run electron:smoke:packaged # Mee smoke-test nke build e tinyere na ngwugwu ``` A na-etinye mwepụta installer desktop na GitHub Releases. Maka nkọwa zuru ezu banyere Electron (mbinye aka, IPC bridge, distros), lee [`ELECTRON_GUIDE.md`](./ELECTRON_GUIDE.md) _(e mepụtara n’oge ọzọ)_. ### Sava na-enweghị interface (CI/automation) Maka nhazi anaghị achọ onye na-elekọta ya (Docker, Kubernetes, CI), jiri: ```bash omniroute setup --non-interactive omniroute providers test-batch ``` Mgbe ejikọtara nke a na env vars (`INITIAL_PASSWORD`, `OMNIROUTE_WS_BRIDGE_SECRET`, wdg.), ọ na-enye gị ohere ịmalite instance OmniRoute nke enwere ike iji skripụ chịkwaa kpamkpam. ### Nhọrọ CLI | Iwu | Nkọwa | | ----------------------- | -------------------------------------------------------------- | | `omniroute` | Malite sava (`PORT=20128`, API na dashboard n’otu ọdụ ụzọ ahụ) | | `omniroute setup` | Nduzi mbido CLI maka okwuntughe na provider mbụ | | `omniroute doctor` | Mee nyocha ahụike mpaghara n’amaliteghị sava | | `omniroute providers` | Chọpụta, depụta, nyochaa, ma nwalee providers site na CLI | | `omniroute config` | Nhazi ngwaọrụ CLI — depụta, nweta, tọọ, ma nyochaa configs | | `omniroute status` | Dashboard ọnọdụ offline — ụdị, DB, ngwaọrụ, config | | `omniroute logs` | Zipụ logs ojiji site na API (na-akwado `--follow`) | | `omniroute update` | Lelee ma ọ bụ tinye mmelite OmniRoute | | `omniroute provider` | Jikwaa njikọ provider — tinye, depụta, wepụ, nwalee, ndabara | | `omniroute --port 3000` | Tọọ ọdụ ụzọ canonical/API ka ọ bụrụ 3000 | | `omniroute --mcp` | Malite sava MCP (stdio transport) | | `omniroute --no-open` | Emeghela browser na-akpaghị aka | | `omniroute --help` | Gosi enyemaka | Enwere ike iji ọkọlọtọ ma ọ bụ environment variables dee skripụ maka nhazi na-enweghị interface: ```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 ``` Gbaa diagnostics mpaghara n’emegheghị dashboard: ```bash omniroute doctor omniroute doctor --json omniroute doctor --no-liveness ``` Jikwaa providers site na SSH ma ọ bụ skripụ n’emegheghị dashboard: ```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 ``` --- ## Nhazi Ngwaọrụ CLI ### 1) Jikọọ Ndị Na-eweta Ọrụ ma Mepụta API Key 1. Mepee Dashboard → `Providers` wee jikọọ opekata mpe otu onye na-eweta ọrụ (OAuth ma ọ bụ API key). 2. Mepee Dashboard → `Endpoints` wee mepụta API key. 3. (Nhọrọ) Mepee Dashboard → `Combos` wee hazie usoro fallback gị. ### 2) Tụọ Ngwaọrụ Ide Koodu Gị Aka Ebe Kwesịrị Ekwesị ```txt Base URL: http://localhost:20128/v1 API Key: [detuo site na ibe Endpoint] Model: if/qwen3.8-max-preview (ma ọ bụ prefix provider/model ọ bụla) ``` Ọ bụrụ na editọ gị enweghị ike izipu `Authorization: Bearer ...`, jiri base ndakọrịta nwere token kama: ```txt Base URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/ Models URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/models Chat URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/chat/completions Ollama Tags URL: http://localhost:20128/api/v1/vscode/YOUR_KEY/api/tags ``` Ọ na-arụ ọrụ na Claude Code, Codex CLI, Cursor, Cline, OpenClaw, OpenCode, na SDK ndị dakọtara na OpenAI. #### Jiri `setup-*` hazie ya na-akpaghị aka Kama iji aka mado base URL na key, kwe ka OmniRoute dee nhazi nke ngwaọrụ ọ bụla site na katalọgụ model dị ugbu a. Otu command maka ngwaọrụ ọ bụla: ```bash omniroute setup-codex # profaịlụ ~/.codex/.config.toml omniroute setup-claude # ~/.claude/profiles//settings.json omniroute setup-opencode # ~/.config/opencode/opencode.json (dakọtara na openai) omniroute setup-cline # Ntọala Cline CLI + ndọtị VS Code omniroute setup-kilo # Kilo Code omniroute setup-continue # ~/.continue/config.yaml (Continue / cn) omniroute setup-cursor # na-ebipụta usoro ime ya n'ime ngwa Cursor omniroute setup-roo # mbubata Roo Code + ntụaka 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 ``` Nke ọ bụla na-anabata `--remote --api-key ` iji hazie ngwaọrụ mpaghara ka ọ jiri OmniRoute **dị anya**, yana `--dry-run` iji hụ ihe ga-eme tupu emee ya. Iji malite CLI nwere env ziri ezi etinyere n’ebughị ụzọ dee nhazi ọ bụla, jiri launcher izugbe `omniroute run ` (claude, codex, aider, goose, opencode, qwen, gemini); launcher ochie ndị akọwapụtara maka ngwaọrụ ọ bụla, `omniroute launch` (Claude Code) na `omniroute launch-codex` (Codex), ka dịkwa. Maka tebụl zuru ezu (ihe command ọ bụla na-ede, flag niile, mpaghara megide nke dị anya, ụkpụrụ base-URL `/v1`), lee **[Njikọ CLI](./CLI-INTEGRATIONS.md)**. Maka nkọwa nhazi zuru ezu maka ngwaọrụ ọ bụla (Claude Code, Codex CLI, Cursor, Cline, OpenClaw, Kilo Code, Copilot, na ndị ọzọ), lee **[Ntuziaka Ngwaọrụ CLI](../reference/CLI-TOOLS.md)** a raara nye ya. --- ## Nhazi Protokọl (MCP + A2A) ### Nhazi MCP (Model Context Protocol) Malite mbufe MCP na ọnọdụ stdio: ```bash omniroute --mcp ``` Usoro nkwado akwadoro: ```bash # 1. Malite sava MCP omniroute --mcp # 2. Site na klayenti MCP gị, kpọọ: omniroute_get_health # Kwesịrị iweghachi ọnọdụ ahụike sistemụ omniroute_list_combos # Kwesịrị iweghachi combos ndị na-arụ ọrụ # 3. Ma ọ bụ mee usoro E2E zuru ezu: npm run test:protocols:e2e ``` #### Nhazi Klayenti MCP **Claude Code:** ```bash claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream ``` **Cursor / Cline:** Tinye na ntọala MCP gị: ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"], "env": {} } } } ``` **Akwụkwọ MCP zuru ezu:** [README Sava MCP](../../open-sse/mcp-server/README.md) — ngwaọrụ 110, nhazi IDE, klayenti Python/TS/Go. ### Nhazi A2A (Agent-to-Agent Protocol) Nyochaa Agent Card: ```bash curl http://localhost:20128/.well-known/agent.json ``` Zipụ ọrụ: ```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":"Nye m nchịkọta oke ojiji dị nkenke."}]}}' ``` **Akwụkwọ A2A zuru ezu:** [README Sava A2A](../../src/lib/a2a/README.md) — JSON-RPC 2.0, nka, nnyefe na-aga n'ihu, usoro ndụ ọrụ. --- ## Nhazi Oge Nchere ### Oge Nchere Ndị Bụ Isi Maka ọtụtụ nrụnye, naanị mgbanwe abụọ ndị a ka ị chọrọ: | Mgbanwe | Ndabara | Ebumnuche | | ------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `REQUEST_TIMEOUT_MS` | `600000` | Ntọala oge nchere a na-ekekọrịta maka mmalite nzaghachi sitere na upstream, oge nchere Undici ndị ezoro ezo, arịrịọ akara mkpịsịaka TLS, yana oge nchere arịrịọ/proxy nke API bridge | | `STREAM_IDLE_TIMEOUT_MS` | na-eketa `REQUEST_TIMEOUT_MS` | Oghere oge kachasị n'etiti mpekere stream tupu OmniRoute akwụsị stream SSE | A ka na-echekwa ndakọrịta na ụdị ochie: `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS`, na mgbanwe oge nchere ndị ọzọ nke oyi akwa ọ bụla ka na-arụ ọrụ ma na-akagbu ntọala a na-ekekọrịta. ### Nkọwa Ndị Metụtara Provider Kpọmkwem Maka upstream ndị dakọtara na Claude Code (`anthropic-compatible-cc-*`), OmniRoute na-ewepụta header `X-Stainless-Timeout` a na-ezipụ site na oge nchere fetch e kpebiri, ka oge nchere ọgụgụ n'akụkụ provider kwekọọ na nhazi env gị. Maka reverse proxy nke ndị ọzọ dakọtara na Claude Code, OmniRoute na-edobe ntọala ndabara `anthropic-beta` ka ọ ghara ịdị oke ike ma, mgbe ahapụrụ `Client Cache Control` na `Auto`, ọ na-ebufe naanị akara `cache_control` ndị client nyere. Gbanye toggle "Enable redact-thinking beta" nke njikọ ọ bụla naanị mgbe upstream chọrọ kpọmkwem stream echiche Claude e zoro akụkụ ya. ### Nchịkwa Oge Nchere Ndị Dị Elu | Mgbanwe | Ndabara | Ebumnuche | | ---------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------- | | `FETCH_TIMEOUT_MS` | na-eketa `REQUEST_TIMEOUT_MS` | Oge nchere mmalite nzaghachi upstream a na-eji ruo mgbe header nzaghachi bịarutere | | `FETCH_HEADERS_TIMEOUT_MS` | na-eketa `FETCH_TIMEOUT_MS` | Oke oge Undici maka ịnata header nzaghachi upstream | | `FETCH_BODY_TIMEOUT_MS` | na-eketa `FETCH_TIMEOUT_MS` | Oke oge Undici n'etiti mpekere body upstream (`0` na-agbanyụ ya) | | `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Oge nchere njikọ TCP nke Undici | | `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Oge nchere socket keep-alive Undici mgbe ọ naghị arụ ọrụ | | `TLS_CLIENT_TIMEOUT_MS` | na-eketa `FETCH_TIMEOUT_MS` | Oge nchere maka arịrịọ akara mkpịsịaka TLS emere site na `wreq-js` | | `API_BRIDGE_PROXY_TIMEOUT_MS` | na-eketa `REQUEST_TIMEOUT_MS` ma ọ bụ `600000` | Oge nchere maka ibufe proxy `/v1` site na port API gaa na port dashboard | | `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `max(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | Oge nchere arịrịọ na-abata na sava API bridge | | `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Oge nchere header na-abata na sava API bridge | | `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Oge nchere keep-alive na sava API bridge | | `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Oge nchere mgbe socket anaghị arụ ọrụ na sava API bridge (`0` na-agbanyụ ya) | > **Rịba ama:** Maka arịrịọ streaming, `FETCH_TIMEOUT_MS` na-ekpuchi naanị nhazi njikọ / ichere nzaghachi mbụ sitere na upstream. Ozugbo stream malitere ịrụ ọrụ, OmniRoute ga-akwụsị ya naanị ma ọ bụrụ na ọ kwụsịrị n'ezie (`STREAM_IDLE_TIMEOUT_MS`) ma ọ bụ body Undici anọgideghị na-arụ ọrụ (`FETCH_BODY_TIMEOUT_MS`). ### Ndakọrịta Reverse Proxy Ọ bụrụ na ị na-agba OmniRoute n'azụ Nginx, Caddy, Cloudflare, ma ọ bụ reverse proxy ọzọ, hụ na oge nchere proxy dịkwa elu karịa oge nchere stream/fetch nke OmniRoute gị. --- ## Ọnọdụ Ọdụ-Ụzọ E Kewara Ekewa Mee ka API na Dashboard rụọ ọrụ na ọdụ-ụzọ dị iche iche maka ọnọdụ ndị dị elu (reverse proxy, netwọkụ container): ```bash PORT=20128 DASHBOARD_PORT=20129 omniroute # API: http://localhost:20128/v1 # Dashboard: http://localhost:20129 ``` --- ## Ndebiri Void Linux (xbps-src) Maka ndị ọrụ Void Linux, ị nwere ike iji `xbps-src` wuo ngwugwu nke sistemụ ahụ. Chekwaa blọk a dị ka `srcpkgs/omniroute/template`: ```bash # Faịlụ ndebiri maka '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" # Mepụta checksum ahụ ọzọ maka mbipụta ọ bụla site na iji: # 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 } ``` --- ## Iwepụ Ya | Iwu | Ihe ọ na-eme | | ------------------------ | ---------------------------------------------------------------------------------- | | `npm run uninstall` | Na-ewepụ ngwa sistemụ ahụ mana **na-edobe DB na nhazi gị** na `~/.omniroute`. | | `npm run uninstall:full` | Na-ewepụ ngwa ahụ MA **na-ehichapụ nhazi, igodo, na nchekwa data niile kpamkpam**. | > Maka ntuziaka zuru ezu banyere iwepụ ya site n'ụzọ niile, lee [UNINSTALL.md](./UNINSTALL.md).