# Termux Headless Setup (Lietuvių) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/TERMUX_GUIDE.md) · 🇪🇹 [am](../../../am/docs/guides/TERMUX_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/TERMUX_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/TERMUX_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/TERMUX_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/TERMUX_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/guides/TERMUX_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/TERMUX_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/TERMUX_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/TERMUX_GUIDE.md) · 🇬🇷 [el](../../../el/docs/guides/TERMUX_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/TERMUX_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/TERMUX_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/TERMUX_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/TERMUX_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/TERMUX_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/TERMUX_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/guides/TERMUX_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/TERMUX_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/TERMUX_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/TERMUX_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/guides/TERMUX_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/TERMUX_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/TERMUX_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/TERMUX_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/TERMUX_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/TERMUX_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/guides/TERMUX_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/TERMUX_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/TERMUX_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/TERMUX_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/TERMUX_GUIDE.md) · 🇲🇲 [my](../../../my/docs/guides/TERMUX_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/TERMUX_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/TERMUX_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/guides/TERMUX_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/TERMUX_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/TERMUX_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/TERMUX_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/TERMUX_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/TERMUX_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/TERMUX_GUIDE.md) · 🇱🇰 [si](../../../si/docs/guides/TERMUX_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/TERMUX_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/TERMUX_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/TERMUX_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/TERMUX_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/TERMUX_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/TERMUX_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/TERMUX_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/TERMUX_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/TERMUX_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/TERMUX_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/guides/TERMUX_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/TERMUX_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/TERMUX_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/TERMUX_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/TERMUX_GUIDE.md) --- „OmniRoute“ gali veikti kaip serveris be grafinės sąsajos „Android“ sistemoje per „Termux“. „Electron“ darbalaukio programa „Termux“ aplinkoje nepalaikoma, tačiau žiniatinklio valdymo skydelį ir su „OpenAI“ suderinamą API galima naudoti vietinėje naršyklėje arba kituose to paties tinklo įrenginiuose. ## Būtinosios sąlygos Įdiekite „Termux“ iš „F-Droid“ arba „GitHub“ leidimų, tada atnaujinkite paketus ir įdiekite kūrimo įrankius, kurių reikia savosioms priklausomybėms, pvz., `better-sqlite3`. ```bash pkg update pkg upgrade pkg install nodejs python build-essential git ``` > **Node.js versija:** „OmniRoute“ reikia Node `>=22.22.2 <23 || >=24.0.0 <27` (atitinka `engines`, nurodytą `package.json` / `SUPPORTED_NODE_RANGE`). „Termux“ pakete `nodejs-lts` paprastai pateikiama Node 20 LTS, kuri **nebepalaikoma** — vietoje jos įdiekite dabartinę versiją naudodami `pkg install nodejs` ir patikrinkite, ar `node --version` nurodo 22.x / 24.x ar naujesnę versiją. Jei nepavyksta sukompiliuoti savųjų paketų, dar kartą paleiskite pirmiau pateiktą komandą `pkg install`, o tada pakartokite „OmniRoute“ diegimą. ## Diegimas Tiesiogiai paleiskite naujausią paskelbtą paketą: ```bash npx -y omniroute@latest ``` Jį taip pat galite įdiegti visuotinai: ```bash npm install -g omniroute omniroute ``` ## Paleidimas Paleiskite „OmniRoute“ serverio be grafinės sąsajos režimu: ```bash omniroute ``` arba: ```bash npx omniroute ``` Valdymo skydelis pasiekiamas adresu: ```text http://localhost:20128 ``` Atverkite šį URL „Android“ naršyklėje. Jei klientus paleidžiate „Termux“ aplinkoje, kaip su „OpenAI“ suderinamą bazinį URL naudokite tą patį pagrindinį kompiuterį ir prievadą. ## Vykdymas fone Paprastam foniniam procesui paleisti: ```bash nohup omniroute > omniroute.log 2>&1 & ``` Norėdami jį sustabdyti: ```bash pkill -f omniroute ``` Norėdami automatiškai paleisti įrenginį įjungus, įdiekite „Termux:Boot“ priedą ir sukurkite paleidimo scenarijų: ```bash mkdir -p ~/.termux/boot cat > ~/.termux/boot/omniroute.sh <<'EOF' #!/data/data/com.termux/files/usr/bin/sh cd "$HOME" nohup omniroute > "$HOME/omniroute.log" 2>&1 & EOF chmod +x ~/.termux/boot/omniroute.sh ``` „Android“ akumuliatoriaus optimizavimas gali sustabdyti ilgai veikiančius foninius procesus. Jei serveris turi nuolat veikti, išjunkite „Termux“ akumuliatoriaus optimizavimą. ## Prieiga iš kitų įrenginių Sužinokite telefono IP adresą „WiFi“ tinkle: ```bash ip addr show wlan0 ``` Tada atverkite valdymo skydelį kitame įrenginyje: ```text http://PHONE_IP:20128 ``` Pavyzdžiui: ```text http://192.168.1.50:20128 ``` Telefoną ir kliento įrenginį laikykite prijungtus prie to paties patikimo tinklo. Jei „OmniRoute“ padarote pasiekiamą už telefono ribų, įjunkite API raktus ir valdymo skydelio autentifikavimą. ## Duomenų katalogas Pagal numatytuosius nustatymus „OmniRoute“ saugo duomenis „Termux“ namų kataloge, vadovaudamasi tokia pačia serverio duomenų kelio elgsena kaip „Linux“ sistemoje. Norėdami duomenų bazę laikyti aiškiai nurodytoje vietoje: ```bash export DATA_DIR="$HOME/.omniroute" omniroute ``` ## Apribojimai - „Electron“ neveikia „Termux“ aplinkoje. - Nėra sistemos dėklo ar integracijos su darbalaukiu. - Ši sąranka skirta tik serveriui: naudokite naršyklėje veikiantį valdymo skydelį. - Savąsias priklausomybes gali tekti kompiliuoti vietoje. - Mažai atminties turinčiuose „Android“ įrenginiuose gali reikėti sumažinti vienalaikių užklausų skaičių. - MITM / sistemos sertifikatų funkcijoms gali reikėti atlikti „Android“ patikimų sertifikatų saugyklos pakeitimus už „Termux“ ribų. ## Trikčių šalinimas ### Nepalaikoma platforma: android (kiekviena užklausa grąžina HTTP 500) **Požymis:** `omniroute` / `omniroute serve` išveda `✔ OmniRoute is running!`, tačiau kiekviena valdymo skydelio arba API užklausa grąžina tik `500 Internal Server Error`. Failas `~/.omniroute/logs/application/app.log` lieka tuščias, `APP_LOG_LEVEL=debug` neišveda nieko naudingo, o atsakymo turinys yra paprastasis tekstas (`Internal Server Error`) be išsamios JSON informacijos. **Priežastis:** kai kurie „Termux“ / Node dariniai nurodo `process.platform === "android"`. „Next.js“ funkcija `getCacheDirectory()` šios platformos neapdoroja: jai reikia, kad `~/.cache` (arba bendrasis laikinųjų failų katalogas) _jau_ egzistuotų, antraip įkeliant instrumentavimo kablį įvyksta klaida: ```text Error: An error occurred while loading instrumentation hook: Unsupported platform: android ``` Kadangi kablys neįkeliamas, žurnalų rašymas nepradedamas — todėl 500 klaidos priežasties atrodo visiškai neįmanoma nustatyti. Prieš paleidžiant „Next.js“, „OmniRoute“ CLI įėjimo taške sukuria `~/.cache` (ir nustato `XDG_CACHE_HOME`, jei jis nenustatytas), kad šis tikrinimas „Android“ / „Termux“ aplinkoje būtų sėkmingas. **Palaikomas sprendimas (nekeičiant paketo):** ```bash mkdir -p ~/.cache omniroute serve ``` Dabartiniuose „OmniRoute“ dariniuose CLI tai automatiškai atlieka „Android“ / „Termux“ aplinkoje — iš naujo paleidus `npx -y omniroute@latest` arba įdiegus visuotinai, šio veiksmo rankiniu būdu atlikti neturėtų reikėti. Jei po naujinimo klaida vis tiek rodoma, vieną kartą sukurkite `~/.cache`, kaip nurodyta pirmiau, ir paleiskite iš naujo. **Nekeiskite** `dist/server.js`, kad priverstinai nustatytumėte `process.platform = "linux"`. Toks paketo pakeitimas perrašomas kiekvieną kartą diegiant iš naujo ar naujinant ir nėra reikalingas, kai podėlio katalogas jau egzistuoja. ### better-sqlite3 kūrimo klaidos Įdiekite „Termux“ kūrimo įrankių grandinę: ```bash pkg install nodejs python build-essential ``` Tada dar kartą paleiskite: ```bash npx -y omniroute@latest ``` ### Prievadas jau naudojamas Patikrinkite, kas klausosi numatytojo prievado: ```bash ss -ltnp | grep 20128 ``` Sustabdykite seną procesą: ```bash pkill -f omniroute ``` ### Valdymo skydelis nepasiekiamas iš kito įrenginio Patikrinkite, ar abu įrenginiai prijungti prie to paties „WiFi“ tinklo, tada išbandykite „Termux“ aplinkoje: ```bash curl http://localhost:20128 ``` Jei vietinė prieiga veikia, o LAN prieiga — ne, patikrinkite „Android“ viešosios interneto prieigos taško / „WiFi“ izoliavimą ir visas telefone esančias užkardos arba VPN profilio nuostatas.