# OmniRoute — Deployment Guide on VM with Cloudflare (اردو) 🌐 **Languages:** 🇺🇸 [English](../../../../ops/VM_DEPLOYMENT_GUIDE.md) · 🇪🇹 [am](../../../am/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇦🇿 [az](../../../az/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇩🇰 [da](../../../da/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇩🇪 [de](../../../de/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇬🇷 [el](../../../el/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇪🇸 [es](../../../es/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇪🇪 [et](../../../et/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇱 [he](../../../he/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇩 [id](../../../id/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇹 [it](../../../it/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇰🇭 [km](../../../km/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇲🇲 [my](../../../my/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇴 [no](../../../no/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [or](../../../or/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇱🇰 [si](../../../si/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [te](../../../te/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇹🇭 [th](../../../th/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/ops/VM_DEPLOYMENT_GUIDE.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../ops/VM_DEPLOYMENT_GUIDE.md) · 🇪🇹 [am](../../../am/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇦🇿 [az](../../../az/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇩🇰 [da](../../../da/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇩🇪 [de](../../../de/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇬🇷 [el](../../../el/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇪🇸 [es](../../../es/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇪🇪 [et](../../../et/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇱 [he](../../../he/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇩 [id](../../../id/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇹 [it](../../../it/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇰🇭 [km](../../../km/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇲🇲 [my](../../../my/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇴 [no](../../../no/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [or](../../../or/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇱🇰 [si](../../../si/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [te](../../../te/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇹🇭 [th](../../../th/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/ops/VM_DEPLOYMENT_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/ops/VM_DEPLOYMENT_GUIDE.md) Cloudflare کے ذریعے منظم کردہ ڈومین کے ساتھ VM (VPS) پر OmniRoute نصب اور ترتیب دینے کی مکمل رہنمائی۔ --- ## پیشگی تقاضے | آئٹم | کم از کم | تجویز کردہ | | ---------- | -------------------- | ---------------- | | **CPU** | 1 vCPU | 2 vCPU | | **RAM** | 1 GB | 2 GB | | **ڈسک** | 10 GB SSD | 25 GB SSD | | **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | | **ڈومین** | Cloudflare پر رجسٹرڈ | — | | **Docker** | Docker Engine 24+ | Docker 27+ | **آزمودہ فراہم کنندگان**: Akamai (Linode)، DigitalOcean، Vultr، Hetzner، AWS Lightsail۔ --- ## 1. VM کو ترتیب دیں ### 1.1 انسٹینس بنائیں اپنے ترجیحی VPS فراہم کنندہ پر: - Ubuntu 24.04 LTS منتخب کریں - کم از کم پلان (1 vCPU / 1 GB RAM) منتخب کریں - ایک مضبوط root پاس ورڈ مقرر کریں یا SSH کلید ترتیب دیں - **عوامی IP** نوٹ کریں (مثلاً، `203.0.113.10`) ### 1.2 SSH کے ذریعے منسلک ہوں ```bash ssh root@203.0.113.10 ``` ### 1.3 سسٹم اپ ڈیٹ کریں ```bash apt update && apt upgrade -y ``` ### 1.4 Docker انسٹال کریں ```bash # انحصارات انسٹال کریں apt install -y ca-certificates curl gnupg # سرکاری Docker ریپوزٹری شامل کریں install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $ (. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` ### 1.5 nginx انسٹال کریں ```bash apt install -y nginx ``` ### 1.6 فائر وال (UFW) ترتیب دیں ```bash ufw default deny incoming ufw default allow outgoing ufw allow 22/tcp # SSH ufw allow 80/tcp # HTTP (ری ڈائریکٹ) ufw allow 443/tcp # HTTPS ufw enable ``` > **مشورہ**: زیادہ سے زیادہ سیکیورٹی کے لیے، پورٹس 80 اور 443 کو صرف Cloudflare IPs تک محدود کریں۔ [اعلیٰ سیکیورٹی](#advanced-security) کا سیکشن دیکھیں۔ --- ## 2. OmniRoute انسٹال کریں ### 2.1 کنفیگریشن ڈائریکٹری بنائیں ```bash mkdir -p /opt/omniroute ``` ### 2.2 ماحولیاتی متغیرات کی فائل بنائیں ```bash cat > /opt/omniroute/.env << 'EOF' # === سیکیورٹی === JWT_SECRET=CHANGE-TO-A-UNIQUE-64-CHAR-SECRET-KEY INITIAL_PASSWORD=YourSecurePassword123! API_KEY_SECRET=REPLACE-WITH-ANOTHER-SECRET-KEY STORAGE_ENCRYPTION_KEY=REPLACE-WITH-THIRD-SECRET-KEY STORAGE_ENCRYPTION_KEY_VERSION=v1 MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT OMNIROUTE_WS_BRIDGE_SECRET=REPLACE-WITH-WS-BRIDGE-SECRET # پروڈکشن میں لازمی: Codex Responses WS bridge استعمال کرتا ہے # === ایپ === PORT=20128 NODE_ENV=production HOSTNAME=0.0.0.0 DATA_DIR=/app/data APP_LOG_TO_FILE=true AUTH_COOKIE_SECURE=true REQUIRE_API_KEY=false # === URLs (اپنے ڈومین سے تبدیل کریں) === # طے شدہ کاموں / خودکار fetches کے لیے اندرونی server-to-server بنیادی URL۔ BASE_URL=http://127.0.0.1:20128 # OAuth callbacks، dashboard لنکس، اور تیار کردہ عوامی URLs کے لیے براؤزر کو دکھائی دینے والا URL۔ NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com # تیار کردہ عوامی اثاثہ URLs کے لیے اختیاری واضح عوامی origin override۔ # OMNIROUTE_PUBLIC_BASE_URL=https://llms.seudominio.com # === Cloud Sync (اختیاری) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` > ⚠️ **اہم**: منفرد خفیہ کلیدیں بنائیں! ہر کلید کے لیے `openssl rand -hex 32` استعمال کریں۔ ### 2.3 کنٹینر شروع کریں ```bash docker pull diegosouzapw/omniroute:latest docker run -d \ --name omniroute \ --restart unless-stopped \ --env-file /opt/omniroute/.env \ -p 20128:20128 \ -v omniroute-data:/app/data \ diegosouzapw/omniroute:latest ``` ### 2.4 تصدیق کریں کہ یہ چل رہا ہے ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` اس میں یہ دکھائی دینا چاہیے: `[DB] SQLite database ready` اور `listening on port 20128`۔ --- ## 3. nginx کو ترتیب دیں (ریورس پراکسی) ### 3.1 SSL سرٹیفکیٹ بنائیں (Cloudflare Origin) Cloudflare ڈیش بورڈ میں: 1. **SSL/TLS → Origin Server** پر جائیں 2. **Create Certificate** پر کلک کریں 3. طے شدہ ترتیبات برقرار رکھیں (15 سال، \*.yourdomain.com) 4. **Origin Certificate** اور **Private Key** نقل کریں ```bash mkdir -p /etc/nginx/ssl # سرٹیفکیٹ یہاں چسپاں کریں nano /etc/nginx/ssl/origin.crt # نجی کلید یہاں چسپاں کریں nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` ### 3.2 Nginx کی ترتیب ```bash cat > /etc/nginx/sites-available/omniroute << 'NGINX' # طے شدہ سرور — IP کے ذریعے براہِ راست رسائی روکتا ہے server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; server_name _; return 444; } # OmniRoute — HTTPS server { listen 443 ssl; listen [::]:443 ssl; server_name llms.yourdomain.com; # اسے اپنے ڈومین سے تبدیل کریں ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; ssl_protocols TLSv1.2 TLSv1.3; client_max_body_size 100M; location / { proxy_pass http://127.0.0.1:20128; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket کی معاونت proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # SSE (سرور سے بھیجے گئے واقعات) — AI جوابات کی اسٹریمنگ proxy_buffering off; proxy_cache off; proxy_read_timeout 600s; proxy_send_timeout 600s; } } # HTTP → HTTPS ری ڈائریکٹ server { listen 80; listen [::]:80; server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` ریورس پراکسی کے اسٹریم ٹائم آؤٹس کو اپنے OmniRoute ٹائم آؤٹ env vars کے مطابق رکھیں۔ اگر آپ `FETCH_TIMEOUT_MS` / `STREAM_IDLE_TIMEOUT_MS` بڑھاتے ہیں تو `proxy_read_timeout` / `proxy_send_timeout` کو بھی اسی حد سے زیادہ بڑھائیں۔ OmniRoute، OAuth کال بیکس اور تیار کردہ عوامی لنکس کے لیے `NEXT_PUBLIC_BASE_URL` کو براؤزر کے سامنے موجود مستند origin کے طور پر استعمال کرتا ہے۔ تصدیق شدہ ڈیش بورڈ رائٹس، اسی origin کی درخواستوں اور سیشن سے منسلک CSRF تحفظ کا استعمال کرتی ہیں، اس لیے انہیں کسی جامد عوامی base URL کی ضرورت نہیں ہوتی۔ اوپر دیے گئے `X-Forwarded-*` ہیڈرز اب بھی مفید روٹنگ میٹا ڈیٹا ہیں، لیکن جب OAuth یا تیار کردہ براؤزر لنکس کو اس کی ضرورت ہو تو یہ واضح عوامی URL مقرر کرنے کا متبادل نہیں ہیں۔ `OMNIROUTE_TRUST_PROXY` صرف اسی صورت میں فعال کریں جب کلائنٹس براہِ راست OmniRoute تک رسائی حاصل نہ کر سکتے ہوں اور آپ کی پراکسی آنے والے forwarded ہیڈرز کو ہٹا کر دوبارہ بناتی ہو۔ ### 3.3 فعال کریں اور جانچیں ```bash # طے شدہ کنفیگریشن ہٹائیں rm -f /etc/nginx/sites-enabled/default # OmniRoute فعال کریں ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute # جانچیں اور دوبارہ لوڈ کریں nginx -t && systemctl reload nginx ``` --- ## 4. Cloudflare DNS ترتیب دیں ### 4.1 DNS ریکارڈ شامل کریں Cloudflare ڈیش بورڈ → DNS میں: | قسم | نام | مواد | پراکسی | | --- | ------ | ------------------------- | ------------- | | A | `llms` | `203.0.113.10` (VM کا IP) | ✅ پراکسی شدہ | ### 4.2 SSL ترتیب دیں **SSL/TLS → Overview** کے تحت: - موڈ: **Full (Strict)** **SSL/TLS → Edge Certificates** کے تحت: - ہمیشہ HTTPS استعمال کریں: ✅ فعال - کم از کم TLS ورژن: TLS 1.2 - خودکار HTTPS ری رائٹس: ✅ فعال ### 4.3 جانچ ```bash curl -sI https://llms.seudominio.com/health # HTTP/2 200 واپس آنا چاہیے ``` --- ## 5. آپریشنز اور دیکھ بھال ### نئے ورژن پر اپ گریڈ کریں ```bash docker pull diegosouzapw/omniroute:latest docker stop omniroute && docker rm omniroute docker run -d --name omniroute --restart unless-stopped \ --env-file /opt/omniroute/.env \ -p 20128:20128 \ -v omniroute-data:/app/data \ diegosouzapw/omniroute:latest ``` ### لاگز دیکھیں ```bash docker logs -f omniroute # ریئل ٹائم اسٹریم docker logs omniroute --tail 50 # آخری 50 سطریں ``` ### ڈیٹا بیس کا دستی بیک اپ ```bash # والیوم سے ڈیٹا ہوسٹ پر کاپی کریں docker cp omniroute:/app/data ./backup-$(date +%F) # یا پورے والیوم کو کمپریس کریں docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` ### بیک اپ سے بحال کریں ```bash docker stop omniroute docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine sh -c "rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /" docker start omniroute ``` --- ## 6. اعلیٰ سیکیورٹی ### nginx کو Cloudflare کے IPs تک محدود کریں ```bash cat > /etc/nginx/cloudflare-ips.conf << 'CF' # Cloudflare IPv4 رینجز — وقتاً فوقتاً اپ ڈیٹ کریں # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; set_real_ip_from 103.22.200.0/22; set_real_ip_from 103.31.4.0/22; set_real_ip_from 141.101.64.0/18; set_real_ip_from 108.162.192.0/18; set_real_ip_from 190.93.240.0/20; set_real_ip_from 188.114.96.0/20; set_real_ip_from 197.234.240.0/22; set_real_ip_from 198.41.128.0/17; set_real_ip_from 162.158.0.0/15; set_real_ip_from 104.16.0.0/13; set_real_ip_from 104.24.0.0/14; set_real_ip_from 172.64.0.0/13; set_real_ip_from 131.0.72.0/22; real_ip_header CF-Connecting-IP; CF ``` `http {}` بلاک کے اندر `nginx.conf` میں درج ذیل شامل کریں: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` ### fail2ban انسٹال کریں ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban # اسٹیٹس چیک کریں fail2ban-client status sshd ``` ### Docker پورٹ تک براہِ راست رسائی مسدود کریں ```bash # پورٹ 20128 تک براہِ راست بیرونی رسائی روکیں iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT # قواعد کو مستقل بنائیں apt install -y iptables-persistent netfilter-persistent save ``` --- ## 7. Cloudflare Workers پر تعینات کریں (اختیاری) VM کو براہِ راست ظاہر کیے بغیر Cloudflare Workers کے ذریعے ریموٹ رسائی کے لیے: ```bash # مقامی ریپوزٹری میں cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` ریپوزٹری میں موجود Cloudflare Tunnel کی مرحلہ وار رہنمائی کے لیے [TUNNELS_GUIDE.md](./TUNNELS_GUIDE.md) بھی دیکھیں۔ علیحدہ `omnirouteCloud/` worker ایک الگ معاون ریپوزٹری میں موجود ہے۔ --- ## پورٹ کا خلاصہ | پورٹ | سروس | رسائی | | ----- | ----------- | ------------------------------ | | 22 | SSH | عوامی (fail2ban کے ساتھ) | | 80 | nginx HTTP | ری ڈائریکٹ → HTTPS | | 443 | nginx HTTPS | Cloudflare Proxy کے ذریعے | | 20128 | OmniRoute | صرف Localhost (nginx کے ذریعے) | ## کم میموری / چھوٹے VPS کے لیے اصلاح چھوٹے VPS انسٹینسز (1 GB RAM یا اس سے کم) پر تعیناتیوں کے لیے: - **پسِ منظر کی سروسز غیر فعال کریں** — شیڈیولر، MCP سرور، اور وقتاً فوقتاً ہونے والے دیکھ بھال کے کاموں کو چھوڑنے کے لیے `OMNIROUTE_DISABLE_BACKGROUND_SERVICES=1` سیٹ کریں۔ `docs/reference/ENVIRONMENT.md` دیکھیں۔ - **SQLite WAL موڈ استعمال کریں** — یہ بطورِ ڈیفالٹ فعال ہے اور بیک وقت ریڈ آپریشنز کے دوران میموری کے عروجی استعمال کو کم کرتا ہے۔ - **V8 ہیپ کی حد مقرر کریں** — `OMNIROUTE_MEMORY_MB` (مثلاً `512`) سیٹ کریں تاکہ رن ٹائم VM سے زیادہ بڑی حد کی پیمائش نہ کرے۔ `docs/reference/ENVIRONMENT.md` دیکھیں۔ - **بھاری درخواستوں کا داخلہ ہیپ کی حد کے مطابق خودکار طور پر اسکیل ہوتا ہے** -- اوپر `OMNIROUTE_MEMORY_MB` سیٹ ہونے کے بعد، ان جیسٹ بائٹ بجٹ (`OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES`) کی حد اسی حدِ بالا سے خود اخذ ہوتی ہے، لہٰذا میموری کی پابندی والے VM کو کسی اضافی ٹیوننگ کے بغیر ہی بیک وقت درخواستوں کے لیے کم بجٹ ملتا ہے؛ اضافی درخواستوں کو میموری کے لیے مقابلہ کرنے کے بجائے `Retry-After` کے ساتھ دوبارہ قابلِ کوشش `503` جواب ملتا ہے۔ صرف اس صورت میں سابقہ `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` درخواست-تعداد کی حد مقرر کریں جب آپ کو اس کے علاوہ بھی ایک قطعی بالائی حد درکار ہو۔ - **VPS پر `next build` سے گریز کریں** — مقامی طور پر بلڈ کریں اور اسٹینڈ الون آؤٹ پٹ (`.next/standalone/`) تعینات کریں۔ - **`top` / `free -m` کے ذریعے نگرانی کریں** — OmniRoute عموماً 1 GB VM پر غیر فعال حالت میں 200-400 MB RSS استعمال کرتا ہے۔