🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 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 · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 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
Cikakken jagora don girka da saita OmniRoute a kan VM (VPS) mai yankin yanar gizo da ake sarrafawa ta Cloudflare.
| Abu | Mafi ƙaranci | Wanda aka ba da shawara |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 GB | 2 GB |
| Faifai | 10 GB SSD | 25 GB SSD |
| OS | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
| Domain | An yi rajista a Cloudflare | — |
| Docker | Docker Engine 24+ | Docker 27+ |
Masu samar da sabis da aka gwada: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail.
A wurin mai samar da VPS da ka fi so:
- Zaɓi Ubuntu 24.04 LTS
- Zaɓi tsari mafi ƙaranci (1 vCPU / 1 GB RAM)
- Saita kalmar sirrin root mai ƙarfi ko saita maɓallin SSH
- Rubuta public IP ɗin (misali,
203.0.113.10)
ssh root@203.0.113.10apt update && apt upgrade -y# Shigar da abubuwan dogaro
apt install -y ca-certificates curl gnupg
# Ƙara ma'ajiyar Docker ta hukuma
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 (turawa)
ufw allow 443/tcp # HTTPS
ufw enableShawara: Don samun tsaro mafi ƙarfi, taƙaita tashoshin 80 da 443 ga IP na Cloudflare kawai. Duba sashen Tsaro na Ci-gaba.
mkdir -p /opt/omniroutecat > /opt/omniroute/.env << 'EOF'
# === Tsaro ===
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 # ANA BUƘATA a production: Codex Responses WS bridge ne ke amfani da shi
# === Manhaja ===
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 (canza zuwa domain ɗinka) ===
# Base URL na cikin gida tsakanin server-da-server don ayyukan da aka tsara / self-fetches.
BASE_URL=http://127.0.0.1:20128
# URL da browser ke gani wanda ake amfani da shi don OAuth callbacks, dashboard links, da public URLs da aka samar.
NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com
# Zaɓin bayyanannen public origin override don public asset URLs da aka samar.
# OMNIROUTE_PUBLIC_BASE_URL=https://llms.seudominio.com
# === Cloud Sync (na zaɓi) ===
# CLOUD_URL=https://cloud.omniroute.online
# NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online
EOF
⚠️ MUHIMMI: Samar da maɓallan sirri na musamman! Yi amfani daopenssl rand -hex 32ga kowane maɓalli.
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 20Ya kamata ya nuna: [DB] SQLite database ready da listening on port 20128.
A cikin dashboard na Cloudflare:
- Je zuwa SSL/TLS → Origin Server
- Danna Create Certificate
- Bar saitunan asali (shekaru 15, *.yourdomain.com)
- Kwafi Origin Certificate da Private Key
mkdir -p /etc/nginx/ssl
# Liƙa takardar shaidar
nano /etc/nginx/ssl/origin.crt
# Liƙa maɓallin sirri
nano /etc/nginx/ssl/origin.key
chmod 600 /etc/nginx/ssl/origin.keycat > /etc/nginx/sites-available/omniroute << 'NGINX'
# Sabar asali — tana hana shiga kai tsaye ta hanyar 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; # Canja zuwa domain ɗinka
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;
# Tallafin WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# SSE (Abubuwan da Saba ke Aikowa) — aika martanin AI kai tsaye
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}
# Mayar da HTTP → HTTPS
server {
listen 80;
listen [::]:80;
server_name llms.yourdomain.com;
return 301 https://$server_name$request_uri;
}
NGINXKa daidaita wa'adin ƙarewar lokaci na rafin reverse-proxy da env vars na wa'adin ƙarewar lokaci na OmniRoute. Idan ka ƙara
FETCH_TIMEOUT_MS / STREAM_IDLE_TIMEOUT_MS, ƙara proxy_read_timeout / proxy_send_timeout
sama da wannan iyaka.
OmniRoute yana amfani da NEXT_PUBLIC_BASE_URL a matsayin tushen adireshin da browser ke fuskanta don callbacks na OAuth
da hanyoyin haɗin jama'a da aka samar. Rubuce-rubucen dashboard da aka tabbatar da izini suna amfani da buƙatun same-origin
tare da kariyar CSRF mai alaƙa da session, saboda haka ba sa buƙatar tsayayyen URL na jama'a. Headers na
X-Forwarded-* da ke sama har yanzu metadata ne masu amfani wajen routing, amma ba sa maye gurbin
saita takamaiman URL na jama'a lokacin da OAuth ko hanyoyin haɗin browser da aka samar suke buƙatarsa. Kunna
OMNIROUTE_TRUST_PROXY kawai idan clients ba za su iya isa ga OmniRoute kai tsaye ba kuma proxy ɗinka
yana cirewa/sake gina forwarded headers masu shigowa.
# Cire tsarin saitin asali
rm -f /etc/nginx/sites-enabled/default
# Kunna OmniRoute
ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute
# Gwada kuma sake lodawa
nginx -t && systemctl reload nginxA cikin dashboard na Cloudflare → DNS:
| Nau'i | Suna | Abun ciki | Proxy |
|---|---|---|---|
| A | llms |
203.0.113.10 (IP na VM) |
✅ An yi Proxy |
A ƙarƙashin SSL/TLS → Overview:
- Yanayi: Full (Strict)
A ƙarƙashin SSL/TLS → Edge Certificates:
- Koyaushe Yi Amfani da HTTPS: ✅ Kunna
- Mafi Ƙarancin Sigar TLS: TLS 1.2
- Sake Rubuta HTTPS ta Atomatik: ✅ Kunna
curl -sI https://llms.seudominio.com/health
# Ya kamata ya mayar da HTTP/2 200docker 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 # Gudanarwa kai tsaye
docker logs omniroute --tail 50 # Layuka 50 na ƙarshe# Kwafi bayanai daga volume zuwa host
docker cp omniroute:/app/data ./backup-$(date +%F)
# Ko a matse dukan volume
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'
# Jerin adiresoshin IPv4 na Cloudflare — sabunta lokaci-lokaci
# 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Ƙara waɗannan zuwa nginx.conf a cikin sashen http {}:
include /etc/nginx/cloudflare-ips.conf;apt install -y fail2ban
systemctl enable fail2ban
systemctl start fail2ban
# Duba matsayi
fail2ban-client status sshd# Hana samun dama ta waje kai tsaye zuwa port 20128
iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP
iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT
# Adana ƙa'idojin har abada
apt install -y iptables-persistent
netfilter-persistent saveDon samun dama daga nesa ta hanyar Cloudflare Workers (ba tare da fallasa VM kai tsaye ba):
# A cikin ma'ajiyar lamba ta gida
cd omnirouteCloud
npm install
npx wrangler login
npx wrangler deployDuba kuma TUNNELS_GUIDE.md don jagorar Cloudflare Tunnel da ke cikin ma'ajiyar lambar. Ma'aikacin omnirouteCloud/ mai zaman kansa yana cikin wata ma'ajiyar lambar haɗin gwiwa ta daban.
| Tashar Sadarwa | Sabis | Samun Dama |
|---|---|---|
| 22 | SSH | Na jama'a (tare da fail2ban) |
| 80 | nginx HTTP | Turawa → HTTPS |
| 443 | nginx HTTPS | Ta Cloudflare Proxy |
| 20128 | OmniRoute | Localhost kawai (ta nginx) |
Don turawa a kan ƙananan VPS (RAM 1 GB ko ƙasa da haka):
- Kashe sabis na bayan fage — saita
OMNIROUTE_DISABLE_BACKGROUND_SERVICES=1don tsallake mai tsara ayyuka, uwar garken MCP, da ayyukan kulawa na lokaci-lokaci. Dubadocs/reference/ENVIRONMENT.md. - Yi amfani da yanayin SQLite WAL — ana kunna shi ta tsohuwa, kuma yana rage iyakar amfani da ƙwaƙwalwar ajiya yayin karantawa da yawa a lokaci guda.
- Iyakance heap na V8 — saita
OMNIROUTE_MEMORY_MB(misali512) don kada runtime ya daidaita iyakar da ta fi ƙarfin VM. Dubadocs/reference/ENVIRONMENT.md. - Karɓar manyan ayyuka na daidaita kansa bisa iyakar heap -- da zarar an saita
OMNIROUTE_MEMORY_MBa sama, kasafin byte na shigarwa (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES) yana samo kansa daga wannan iyakar, don haka VM mai ƙarancin ƙwaƙwalwar ajiya zai riga ya sami ƙaramin kasafin buƙatun lokaci guda ba tare da ƙarin daidaitawa ba; buƙatun da suka wuce iyaka za su sami503mai yiwuwa a sake gwadawa tare daRetry-After, maimakon yin takara kan ƙwaƙwalwar ajiya. Saita tsohuwar iyakar ƙidayar buƙatu taOMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHTkawai idan kana buƙatar tsayayyar iyaka a saman wannan. - Guji
next builda kan VPS — yi ginin a na'urarka sannan ka tura fitarwar standalone (.next/standalone/). - Sa ido da
top/free -m— OmniRoute yawanci yana amfani da RSS 200-400 MB lokacin da ba ya aiki a kan VM mai RAM 1 GB.