# Termux Headless Setup (اردو) 🌐 **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) · 🇺🇿 [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 کو Termux کے ذریعے Android پر ہیڈ لیس سرور کے طور پر چلایا جا سکتا ہے۔ Electron ڈیسک ٹاپ ایپ Termux میں معاونت یافتہ نہیں ہے، لیکن ویب ڈیش بورڈ اور OpenAI سے مطابقت رکھنے والی API مقامی براؤزر یا اسی نیٹ ورک پر موجود دیگر ڈیوائسز سے کام کرتی ہیں۔ ## پیشگی ضروریات Termux کو F-Droid یا GitHub ریلیزز سے انسٹال کریں، پھر پیکیجز اپ ڈیٹ کریں اور `better-sqlite3` جیسی مقامی ڈیپنڈنسیز کے لیے درکار بلڈ ٹولز انسٹال کریں۔ ```bash pkg update pkg upgrade pkg install nodejs python build-essential git ``` > **Node.js ورژن:** OmniRoute کے لیے Node `>=22.22.2 <23 || >=24.0.0 <27` درکار ہے (یہ `package.json` / `SUPPORTED_NODE_RANGE` میں موجود `engines` سے مطابقت رکھتا ہے)۔ Termux کا `nodejs-lts` عموماً Node 20 LTS فراہم کرتا ہے، جو **اب معاونت یافتہ نہیں ہے** — اس کے بجائے `pkg install nodejs` (موجودہ ورژن) انسٹال کریں اور تصدیق کریں کہ `node --version` کسی 22.x/24.x+ لائن کی اطلاع دیتا ہے۔ اگر مقامی پیکیج کی کمپائلیشن ناکام ہو جائے تو اوپر دی گئی `pkg install` کمانڈ دوبارہ چلائیں، پھر OmniRoute کی انسٹالیشن دوبارہ آزمائیں۔ ## انسٹالیشن تازہ ترین شائع شدہ پیکیج کو براہِ راست چلائیں: ```bash npx -y omniroute@latest ``` آپ اسے عالمی طور پر بھی انسٹال کر سکتے ہیں: ```bash npm install -g omniroute omniroute ``` ## چلانا OmniRoute کو ہیڈ لیس سرور موڈ میں شروع کریں: ```bash omniroute ``` یا: ```bash npx omniroute ``` ڈیش بورڈ درج ذیل پتے پر سن رہا ہوتا ہے: ```text http://localhost:20128 ``` اس URL کو Android براؤزر میں کھولیں۔ اگر آپ Termux کے اندر کلائنٹس چلاتے ہیں تو OpenAI سے مطابقت رکھنے والے بنیادی URL کے طور پر یہی ہوسٹ اور پورٹ استعمال کریں۔ ## پس منظر میں اجرا ایک سادہ پسِ منظر پراسیس کے لیے: ```bash nohup omniroute > omniroute.log 2>&1 & ``` اسے روکنے کے لیے: ```bash pkill -f omniroute ``` ڈیوائس بوٹ ہونے کے بعد خودکار آغاز کے لیے Termux:Boot ایڈ آن انسٹال کریں اور ایک بوٹ اسکرپٹ بنائیں: ```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 کی بیٹری آپٹیمائزیشن طویل عرصے تک چلنے والے پسِ منظر پراسیسز کو روک سکتی ہے۔ اگر سرور کو آن لائن رکھنا مقصود ہو تو Termux کے لیے بیٹری آپٹیمائزیشن غیر فعال کر دیں۔ ## دیگر ڈیوائسز سے رسائی WiFi نیٹ ورک پر فون کا IP پتہ معلوم کریں: ```bash ip addr show wlan0 ``` پھر کسی دوسری ڈیوائس سے ڈیش بورڈ کھولیں: ```text http://PHONE_IP:20128 ``` مثال کے طور پر: ```text http://192.168.1.50:20128 ``` فون اور کلائنٹ کو ایک ہی قابلِ اعتماد نیٹ ورک پر رکھیں۔ اگر آپ OmniRoute کو فون سے باہر قابلِ رسائی بناتے ہیں تو API کیز اور ڈیش بورڈ کی توثیق فعال کریں۔ ## ڈیٹا ڈائریکٹری بطور ڈیفالٹ، OmniRoute ڈیٹا کو Termux کی ہوم ڈائریکٹری کے تحت محفوظ کرتا ہے اور Linux پر استعمال ہونے والے اسی سرور سائیڈ ڈیٹا پاتھ کے طرزِ عمل کی پیروی کرتا ہے۔ ڈیٹابیس کو کسی واضح مقام پر رکھنے کے لیے: ```bash export DATA_DIR="$HOME/.omniroute" omniroute ``` ## حدود - Electron، Termux میں نہیں چلتا۔ - کوئی سسٹم ٹرے یا ڈیسک ٹاپ انٹیگریشن موجود نہیں ہے۔ - یہ سیٹ اپ صرف سرور کے لیے ہے: براؤزر ڈیش بورڈ استعمال کریں۔ - مقامی ڈیپنڈنسیز کے لیے مقامی کمپائلیشن درکار ہو سکتی ہے۔ - کم میموری والی Android ڈیوائسز پر بیک وقت درخواستوں کی تعداد کم رکھنے کی ضرورت پڑ سکتی ہے۔ - MITM/سسٹم سرٹیفکیٹ کی خصوصیات کے لیے Termux سے باہر Android کی سطح پر ٹرسٹ اسٹور کا کام درکار ہو سکتا ہے۔ ## مسائل کا حل ### غیر معاون پلیٹ فارم: android (ہر درخواست HTTP 500 لوٹاتی ہے) **علامت:** `omniroute` / `omniroute serve`، `✔ OmniRoute is running!` پرنٹ کرتا ہے، لیکن ڈیش بورڈ یا API کی ہر درخواست سادہ `500 Internal Server Error` لوٹاتی ہے۔ `~/.omniroute/logs/application/app.log` خالی رہتی ہے، `APP_LOG_LEVEL=debug` کوئی مفید چیز پرنٹ نہیں کرتا، اور رسپانس باڈی بغیر کسی JSON تفصیل کے سادہ متن (`Internal Server Error`) ہوتی ہے۔ **وجہ:** بعض Termux/Node بلڈز `process.platform === "android"` کی اطلاع دیتے ہیں۔ Next.js کا `getCacheDirectory()` اس پلیٹ فارم کو ہینڈل نہیں کرتا: اس کے لیے ضروری ہے کہ `~/.cache` (یا کوئی عمومی tmp ڈائریکٹری) _پہلے سے_ موجود ہو، بصورتِ دیگر انسٹرومینٹیشن ہک لوڈ کرتے وقت یہ درج ذیل خرابی کے ساتھ ناکام ہو جاتا ہے: ```text Error: An error occurred while loading instrumentation hook: Unsupported platform: android ``` چونکہ ہک کبھی لوڈ نہیں ہوتا، اس لیے لاگنگ کبھی شروع نہیں ہوتی — نتیجتاً 500 کی خرابی کی تشخیص مکمل طور پر ناممکن دکھائی دیتی ہے۔ OmniRoute، Next.js شروع ہونے سے پہلے CLI انٹری پوائنٹ میں `~/.cache` بناتا ہے (اور سیٹ نہ ہونے کی صورت میں `XDG_CACHE_HOME` سیٹ کرتا ہے)، تاکہ یہ جانچ Android/Termux پر کامیاب ہو سکے۔ **معاونت یافتہ حل (پیکیج میں پیچ کیے بغیر):** ```bash mkdir -p ~/.cache omniroute serve ``` OmniRoute کے موجودہ بلڈز میں CLI یہ کام Android/Termux پر خودکار طور پر کرتا ہے — ایک تازہ `npx -y omniroute@latest` / عالمی انسٹالیشن میں دستی مرحلے کی ضرورت نہیں ہونی چاہیے۔ اگر اپ گریڈ کرنے کے بعد بھی یہ خرابی نظر آئے تو اوپر دکھائے گئے طریقے کے مطابق ایک مرتبہ `~/.cache` بنائیں اور دوبارہ شروع کریں۔ `process.platform = "linux"` کو زبردستی نافذ کرنے کے لیے `dist/server.js` میں پیچ **نہ کریں**۔ اس قسم کا پیکیج پیچ ہر دوبارہ انسٹالیشن/اپ گریڈ پر اوور رائٹ ہو جاتا ہے اور کیش ڈائریکٹری موجود ہونے کے بعد اس کی ضرورت نہیں رہتی۔ ### better-sqlite3 کی بلڈ خرابیاں Termux بلڈ ٹول چین انسٹال کریں: ```bash pkg install nodejs python build-essential ``` پھر دوبارہ چلائیں: ```bash npx -y omniroute@latest ``` ### پورٹ پہلے ہی زیرِ استعمال ہے دیکھیں کہ ڈیفالٹ پورٹ پر کون سا پراسیس سن رہا ہے: ```bash ss -ltnp | grep 20128 ``` پرانے پراسیس کو روکیں: ```bash pkill -f omniroute ``` ### دوسری ڈیوائس سے ڈیش بورڈ تک رسائی نہیں ہو رہی تصدیق کریں کہ دونوں ڈیوائسز ایک ہی WiFi نیٹ ورک پر ہیں، پھر Termux سے جانچ کریں: ```bash curl http://localhost:20128 ``` اگر مقامی رسائی کام کرتی ہے لیکن LAN رسائی نہیں کرتی تو Android ہاٹ اسپاٹ/WiFi آئسولیشن اور فون پر موجود کسی بھی فائر وال یا VPN پروفائل کو چیک کریں۔