# Termux Headless Setup (Oʻzbekcha) 🌐 **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) · 🇱🇹 [lt](../../../lt/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) · 🇻🇳 [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 Termux orqali Android qurilmasida interfeyssiz server sifatida ishlashi mumkin. Electron ish stoli ilovasi Termux muhitida qoʻllab-quvvatlanmaydi, biroq veb boshqaruv paneli va OpenAI bilan mos API mahalliy brauzerdan yoki shu tarmoqdagi boshqa qurilmalardan ishlaydi. ## Talablar Termux ilovasini F-Droid yoki GitHub relizlaridan oʻrnating, soʻng paketlarni yangilang va `better-sqlite3` kabi mahalliy bogʻliqliklar uchun zarur kompilyatsiya vositalarini oʻrnating. ```bash pkg update pkg upgrade pkg install nodejs python build-essential git ``` > **Node.js versiyasi:** OmniRoute uchun Node `>=22.22.2 <23 || >=24.0.0 <27` talab qilinadi (`package.json` ichidagi `engines` / `SUPPORTED_NODE_RANGE` bilan mos keladi). Termux paketidagi `nodejs-lts` odatda Node 20 LTS versiyasini taqdim etadi, u **endi qoʻllab-quvvatlanmaydi** — uning oʻrniga `pkg install nodejs` (joriy versiya) orqali oʻrnating va `node --version` natijasi 22.x/24.x+ qatoridagi versiyani koʻrsatishini tekshiring. Agar mahalliy paketni kompilyatsiya qilish muvaffaqiyatsiz tugasa, yuqoridagi `pkg install` buyrugʻini qayta ishga tushiring va keyin OmniRoute oʻrnatilishini yana bir bor sinab koʻring. ## Oʻrnatish Eng soʻnggi eʼlon qilingan paketni bevosita ishga tushiring: ```bash npx -y omniroute@latest ``` Uni global tarzda ham oʻrnatishingiz mumkin: ```bash npm install -g omniroute omniroute ``` ## Ishga tushirish OmniRouteʼni interfeyssiz server rejimida ishga tushiring: ```bash omniroute ``` yoki: ```bash npx omniroute ``` Boshqaruv paneli quyidagi manzilda ishlaydi: ```text http://localhost:20128 ``` Bu URL manzilini Android brauzerida oching. Agar mijozlarni Termux ichida ishga tushirsangiz, OpenAI bilan mos asosiy URL sifatida ayni host va portdan foydalaning. ## Fon rejimida ishlatish Oddiy fon jarayoni uchun: ```bash nohup omniroute > omniroute.log 2>&1 & ``` Uni toʻxtatish uchun: ```bash pkill -f omniroute ``` Qurilma yuklangandan keyin avtomatik ishga tushirish uchun Termux:Boot qoʻshimchasini oʻrnating va yuklash skriptini yarating: ```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 batareya optimallashtirishi uzoq vaqt ishlaydigan fon jarayonlarini toʻxtatishi mumkin. Agar server doim onlayn turishi kerak boʻlsa, Termux uchun batareya optimallashtirishini oʻchirib qoʻying. ## Boshqa qurilmalardan kirish WiFi tarmogʻidagi telefon IP manzilini aniqlang: ```bash ip addr show wlan0 ``` Keyin boshqaruv panelini boshqa qurilmadan oching: ```text http://PHONE_IP:20128 ``` Masalan: ```text http://192.168.1.50:20128 ``` Telefon va mijozni bir xil ishonchli tarmoqda saqlang. Agar OmniRouteʼni telefondan tashqaridagi tarmoq uchun ochsangiz, API kalitlari va boshqaruv paneli autentifikatsiyasini yoqing. ## Maʼlumotlar katalogi Odatiy holatda OmniRoute maʼlumotlarni Termux uy katalogida saqlaydi va Linux tizimida ishlatiladigan server maʼlumotlari yoʻli qoidalariga amal qiladi. Maʼlumotlar bazasini aniq belgilangan joyga joylashtirish uchun: ```bash export DATA_DIR="$HOME/.omniroute" omniroute ``` ## Cheklovlar - Electron Termux muhitida ishlamaydi. - Tizim treyi yoki ish stoli bilan integratsiya mavjud emas. - Bu faqat server uchun moʻljallangan sozlama: brauzerdagi boshqaruv panelidan foydalaning. - Mahalliy bogʻliqliklarni qurilmaning oʻzida kompilyatsiya qilish talab etilishi mumkin. - Xotirasi kam Android qurilmalarida bir vaqtdagi soʻrovlar sonini kamaytirish talab etilishi mumkin. - MITM/tizim sertifikati funksiyalari Termux tashqarisida Android darajasidagi ishonchli sertifikatlar ombori bilan ishlashni talab qilishi mumkin. ## Muammolarni bartaraf etish ### Qoʻllab-quvvatlanmaydigan platforma: android (har bir soʻrov HTTP 500 qaytaradi) **Alomat:** `omniroute` / `omniroute serve` `✔ OmniRoute ishlamoqda!` xabarini chiqaradi, ammo boshqaruv paneli yoki APIʼga yuborilgan har bir soʻrov oddiy `500 Internal Server Error` xatosini qaytaradi. `~/.omniroute/logs/application/app.log` boʻsh qoladi, `APP_LOG_LEVEL=debug` foydali hech narsa chiqarmaydi va javob tanasi JSON tafsilotlarisiz oddiy matndan (`Internal Server Error`) iborat boʻladi. **Sabab:** Ayrim Termux/Node toʻplamlari `process.platform === "android"` qiymatini qaytaradi. Next.js ichidagi `getCacheDirectory()` bu platformani qoʻllab-quvvatlamaydi: u `~/.cache` (yoki umumiy vaqtinchalik katalog) _avvaldan_ mavjud boʻlishini talab qiladi, aks holda instrumentation hukini yuklashda quyidagi xato yuz beradi: ```text Error: An error occurred while loading instrumentation hook: Unsupported platform: android ``` Huk umuman yuklanmagani sababli jurnalga yozish ham boshlanmaydi — shu bois 500 xatosining sababini aniqlash mutlaqo imkonsizdek koʻrinadi. Ushbu tekshiruv Android/Termux muhitida muvaffaqiyatli oʻtishi uchun OmniRoute Next.js ishga tushishidan oldin CLI kirish nuqtasida `~/.cache` katalogini yaratadi (va belgilanmagan boʻlsa, `XDG_CACHE_HOME` qiymatini oʻrnatadi). **Qoʻllab-quvvatlanadigan yechim (paketni yamoqlamasdan):** ```bash mkdir -p ~/.cache omniroute serve ``` OmniRouteʼning joriy toʻplamlarida CLI buni Android/Termux muhitida avtomatik bajaradi — yangidan bajarilgan `npx -y omniroute@latest` / global oʻrnatish qoʻlda bajariladigan bu qadamni talab qilmasligi kerak. Yangilagandan keyin ham xatoni koʻrsangiz, yuqoridagidek `~/.cache` katalogini bir marta yarating va qayta ishga tushiring. `process.platform = "linux"` qiymatini majburan belgilash uchun `dist/server.js` faylini **yamoqlamang**. Bunday paket yamogʻi har bir qayta oʻrnatish/yangilashda ustidan yoziladi va kesh katalogi mavjud boʻlgach, bunga ehtiyoj qolmaydi. ### better-sqlite3 kompilyatsiya xatolari Termux kompilyatsiya vositalari toʻplamini oʻrnating: ```bash pkg install nodejs python build-essential ``` Keyin quyidagini qayta ishga tushiring: ```bash npx -y omniroute@latest ``` ### Port allaqachon band Standart portda qaysi jarayon tinglayotganini tekshiring: ```bash ss -ltnp | grep 20128 ``` Eski jarayonni toʻxtating: ```bash pkill -f omniroute ``` ### Boshqaruv paneliga boshqa qurilmadan kirib boʻlmayapti Ikkala qurilma ham bir xil WiFi tarmogʻiga ulanganini tekshiring, soʻng Termux ichidan sinab koʻring: ```bash curl http://localhost:20128 ``` Agar mahalliy kirish ishlasa-yu, LAN orqali kirish ishlamasa, Android hotspot/WiFi izolyatsiyasini hamda telefondagi har qanday fayervol yoki VPN profilini tekshiring.