# 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) · 🇰🇷 [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) · 🇵🇰 [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) · 🇰🇷 [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) · 🇵🇰 [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 ಇನ್ಸ್ಟೆನ್ಸ್ ರಚಿಸಿ ನೀವು ಆದ್ಯತೆ ನೀಡುವ 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 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 # === URL ಗಳು (ನಿಮ್ಮ ಡೊಮೇನ್ಗೆ ಬದಲಾಯಿಸಿ) === # ನಿಗದಿತ ಕಾರ್ಯಗಳು / ಸ್ವಯಂ-ಪಡೆಯುವಿಕೆಗಳಿಗಾಗಿ ಆಂತರಿಕ ಸರ್ವರ್ನಿಂದ-ಸರ್ವರ್ಗೆ ಮೂಲ URL. BASE_URL=http://127.0.0.1:20128 # OAuth ಕಾಲ್ಬ್ಯಾಕ್ಗಳು, ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಲಿಂಕ್ಗಳು ಮತ್ತು ರಚಿಸಲಾದ ಸಾರ್ವಜನಿಕ URL ಗಳಿಗಾಗಿ ಬಳಸುವ ಬ್ರೌಸರ್ಗೆ ಗೋಚರಿಸುವ URL. NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com # ರಚಿಸಲಾದ ಸಾರ್ವಜನಿಕ ಅಸೆಟ್ URL ಗಳಿಗಾಗಿ ಐಚ್ಛಿಕ ಸ್ಪಷ್ಟ ಸಾರ್ವಜನಿಕ ಮೂಲದ ಅತಿಕ್ರಮಣ. # OMNIROUTE_PUBLIC_BASE_URL=https://llms.seudominio.com # === ಕ್ಲೌಡ್ ಸಿಂಕ್ (ಐಚ್ಛಿಕ) === # 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 ಕಾಲಾವಧಿ ಮಿತಿ ಪರಿಸರ ವೇರಿಯೇಬಲ್ಗಳೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯಲ್ಲಿ ಇರಿಸಿ. ನೀವು `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 ``` `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/` ವರ್ಕರ್ ಪ್ರತ್ಯೇಕ ಕಂಪ್ಯಾನಿಯನ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿದೆ. --- ## ಪೋರ್ಟ್ ಸಾರಾಂಶ | ಪೋರ್ಟ್ | ಸೇವೆ | ಪ್ರವೇಶ | | ------ | ----------- | ---------------------------- | | 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 ಹೀಪ್ಗೆ ಮಿತಿ ವಿಧಿಸಿ** — ರನ್ಟೈಮ್ VMಗಿಂತ ದೊಡ್ಡ ಗರಿಷ್ಠ ಮಿತಿಯನ್ನು ಮಾಪನಾಂಕ ಮಾಡದಂತೆ `OMNIROUTE_MEMORY_MB` ಅನ್ನು (ಉದಾ. `512`) ಹೊಂದಿಸಿ. `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` ಮೂಲಕ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ** — 1 GB VMನಲ್ಲಿ ನಿಷ್ಕ್ರಿಯ ಸ್ಥಿತಿಯಲ್ಲಿರುವಾಗ OmniRoute ಸಾಮಾನ್ಯವಾಗಿ 200-400 MB RSS ಬಳಸುತ್ತದೆ.