Files
OmniRoute/docs/i18n/phi/docs/ops/VM_DEPLOYMENT_GUIDE.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors.

⚠️ base-red inherited: #12732
2026-09-17 02:55:31 -03:00

22 KiB
Raw Blame History

OmniRoute — Deployment Guide on VM with Cloudflare (Filipino)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 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 · 🇵🇱 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


🌐 Mga Wika: 🇺🇸 English | 🇪🇹 አማርኛ | 🇸🇦 العربية | 🇦🇿 Azərbaycan dili | 🇧🇬 Български | 🇧🇩 বাংলা | 🇨🇿 Čeština | 🇩🇰 Dansk | 🇩🇪 Deutsch | 🇬🇷 Ελληνικά | 🇪🇸 Español | 🇪🇪 Eesti | 🇮🇷 فارسی | 🇫🇮 Suomi | 🇫🇷 Français | 🇮🇪 Gaeilge | 🇮🇳 ગુજરાતી | 🇳🇬 Hausa | 🇮🇱 עברית | 🇮🇳 हिन्दी | 🇭🇷 Hrvatski | 🇭🇺 Magyar | 🇦🇲 Հայերեն | 🇮🇩 Bahasa Indonesia | 🇳🇬 Igbo | 🇮🇹 Italiano | 🇯🇵 日本語 | 🇬🇪 ქართული | 🇰🇭 ខ្មែរ | 🇮🇳 ಕನ್ನಡ | 🇰🇷 한국어 | 🇱🇹 Lietuvių | 🇱🇻 Latviešu | 🇮🇳 മലയാളം | 🇮🇳 मराठी | 🇲🇾 Bahasa Melayu | 🇲🇹 Malti | 🇲🇲 မြန်မာ | 🇳🇵 नेपाली | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇮🇳 ଓଡ଼ିଆ | 🇮🇳 ਪੰਜਾਬੀ | 🇵🇭 Filipino | 🇵🇱 Polski | 🇵🇹 Português (Portugal) | 🇧🇷 Português (Brasil) | 🇷🇴 Română | 🇷🇺 Русский | 🇱🇰 සිංහල | 🇸🇰 Slovenčina | 🇸🇮 Slovenščina | 🇷🇸 Српски | 🇸🇪 Svenska | 🇰🇪 Kiswahili | 🇮🇳 தமிழ் | 🇮🇳 తెలుగు | 🇹🇭 ไทย | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇵🇰 اردو | 🇺🇿 Oʻzbekcha | 🇻🇳 Tiếng Việt | 🇳🇬 Yorùbá | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)

Kumpletong gabay sa pag-install at pag-configure ng OmniRoute sa isang VM (VPS) na may domain na pinamamahalaan sa pamamagitan ng Cloudflare.


Mga Kinakailangan

Item Minimum Inirerekomenda
CPU 1 vCPU 2 vCPU
RAM 1 GB 2 GB
Disk 10 GB SSD 25 GB SSD
OS Ubuntu 22.04 LTS Ubuntu 24.04 LTS
Domain Nakarehistro sa Cloudflare
Docker Docker Engine 24+ Docker 27+

Mga nasubukang provider: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail.


1. I-configure ang VM

1.1 Gumawa ng instance

Sa napili mong VPS provider:

  • Piliin ang Ubuntu 24.04 LTS
  • Piliin ang minimum na plan (1 vCPU / 1 GB RAM)
  • Magtakda ng matibay na root password o mag-configure ng SSH key
  • Itala ang pampublikong IP (hal., 203.0.113.10)

1.2 Kumonekta sa pamamagitan ng SSH

ssh root@203.0.113.10

1.3 I-update ang system

apt update && apt upgrade -y

1.4 I-install ang Docker

# I-install ang mga dependency
apt install -y ca-certificates curl gnupg

# Idagdag ang opisyal na Docker repository
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 I-install ang nginx

apt install -y nginx

1.6 I-configure ang Firewall (UFW)

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp    # SSH
ufw allow 80/tcp    # HTTP (pag-redirect)
ufw allow 443/tcp   # HTTPS
ufw enable

Tip

: Para sa pinakamataas na seguridad, limitahan ang mga port 80 at 443 sa mga Cloudflare IP lamang. Tingnan ang seksyong Advanced na Seguridad.


2. I-install ang OmniRoute

2.1 Gumawa ng directory ng configuration

mkdir -p /opt/omniroute

2.2 Gumawa ng file ng mga environment variable

cat > /opt/omniroute/.env << 'EOF'
# === Seguridad ===
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  # KINAKAILANGAN sa production: ginagamit ng Codex Responses WS bridge

# === App ===
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

# === Mga URL (palitan ayon sa iyong domain) ===
# Panloob na base URL para sa komunikasyon ng mga server para sa mga nakaiskedyul na job / self-fetch.
BASE_URL=http://127.0.0.1:20128
# URL na nakikita ng browser at ginagamit para sa mga OAuth callback, dashboard link, at mga nabuong pampublikong URL.
NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com
# Opsyonal na tahasang pag-override ng pampublikong origin para sa mga nabuong URL ng pampublikong asset.
# OMNIROUTE_PUBLIC_BASE_URL=https://llms.seudominio.com

# === Cloud Sync (opsyonal) ===
# CLOUD_URL=https://cloud.omniroute.online
# NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online
EOF

⚠️ MAHALAGA: Bumuo ng mga natatanging secret key! Gamitin ang openssl rand -hex 32 para sa bawat key.

2.3 Simulan ang container

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 Tiyaking tumatakbo ito

docker ps | grep omniroute
docker logs omniroute --tail 20

Dapat nitong ipakita ang: [DB] SQLite database ready at listening on port 20128.


3. I-configure ang nginx (Reverse Proxy)

3.1 Bumuo ng SSL certificate (Cloudflare Origin)

Sa dashboard ng Cloudflare:

  1. Pumunta sa SSL/TLS → Origin Server
  2. I-click ang Create Certificate
  3. Panatilihin ang mga default (15 taon, *.yourdomain.com)
  4. Kopyahin ang Origin Certificate at ang Private Key
mkdir -p /etc/nginx/ssl

# I-paste ang certificate
nano /etc/nginx/ssl/origin.crt

# I-paste ang private key
nano /etc/nginx/ssl/origin.key

chmod 600 /etc/nginx/ssl/origin.key

3.2 Configuration ng Nginx

cat > /etc/nginx/sites-available/omniroute << 'NGINX'
# Default na server — hinaharangan ang direktang pag-access gamit ang 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;  # Palitan ng iyong domain

    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;

        # Suporta sa WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # SSE (Server-Sent Events) — pag-stream ng mga tugon ng AI
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
    }
}

# Pag-redirect ng HTTP → HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name llms.yourdomain.com;
    return 301 https://$server_name$request_uri;
}
NGINX

Panatilihing nakaayon ang mga timeout ng reverse-proxy stream sa iyong mga timeout env var ng OmniRoute. Kung tataasan mo ang FETCH_TIMEOUT_MS / STREAM_IDLE_TIMEOUT_MS, taasan ang proxy_read_timeout / proxy_send_timeout nang higit sa parehong threshold.

Ginagamit ng OmniRoute ang NEXT_PUBLIC_BASE_URL bilang canonical na origin na nakikita ng browser para sa mga OAuth callback at mga nabuong pampublikong link. Gumagamit ang mga authenticated na pagsusulat sa dashboard ng mga same-origin na request kasama ang session-bound na proteksyon laban sa CSRF, kaya hindi nangangailangan ang mga ito ng static na pampublikong base URL. Ang mga X-Forwarded-* header sa itaas ay kapaki-pakinabang pa ring routing metadata, ngunit hindi pamalit ang mga ito sa pagtatakda ng tahasang pampublikong URL kapag kailangan ito para sa OAuth o sa mga nabuong browser link. I-enable lamang ang OMNIROUTE_TRUST_PROXY kung hindi direktang maaabot ng mga client ang OmniRoute at inaalis/muling binubuo ng iyong proxy ang mga papasok na forwarded header.

3.3 I-enable at Subukan

# Alisin ang default na configuration
rm -f /etc/nginx/sites-enabled/default

# I-enable ang OmniRoute
ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute

# Subukan at i-reload
nginx -t && systemctl reload nginx

4. I-configure ang Cloudflare DNS

4.1 Magdagdag ng DNS record

Sa Cloudflare dashboard → DNS:

Uri Pangalan Nilalaman Proxy
A llms 203.0.113.10 (VM IP) Proxied

4.2 I-configure ang SSL

Sa ilalim ng SSL/TLS → Overview:

  • Mode: Full (Strict)

Sa ilalim ng SSL/TLS → Edge Certificates:

  • Always Use HTTPS: Naka-on
  • Minimum TLS Version: TLS 1.2
  • Automatic HTTPS Rewrites: Naka-on

4.3 Pagsubok

curl -sI https://llms.seudominio.com/health
# Dapat magbalik ng HTTP/2 200

5. Operasyon at Pagpapanatili

Mag-upgrade sa bagong bersyon

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

Tingnan ang mga log

docker logs -f omniroute          # Real-time na stream
docker logs omniroute --tail 50   # Huling 50 linya

Manu-manong pag-backup ng database

# Kopyahin ang data mula sa volume papunta sa host
docker cp omniroute:/app/data ./backup-$(date +%F)

# O i-compress ang buong volume
docker run --rm -v omniroute-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data

I-restore mula sa backup

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. Advanced na Seguridad

Limitahan ang nginx sa mga IP ng Cloudflare

cat > /etc/nginx/cloudflare-ips.conf << 'CF'
# Mga saklaw ng Cloudflare IPv4 — pana-panahong i-update
# 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

Idagdag ang sumusunod sa nginx.conf sa loob ng http {} block:

include /etc/nginx/cloudflare-ips.conf;

I-install ang fail2ban

apt install -y fail2ban
systemctl enable fail2ban
systemctl start fail2ban

# Suriin ang status
fail2ban-client status sshd

I-block ang direktang pag-access sa Docker port

# Pigilan ang direktang external na pag-access sa port 20128
iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP
iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT

# Panatilihin ang mga patakaran
apt install -y iptables-persistent
netfilter-persistent save

7. Mag-deploy sa Cloudflare Workers (Opsyonal)

Para sa remote na pag-access sa pamamagitan ng Cloudflare Workers (nang hindi direktang inilalantad ang VM):

# Sa lokal na repository
cd omnirouteCloud
npm install
npx wrangler login
npx wrangler deploy

Tingnan din ang TUNNELS_GUIDE.md para sa gabay sa Cloudflare Tunnel na nasa repository. Ang standalone na omnirouteCloud/ worker ay nasa hiwalay na companion repo.


Buod ng mga Port

Port Serbisyo Access
22 SSH Pampubliko (may fail2ban)
80 nginx HTTP Pag-redirect → HTTPS
443 nginx HTTPS Sa pamamagitan ng Cloudflare Proxy
20128 OmniRoute Localhost lamang (sa pamamagitan ng nginx)

Pag-optimize para sa Mababang Memory / Maliit na VPS

Para sa mga deployment sa maliliit na VPS instance (1 GB RAM o mas mababa):

  • I-disable ang mga serbisyo sa background — itakda ang OMNIROUTE_DISABLE_BACKGROUND_SERVICES=1 upang laktawan ang scheduler, MCP server, at mga pana-panahong gawain sa maintenance. Tingnan ang docs/reference/ENVIRONMENT.md.
  • Gamitin ang SQLite WAL mode — naka-enable bilang default at binabawasan ang pinakamataas na paggamit ng memory habang may sabay-sabay na pagbasa.
  • Limitahan ang V8 heap — itakda ang OMNIROUTE_MEMORY_MB (hal. 512) upang hindi mag-calibrate ang runtime ng ceiling na mas malaki kaysa sa VM. Tingnan ang docs/reference/ENVIRONMENT.md.
  • Awtomatikong nag-a-adjust ang pagtanggap ng mabibigat na request ayon sa heap cap -- kapag naitakda na ang OMNIROUTE_MEMORY_MB sa itaas, awtomatikong ibinabatay ang ingest byte budget (OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES) sa parehong ceiling, kaya nakakakuha na ang isang VM na may limitadong memory ng mas maliit na budget para sa magkakasabay na request nang walang karagdagang pag-tune; ang mga sobrang request ay makakatanggap ng 503 na maaaring subukang muli, kasama ang Retry-After, sa halip na makipag-agawan sa memory. Itakda lamang ang legacy na request-count cap na OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT kung kailangan mo ng mahigpit na ceiling bukod pa rito.
  • Iwasang patakbuhin ang next build sa VPS — mag-build nang lokal at i-deploy ang standalone output (.next/standalone/).
  • Subaybayan gamit ang top / free -m — karaniwang gumagamit ang OmniRoute ng 200-400 MB RSS habang idle sa isang 1 GB VM.