🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Cloudflare vasitəsilə idarə olunan domenlə OmniRoute-u VM-də (VPS) quraşdırmaq və konfiqurasiya etmək üçün tam təlimat.
| Element | Minimum | Tövsiyə olunan |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 GB | 2 GB |
| Disk | 10 GB SSD | 25 GB SSD |
| ƏS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
| Domen | Cloudflare-də qeydiyyatdan keçirilmiş | — |
| Docker | Docker Engine 24+ | Docker 27+ |
Sınaqdan keçirilmiş provayderlər: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail.
Üstünlük verdiyiniz VPS provayderində:
- Ubuntu 24.04 LTS seçin
- Minimum planı seçin (1 vCPU / 1 GB RAM)
- Güclü root parolu təyin edin və ya SSH açarını konfiqurasiya edin
- İctimai IP ünvanını qeyd edin (məsələn,
203.0.113.10)
ssh root@203.0.113.10apt update && apt upgrade -y# Asılılıqları quraşdırın
apt install -y ca-certificates curl gnupg
# Rəsmi Docker repozitoriyasını əlavə edin
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-pluginapt install -y nginxufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP (yönləndirmə)
ufw allow 443/tcp # HTTPS
ufw enableMəsləhət: Maksimum təhlükəsizlik üçün 80 və 443 portlarına girişi yalnız Cloudflare IP-ləri ilə məhdudlaşdırın. Qabaqcıl təhlükəsizlik bölməsinə baxın.
mkdir -p /opt/omniroutecat > /opt/omniroute/.env << 'EOF'
# === Təhlükəsizlik ===
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 # İstehsal mühitində TƏLƏB OLUNUR: Codex Responses WS körpüsü tərəfindən istifadə olunur
# === Tətbiq ===
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-lər (öz domeninizlə dəyişdirin) ===
# Planlaşdırılmış tapşırıqlar / özünə sorğular üçün daxili serverdən-serverə əsas URL.
BASE_URL=http://127.0.0.1:20128
# OAuth geri çağırışları, idarəetmə paneli keçidləri və yaradılan ictimai URL-lər üçün istifadə olunan brauzer yönümlü URL.
NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com
# Yaradılan ictimai resurs URL-ləri üçün istəyə bağlı açıq mənşə ünvanı əvəzetməsi.
# OMNIROUTE_PUBLIC_BASE_URL=https://llms.seudominio.com
# === Bulud sinxronizasiyası (istəyə bağlı) ===
# CLOUD_URL=https://cloud.omniroute.online
# NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online
EOF
⚠️ VACİB: Unikal məxfi açarlar yaradın! Hər açar üçünopenssl rand -hex 32istifadə edin.
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:latestdocker ps | grep omniroute
docker logs omniroute --tail 20Bu mesajlar göstərilməlidir: [DB] SQLite database ready və listening on port 20128.
Cloudflare idarəetmə panelində:
- SSL/TLS → Origin Server bölməsinə keçin
- Create Certificate düyməsinə klikləyin
- Standart parametrləri saxlayın (15 il, *.yourdomain.com)
- Origin Certificate və Private Key məzmunlarını kopyalayın
mkdir -p /etc/nginx/ssl
# Sertifikatı yapışdırın
nano /etc/nginx/ssl/origin.crt
# Məxfi açarı yapışdırın
nano /etc/nginx/ssl/origin.key
chmod 600 /etc/nginx/ssl/origin.keycat > /etc/nginx/sites-available/omniroute << 'NGINX'
# Standart server — IP vasitəsilə birbaşa girişi bloklayır
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; # Öz domeninizlə əvəz edin
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 dəstəyi
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# SSE (Server-Sent Events) — süni intellekt cavablarının axınla ötürülməsi
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
# HTTP → HTTPS yönləndirməsi
server {
listen 80;
listen [::]:80;
server_name llms.yourdomain.com;
return 301 https://$server_name$request_uri;
}
NGINXƏks proksinin axın taymautlarını OmniRoute taymaut mühit dəyişənləri ilə uyğunlaşdırın. Əgər
FETCH_TIMEOUT_MS / STREAM_IDLE_TIMEOUT_MS dəyərlərini artırırsınızsa, proxy_read_timeout / proxy_send_timeout
dəyərlərini də eyni həddən yuxarı artırın.
OmniRoute OAuth geri çağırışları və yaradılan ictimai keçidlər üçün brauzerin istifadə etdiyi kanonik mənbə kimi
NEXT_PUBLIC_BASE_URL dəyişənindən istifadə edir. Autentifikasiya edilmiş idarəetmə panelindəki yazma əməliyyatları eyni mənbəli sorğulardan
və sessiyaya bağlı CSRF qorumasından istifadə edir, buna görə də onlar statik ictimai əsas URL tələb etmir. Yuxarıdakı
X-Forwarded-* başlıqları marşrutlaşdırma metadatası kimi yenə də faydalıdır, lakin OAuth və ya yaradılan brauzer keçidləri üçün
açıq şəkildə ictimai URL təyin edilməsini əvəz etmir. OMNIROUTE_TRUST_PROXY parametrini yalnız OmniRoute
müştərilər tərəfindən birbaşa əlçatan olmadıqda və proksiniz daxil olan yönləndirmə başlıqlarını
silib yenidən qurduqda aktivləşdirin.
# Standart konfiqurasiyanı silin
rm -f /etc/nginx/sites-enabled/default
# OmniRoute-u aktivləşdirin
ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute
# Sınaqdan keçirin və yenidən yükləyin
nginx -t && systemctl reload nginxCloudflare idarəetmə panelində → DNS:
| Növ | Ad | Məzmun | Proksi |
|---|---|---|---|
| A | llms |
203.0.113.10 (VM IP ünvanı) |
✅ Proksidən keçirilir |
SSL/TLS → Overview bölməsində:
- Rejim: Full (Strict)
SSL/TLS → Edge Certificates bölməsində:
- Həmişə HTTPS istifadə et: ✅ Aktiv
- Minimum TLS versiyası: TLS 1.2
- Avtomatik HTTPS yenidən yazmaları: ✅ Aktiv
curl -sI https://llms.seudominio.com/health
# HTTP/2 200 qaytarmalıdırdocker 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:latestdocker logs -f omniroute # Real vaxt axını
docker logs omniroute --tail 50 # Son 50 sətir# Verilənləri həcmdən hosta köçürün
docker cp omniroute:/app/data ./backup-$(date +%F)
# Və ya bütün həcmi sıxışdırın
docker run --rm -v omniroute-data:/data -v $(pwd):/backup \
alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /datadocker 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 omniroutecat > /etc/nginx/cloudflare-ips.conf << 'CF'
# Cloudflare IPv4 diapazonları — mütəmadi olaraq yeniləyin
# 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;
CFAşağıdakı sətri nginx.conf faylındakı http {} blokuna əlavə edin:
include /etc/nginx/cloudflare-ips.conf;apt install -y fail2ban
systemctl enable fail2ban
systemctl start fail2ban
# Vəziyyəti yoxlayın
fail2ban-client status sshd# 20128 portuna xaricdən birbaşa girişin qarşısını alın
iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP
iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT
# Qaydaları qalıcı edin
apt install -y iptables-persistent
netfilter-persistent saveVM-i birbaşa açıq etmədən Cloudflare Workers vasitəsilə uzaqdan giriş üçün:
# Lokal repozitoriyada
cd omnirouteCloud
npm install
npx wrangler login
npx wrangler deployRepozitoriya daxilindəki Cloudflare Tunnel üzrə addım-addım təlimat üçün həmçinin TUNNELS_GUIDE.md sənədinə baxın. Müstəqil omnirouteCloud/ worker-i ayrıca köməkçi repozitoriyada yerləşir.
| Port | Xidmət | Giriş |
|---|---|---|
| 22 | SSH | İctimai (fail2ban ilə) |
| 80 | nginx HTTP | Yönləndirmə → HTTPS |
| 443 | nginx HTTPS | Cloudflare Proxy vasitəsilə |
| 20128 | OmniRoute | Yalnız localhost (nginx vasitəsilə) |
Kiçik VPS instanslarında (1 GB RAM və ya daha az) yerləşdirmələr üçün:
- Fon xidmətlərini deaktiv edin — planlaşdırıcını, MCP serverini və dövri texniki xidmət tapşırıqlarını ötürmək üçün
OMNIROUTE_DISABLE_BACKGROUND_SERVICES=1təyin edin.docs/reference/ENVIRONMENT.mdsənədinə baxın. - SQLite WAL rejimindən istifadə edin — standart olaraq aktivdir və paralel oxumalar zamanı pik yaddaş istifadəsini azaldır.
- V8 heap ölçüsünü məhdudlaşdırın — icra mühitinin VM-dən böyük limit kalibrləməməsi üçün
OMNIROUTE_MEMORY_MBparametrini (məsələn,512) təyin edin.docs/reference/ENVIRONMENT.mdsənədinə baxın. - Ağır sorğuların qəbulu heap limitinə uyğun avtomatik miqyaslanır -- yuxarıda
OMNIROUTE_MEMORY_MBtəyin edildikdən sonra daxiletmə bayt büdcəsi (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES) eyni limit əsasında avtomatik hesablanır. Beləliklə, yaddaşı məhdud VM əlavə tənzimləmə olmadan paralel sorğular üçün daha kiçik büdcə əldə edir; artıq sorğular isə yaddaş uğrunda rəqabət aparmaq əvəzinəRetry-Afterilə birlikdə təkrar cəhd edilə bilən503cavabı alır. Yalnız bunun üzərinə sərt limit qoymaq lazımdırsa, köhnəOMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHTsorğu sayı limitini təyin edin. - VPS-də
next buildişlətməyin — qurmanı lokal olaraq yaradın və müstəqil çıxışı (.next/standalone/) yerləşdirin. top/free -milə monitorinq aparın — OmniRoute adətən 1 GB-lıq VM-də boşdayanma zamanı 200-400 MB RSS istifadə edir.