# 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) · 🇸🇰 [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) · 🇵🇰 [ur](../../../ur/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) · 🇸🇰 [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) · 🇵🇰 [ur](../../../ur/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 Instance එක සාදන්න ඔබ කැමති 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 Firewall (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 ports Cloudflare IP ලිපිනවලට පමණක් සීමා කරන්න. [උසස් ආරක්ෂාව](#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 (ඔබගේ වසම් නාමයට වෙනස් කරන්න) === # කාලසටහන්ගත කාර්යයන් / ස්වයං-fetch සඳහා අභ්යන්තර server-to-server මූලික URL එක. BASE_URL=http://127.0.0.1:20128 # OAuth callbacks, dashboard සබැඳි සහ ජනනය කළ පොදු URLs සඳහා භාවිත කරන browser-facing URL එක. NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com # ජනනය කළ පොදු asset URLs සඳහා විකල්ප පැහැදිලි public 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 Container එක ආරම්භ කරන්න ```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 (Server-Sent Events) — ප්රවාහනය වන 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 කාලසීමා පරිසර විචල්යයන් සමඟ ගැළපෙන ලෙස තබාගන්න. ඔබ `FETCH_TIMEOUT_MS` / `STREAM_IDLE_TIMEOUT_MS` වැඩි කරන්නේ නම්, `proxy_read_timeout` / `proxy_send_timeout` එම සීමාවට වඩා ඉහළ අගයකට වැඩි කරන්න. OAuth ඇමතුම්-ආපසු සහ ජනනය කරන ලද පොදු සබැඳි සඳහා, බ්රවුසරයට පෙනෙන කැනොනිකල් මූලය ලෙස OmniRoute විසින් `NEXT_PUBLIC_BASE_URL` භාවිත කරයි. සත්යාපිත උපකරණ පුවරු ලිවීම් එකම මූලයෙන් කෙරෙන ඉල්ලීම් සහ සැසියට බැඳුණු CSRF ආරක්ෂාව භාවිත කරන බැවින්, ඒවාට ස්ථිතික පොදු මූල URL එකක් අවශ්ය නොවේ. ඉහත `X-Forwarded-*` ශීර්ෂ තවමත් ප්රයෝජනවත් මාර්ගගත කිරීමේ පාරදත්ත වන නමුත්, OAuth හෝ ජනනය කළ බ්රවුසර සබැඳිවලට එය අවශ්ය වන විට පැහැදිලි පොදු URL එක සැකසීම සඳහා ඒවා ආදේශකයක් නොවේ. OmniRoute වෙත සේවාලාභීන්ට සෘජුව ළඟා විය නොහැකි නම් සහ ඔබගේ ප්රොක්සිය පැමිණෙන යොමු කළ ශීර්ෂ ඉවත් කර/නැවත ගොඩනඟන්නේ නම් පමණක් `OMNIROUTE_TRUST_PROXY` සබල කරන්න. ### 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 IP ලිපිනවලට සීමා කරන්න ```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 ``` `nginx.conf` හි `http {}` බ්ලොක් එක තුළට පහත සඳහන් දේ එක් කරන්න: ```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 හෝ ඊට අඩු) මත යෙදවීම් සඳහා: - **පසුබිම් සේවා අක්රිය කරන්න** — scheduler, MCP server සහ වාරික නඩත්තු කාර්යයන් මඟ හැරීමට `OMNIROUTE_DISABLE_BACKGROUND_SERVICES=1` ලෙස සකසන්න. `docs/reference/ENVIRONMENT.md` බලන්න. - **SQLite WAL ප්රකාරය භාවිත කරන්න** — මෙය පෙරනිමියෙන් සක්රිය කර ඇති අතර, සමගාමී කියවීම් අතරතුර උපරිම මතක භාවිතය අඩු කරයි. - **V8 heap එක සීමා කරන්න** — runtime එක VM එකට වඩා විශාල උපරිම සීමාවක් ක්රමාංකනය නොකරන ලෙස `OMNIROUTE_MEMORY_MB` (උදා. `512`) සකසන්න. `docs/reference/ENVIRONMENT.md` බලන්න. - **බර වැඩ ඇතුළත් කරගැනීම heap සීමාව අනුව ස්වයංක්රීයව පරිමාණය වේ** -- ඉහත `OMNIROUTE_MEMORY_MB` සැකසූ පසු, ingest byte අයවැය (`OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES`) එම උපරිම සීමාවෙන්ම ව්යුත්පන්න වේ. එබැවින්, මතකය සීමිත VM එකකට අමතර සුසර කිරීමකින් තොරවම කුඩා සමගාමී ඉල්ලීම් අයවැයක් ලැබේ; අතිරික්ත ඉල්ලීම් මතකය සඳහා තරග කිරීම වෙනුවට `Retry-After` සමඟ නැවත උත්සාහ කළ හැකි `503` ප්රතිචාරයක් ලබයි. ඊට අමතරව ඉල්ලීම් සංඛ්යාවට දැඩි උපරිම සීමාවක් අවශ්ය නම් පමණක් පැරණි `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` සීමාව සකසන්න. - **VPS එක මත `next build` ක්රියාත්මක කිරීමෙන් වළකින්න** — දේශීයව build කර standalone ප්රතිදානය (`.next/standalone/`) යොදවන්න. - **`top` / `free -m` සමඟ නිරීක්ෂණය කරන්න** — 1 GB VM එකක් මත අක්රියව පවතින විට OmniRoute සාමාන්යයෙන් 200-400 MB RSS භාවිත කරයි.