omniroute 2.8.3 → 2.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/_global-error.html +2 -2
  40. package/app/.next/server/app/_global-error.rsc +1 -1
  41. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/api/models/catalog/route.js +1 -1
  48. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  49. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
  50. package/app/.next/server/app/api/providers/[id]/test/route.js +3 -3
  51. package/app/.next/server/app/api/providers/route.js +1 -1
  52. package/app/.next/server/app/api/providers/test-batch/route.js +6 -6
  53. package/app/.next/server/app/api/v1/models/route.js +3 -3
  54. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  55. package/app/.next/server/app/api/v1/route.js +3 -3
  56. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  57. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/chunks/[root-of-the-server]__09c944b3._.js +2 -2
  70. package/app/.next/server/chunks/[root-of-the-server]__134baf4c._.js +2 -2
  71. package/app/.next/server/chunks/[root-of-the-server]__2f8f5f38._.js +2 -2
  72. package/app/.next/server/chunks/[root-of-the-server]__31027061._.js +4 -0
  73. package/app/.next/server/chunks/[root-of-the-server]__3e042fbd._.js +2 -2
  74. package/app/.next/server/chunks/[root-of-the-server]__7a9b72a4._.js +2 -2
  75. package/app/.next/server/chunks/[root-of-the-server]__7d9b23e7._.js +2 -2
  76. package/app/.next/server/chunks/[root-of-the-server]__80e3bfc3._.js +1 -1
  77. package/app/.next/server/chunks/[root-of-the-server]__84e445b2._.js +1 -1
  78. package/app/.next/server/chunks/[root-of-the-server]__92cb0def._.js +1 -1
  79. package/app/.next/server/chunks/[root-of-the-server]__d4563e10._.js +1 -1
  80. package/app/.next/server/chunks/[root-of-the-server]__d7914418._.js +4 -0
  81. package/app/.next/server/chunks/[root-of-the-server]__db2f9fe0._.js +1 -1
  82. package/app/.next/server/chunks/[root-of-the-server]__e27a89bd._.js +1 -1
  83. package/app/.next/server/chunks/[root-of-the-server]__ebf3fe48._.js +2 -2
  84. package/app/.next/server/chunks/[root-of-the-server]__f0131d95._.js +4 -0
  85. package/app/.next/server/chunks/[root-of-the-server]__f31b4656._.js +3 -3
  86. package/app/.next/server/chunks/[root-of-the-server]__fad1679d._.js +2 -2
  87. package/app/.next/server/chunks/_05c48915._.js +1 -1
  88. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  89. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  90. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  91. package/app/.next/server/chunks/_68683848._.js +1 -1
  92. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  93. package/app/.next/server/chunks/ssr/[root-of-the-server]__9affb65e._.js +1 -1
  94. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  95. package/app/.next/server/chunks/ssr/_19b3d5b1._.js +2 -2
  96. package/app/.next/server/chunks/ssr/src_ec615d6e._.js +2 -2
  97. package/app/.next/server/pages/500.html +2 -2
  98. package/app/.next/server/server-reference-manifest.js +1 -1
  99. package/app/.next/server/server-reference-manifest.json +1 -1
  100. package/app/.next/static/chunks/{19b1432393321fcf.js → 1e206030e7793015.js} +1 -1
  101. package/app/.next/static/chunks/{37e9976d0367faad.js → 3fa6c964786c962d.js} +4 -4
  102. package/app/CHANGELOG.md +29 -0
  103. package/app/docs/ARCHITECTURE.md +1 -1
  104. package/app/docs/VM_DEPLOYMENT_GUIDE.md +2 -0
  105. package/app/docs/i18n/README.md +9 -17
  106. package/app/docs/i18n/ar/VM_DEPLOYMENT_GUIDE.md +110 -112
  107. package/app/docs/i18n/bg/VM_DEPLOYMENT_GUIDE.md +110 -112
  108. package/app/docs/i18n/da/VM_DEPLOYMENT_GUIDE.md +110 -112
  109. package/app/docs/i18n/de/VM_DEPLOYMENT_GUIDE.md +110 -112
  110. package/app/docs/i18n/es/VM_DEPLOYMENT_GUIDE.md +107 -109
  111. package/app/docs/i18n/fi/VM_DEPLOYMENT_GUIDE.md +110 -112
  112. package/app/docs/i18n/fr/VM_DEPLOYMENT_GUIDE.md +110 -112
  113. package/app/docs/i18n/he/VM_DEPLOYMENT_GUIDE.md +110 -112
  114. package/app/docs/i18n/hu/VM_DEPLOYMENT_GUIDE.md +110 -112
  115. package/app/docs/i18n/id/VM_DEPLOYMENT_GUIDE.md +110 -112
  116. package/app/docs/i18n/in/VM_DEPLOYMENT_GUIDE.md +102 -210
  117. package/app/docs/i18n/it/VM_DEPLOYMENT_GUIDE.md +110 -112
  118. package/app/docs/i18n/ja/VM_DEPLOYMENT_GUIDE.md +110 -112
  119. package/app/docs/i18n/ko/VM_DEPLOYMENT_GUIDE.md +109 -111
  120. package/app/docs/i18n/ms/VM_DEPLOYMENT_GUIDE.md +110 -112
  121. package/app/docs/i18n/nl/VM_DEPLOYMENT_GUIDE.md +110 -112
  122. package/app/docs/i18n/no/VM_DEPLOYMENT_GUIDE.md +110 -112
  123. package/app/docs/i18n/phi/VM_DEPLOYMENT_GUIDE.md +110 -112
  124. package/app/docs/i18n/pl/VM_DEPLOYMENT_GUIDE.md +110 -112
  125. package/app/docs/i18n/pt/VM_DEPLOYMENT_GUIDE.md +96 -98
  126. package/app/docs/i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md +96 -98
  127. package/app/docs/i18n/ro/VM_DEPLOYMENT_GUIDE.md +110 -112
  128. package/app/docs/i18n/ru/VM_DEPLOYMENT_GUIDE.md +110 -112
  129. package/app/docs/i18n/sk/VM_DEPLOYMENT_GUIDE.md +110 -112
  130. package/app/docs/i18n/sv/VM_DEPLOYMENT_GUIDE.md +110 -112
  131. package/app/docs/i18n/th/VM_DEPLOYMENT_GUIDE.md +110 -112
  132. package/app/docs/i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md +110 -112
  133. package/app/docs/i18n/vi/VM_DEPLOYMENT_GUIDE.md +110 -112
  134. package/app/docs/i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md +110 -112
  135. package/app/docs/openapi.yaml +1 -1
  136. package/app/package-lock.json +5 -5
  137. package/app/package.json +1 -1
  138. package/app/scripts/i18n/generate-multilang.mjs +1 -0
  139. package/app/src/shared/constants/providers.ts +3 -0
  140. package/app/src/shared/validation/providerSchema.ts +6 -0
  141. package/package.json +1 -1
  142. package/app/.next/server/chunks/[root-of-the-server]__61396d77._.js +0 -4
  143. package/app/.next/server/chunks/[root-of-the-server]__d5ecc2ba._.js +0 -4
  144. package/app/.next/server/chunks/[root-of-the-server]__daa26645._.js +0 -4
  145. /package/app/.next/static/{IiXcm5VJcOKrDneQQSdf- → Ys6bRJXPNt8j-MKOjvZwp}/_buildManifest.js +0 -0
  146. /package/app/.next/static/{IiXcm5VJcOKrDneQQSdf- → Ys6bRJXPNt8j-MKOjvZwp}/_clientMiddlewareManifest.json +0 -0
  147. /package/app/.next/static/{IiXcm5VJcOKrDneQQSdf- → Ys6bRJXPNt8j-MKOjvZwp}/_ssgManifest.js +0 -0
package/app/CHANGELOG.md CHANGED
@@ -4,6 +4,35 @@
4
4
 
5
5
  ---
6
6
 
7
+ ## [2.8.4] — 2026-03-19
8
+
9
+ > Sprint: Gemini CLI deprecation, VM guide i18n fix, dependabot security fix, provider schema expansion.
10
+
11
+ ### Features
12
+
13
+ - **Gemini CLI Deprecation** (#462): Mark `gemini-cli` provider as deprecated with warning — Google restricts third-party OAuth usage from March 2026
14
+ - **Provider Schema** (#462): Expand Zod validation with `deprecated`, `deprecationReason`, `hasFree`, `freeNote`, `authHint`, `apiHint` optional fields
15
+
16
+ ### Bug Fixes
17
+
18
+ - **VM Guide i18n** (#471): Add `VM_DEPLOYMENT_GUIDE.md` to i18n translation pipeline, regenerate all 30 locale translations from English source (were stuck in Portuguese)
19
+
20
+ ### Security
21
+
22
+ - **deps**: Bump `flatted` 3.3.3 → 3.4.2 — fixes CWE-1321 prototype pollution (#484, @dependabot)
23
+
24
+ ### Closed Issues
25
+
26
+ - #472 — Model Aliases regression (fixed in v2.8.2)
27
+ - #471 — VM guide translations broken
28
+ - #483 — Trailing `data: null` after `[DONE]` (fixed in v2.8.3)
29
+
30
+ ### Merged PRs
31
+
32
+ - #484 — deps: bump flatted from 3.3.3 to 3.4.2 (@dependabot)
33
+
34
+ ---
35
+
7
36
  ## [2.8.3] — 2026-03-19
8
37
 
9
38
  > Sprint: Czech i18n, SSE protocol fix, VM guide translation.
@@ -1,6 +1,6 @@
1
1
  # OmniRoute Architecture
2
2
 
3
- 🌐 **Languages:** 🇺🇸 [English](ARCHITECTURE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/ARCHITECTURE.md) | 🇪🇸 [Español](i18n/es/ARCHITECTURE.md) | 🇫🇷 [Français](i18n/fr/ARCHITECTURE.md) | 🇮🇹 [Italiano](i18n/it/ARCHITECTURE.md) | 🇷🇺 [Русский](i18n/ru/ARCHITECTURE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/ARCHITECTURE.md) | 🇩🇪 [Deutsch](i18n/de/ARCHITECTURE.md) | 🇮🇳 [हिन्दी](i18n/in/ARCHITECTURE.md) | 🇹🇭 [ไทย](i18n/th/ARCHITECTURE.md) | 🇺🇦 [Українська](i18n/uk-UA/ARCHITECTURE.md) | 🇸🇦 [العربية](i18n/ar/ARCHITECTURE.md) | 🇯🇵 [日本語](i18n/ja/ARCHITECTURE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/ARCHITECTURE.md) | 🇧🇬 [Български](i18n/bg/ARCHITECTURE.md) | 🇩🇰 [Dansk](i18n/da/ARCHITECTURE.md) | 🇫🇮 [Suomi](i18n/fi/ARCHITECTURE.md) | 🇮🇱 [עברית](i18n/he/ARCHITECTURE.md) | 🇭🇺 [Magyar](i18n/hu/ARCHITECTURE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/ARCHITECTURE.md) | 🇰🇷 [한국어](i18n/ko/ARCHITECTURE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/ARCHITECTURE.md) | 🇳🇱 [Nederlands](i18n/nl/ARCHITECTURE.md) | 🇳🇴 [Norsk](i18n/no/ARCHITECTURE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/ARCHITECTURE.md) | 🇷🇴 [Română](i18n/ro/ARCHITECTURE.md) | 🇵🇱 [Polski](i18n/pl/ARCHITECTURE.md) | 🇸🇰 [Slovenčina](i18n/sk/ARCHITECTURE.md) | 🇸🇪 [Svenska](i18n/sv/ARCHITECTURE.md) | 🇵🇭 [Filipino](i18n/phi/ARCHITECTURE.md)| 🇨🇿 [Čeština](i18n/cs/ARCHITECTURE.md)
3
+ 🌐 **Languages:** 🇺🇸 [English](ARCHITECTURE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/ARCHITECTURE.md) | 🇪🇸 [Español](i18n/es/ARCHITECTURE.md) | 🇫🇷 [Français](i18n/fr/ARCHITECTURE.md) | 🇮🇹 [Italiano](i18n/it/ARCHITECTURE.md) | 🇷🇺 [Русский](i18n/ru/ARCHITECTURE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/ARCHITECTURE.md) | 🇩🇪 [Deutsch](i18n/de/ARCHITECTURE.md) | 🇮🇳 [हिन्दी](i18n/in/ARCHITECTURE.md) | 🇹🇭 [ไทย](i18n/th/ARCHITECTURE.md) | 🇺🇦 [Українська](i18n/uk-UA/ARCHITECTURE.md) | 🇸🇦 [العربية](i18n/ar/ARCHITECTURE.md) | 🇯🇵 [日本語](i18n/ja/ARCHITECTURE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/ARCHITECTURE.md) | 🇧🇬 [Български](i18n/bg/ARCHITECTURE.md) | 🇩🇰 [Dansk](i18n/da/ARCHITECTURE.md) | 🇫🇮 [Suomi](i18n/fi/ARCHITECTURE.md) | 🇮🇱 [עברית](i18n/he/ARCHITECTURE.md) | 🇭🇺 [Magyar](i18n/hu/ARCHITECTURE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/ARCHITECTURE.md) | 🇰🇷 [한국어](i18n/ko/ARCHITECTURE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/ARCHITECTURE.md) | 🇳🇱 [Nederlands](i18n/nl/ARCHITECTURE.md) | 🇳🇴 [Norsk](i18n/no/ARCHITECTURE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/ARCHITECTURE.md) | 🇷🇴 [Română](i18n/ro/ARCHITECTURE.md) | 🇵🇱 [Polski](i18n/pl/ARCHITECTURE.md) | 🇸🇰 [Slovenčina](i18n/sk/ARCHITECTURE.md) | 🇸🇪 [Svenska](i18n/sv/ARCHITECTURE.md) | 🇵🇭 [Filipino](i18n/phi/ARCHITECTURE.md) | 🇨🇿 [Čeština](i18n/cs/ARCHITECTURE.md)
4
4
 
5
5
  _Last updated: 2026-03-04_
6
6
 
@@ -1,5 +1,7 @@
1
1
  # OmniRoute — Deployment Guide on VM with Cloudflare
2
2
 
3
+ 🌐 **Languages:** 🇺🇸 [English](VM_DEPLOYMENT_GUIDE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md) | 🇪🇸 [Español](i18n/es/VM_DEPLOYMENT_GUIDE.md) | 🇫🇷 [Français](i18n/fr/VM_DEPLOYMENT_GUIDE.md) | 🇮🇹 [Italiano](i18n/it/VM_DEPLOYMENT_GUIDE.md) | 🇷🇺 [Русский](i18n/ru/VM_DEPLOYMENT_GUIDE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md) | 🇩🇪 [Deutsch](i18n/de/VM_DEPLOYMENT_GUIDE.md) | 🇮🇳 [हिन्दी](i18n/in/VM_DEPLOYMENT_GUIDE.md) | 🇹🇭 [ไทย](i18n/th/VM_DEPLOYMENT_GUIDE.md) | 🇺🇦 [Українська](i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md) | 🇸🇦 [العربية](i18n/ar/VM_DEPLOYMENT_GUIDE.md) | 🇯🇵 [日本語](i18n/ja/VM_DEPLOYMENT_GUIDE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/VM_DEPLOYMENT_GUIDE.md) | 🇧🇬 [Български](i18n/bg/VM_DEPLOYMENT_GUIDE.md) | 🇩🇰 [Dansk](i18n/da/VM_DEPLOYMENT_GUIDE.md) | 🇫🇮 [Suomi](i18n/fi/VM_DEPLOYMENT_GUIDE.md) | 🇮🇱 [עברית](i18n/he/VM_DEPLOYMENT_GUIDE.md) | 🇭🇺 [Magyar](i18n/hu/VM_DEPLOYMENT_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/VM_DEPLOYMENT_GUIDE.md) | 🇰🇷 [한국어](i18n/ko/VM_DEPLOYMENT_GUIDE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/VM_DEPLOYMENT_GUIDE.md) | 🇳🇱 [Nederlands](i18n/nl/VM_DEPLOYMENT_GUIDE.md) | 🇳🇴 [Norsk](i18n/no/VM_DEPLOYMENT_GUIDE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/VM_DEPLOYMENT_GUIDE.md) | 🇷🇴 [Română](i18n/ro/VM_DEPLOYMENT_GUIDE.md) | 🇵🇱 [Polski](i18n/pl/VM_DEPLOYMENT_GUIDE.md) | 🇸🇰 [Slovenčina](i18n/sk/VM_DEPLOYMENT_GUIDE.md) | 🇸🇪 [Svenska](i18n/sv/VM_DEPLOYMENT_GUIDE.md) | 🇵🇭 [Filipino](i18n/phi/VM_DEPLOYMENT_GUIDE.md) | 🇨🇿 [Čeština](i18n/cs/VM_DEPLOYMENT_GUIDE.md)
4
+
3
5
  Complete guide to install and configure OmniRoute on a VM (VPS) with domain managed via Cloudflare.
4
6
 
5
7
  ---
@@ -2,20 +2,12 @@
2
2
 
3
3
  This directory contains machine-assisted translations based on the English docs.
4
4
 
5
- - **API_REFERENCE.md**: 🇺🇸 [English](../API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/API_REFERENCE.md) | 🇪🇸 [Español](./es/API_REFERENCE.md) | 🇫🇷 [Français](./fr/API_REFERENCE.md) | 🇮🇹 [Italiano](./it/API_REFERENCE.md) | 🇷🇺 [Русский](./ru/API_REFERENCE.md) | 🇨🇳 [中文 (简体)](./zh-CN/API_REFERENCE.md) | 🇩🇪 [Deutsch](./de/API_REFERENCE.md) | 🇮🇳 [हिन्दी](./in/API_REFERENCE.md) | 🇹🇭 [ไทย](./th/API_REFERENCE.md) | 🇺🇦 [Українська](./uk-UA/API_REFERENCE.md) | 🇸🇦 [العربية](./ar/API_REFERENCE.md) | 🇯🇵 [日本語](./ja/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](./vi/API_REFERENCE.md) | 🇧🇬 [Български](./bg/API_REFERENCE.md) | 🇩🇰 [Dansk](./da/API_REFERENCE.md) | 🇫🇮 [Suomi](./fi/API_REFERENCE.md) | 🇮🇱 [עברית](./he/API_REFERENCE.md) | 🇭🇺 [Magyar](./hu/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](./id/API_REFERENCE.md) | 🇰🇷 [한국어](./ko/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](./ms/API_REFERENCE.md) | 🇳🇱 [Nederlands](./nl/API_REFERENCE.md) | 🇳🇴 [Norsk](./no/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](./pt/API_REFERENCE.md) | 🇷🇴 [Română](./ro/API_REFERENCE.md) | 🇵🇱 [Polski](./pl/API_REFERENCE.md) | 🇸🇰 [Slovenčina](./sk/API_REFERENCE.md) | 🇸🇪 [Svenska](./sv/API_REFERENCE.md) | 🇵🇭 [Filipino](./phi/API_REFERENCE.md)
6
- - **ARCHITECTURE.md**: 🇺🇸 [English](../ARCHITECTURE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/ARCHITECTURE.md) | 🇪🇸 [Español](./es/ARCHITECTURE.md) | 🇫🇷 [Français](./fr/ARCHITECTURE.md) | 🇮🇹 [Italiano](./it/ARCHITECTURE.md) | 🇷🇺 [Русский](./ru/ARCHITECTURE.md) | 🇨🇳 [中文 (简体)](./zh-CN/ARCHITECTURE.md) | 🇩🇪 [Deutsch](./de/ARCHITECTURE.md) | 🇮🇳 [हिन्दी](./in/ARCHITECTURE.md) | 🇹🇭 [ไทย](./th/ARCHITECTURE.md) | 🇺🇦 [Українська](./uk-UA/ARCHITECTURE.md) | 🇸🇦 [العربية](./ar/ARCHITECTURE.md) | 🇯🇵 [日本語](./ja/ARCHITECTURE.md) | 🇻🇳 [Tiếng Việt](./vi/ARCHITECTURE.md) | 🇧🇬 [Български](./bg/ARCHITECTURE.md) | 🇩🇰 [Dansk](./da/ARCHITECTURE.md) | 🇫🇮 [Suomi](./fi/ARCHITECTURE.md) | 🇮🇱 [עברית](./he/ARCHITECTURE.md) | 🇭🇺 [Magyar](./hu/ARCHITECTURE.md) | 🇮🇩 [Bahasa Indonesia](./id/ARCHITECTURE.md) | 🇰🇷 [한국어](./ko/ARCHITECTURE.md) | 🇲🇾 [Bahasa Melayu](./ms/ARCHITECTURE.md) | 🇳🇱 [Nederlands](./nl/ARCHITECTURE.md) | 🇳🇴 [Norsk](./no/ARCHITECTURE.md) | 🇵🇹 [Português (Portugal)](./pt/ARCHITECTURE.md) | 🇷🇴 [Română](./ro/ARCHITECTURE.md) | 🇵🇱 [Polski](./pl/ARCHITECTURE.md) | 🇸🇰 [Slovenčina](./sk/ARCHITECTURE.md) | 🇸🇪 [Svenska](./sv/ARCHITECTURE.md) | 🇵🇭 [Filipino](./phi/ARCHITECTURE.md)
7
- - **CODEBASE_DOCUMENTATION.md**: 🇺🇸 [English](../CODEBASE_DOCUMENTATION.md) | 🇧🇷 [Português (Brasil)](./pt-BR/CODEBASE_DOCUMENTATION.md) | 🇪🇸 [Español](./es/CODEBASE_DOCUMENTATION.md) | 🇫🇷 [Français](./fr/CODEBASE_DOCUMENTATION.md) | 🇮🇹 [Italiano](./it/CODEBASE_DOCUMENTATION.md) | 🇷🇺 [Русский](./ru/CODEBASE_DOCUMENTATION.md) | 🇨🇳 [中文 (简体)](./zh-CN/CODEBASE_DOCUMENTATION.md) | 🇩🇪 [Deutsch](./de/CODEBASE_DOCUMENTATION.md) | 🇮🇳 [हिन्दी](./in/CODEBASE_DOCUMENTATION.md) | 🇹🇭 [ไทย](./th/CODEBASE_DOCUMENTATION.md) | 🇺🇦 [Українська](./uk-UA/CODEBASE_DOCUMENTATION.md) | 🇸🇦 [العربية](./ar/CODEBASE_DOCUMENTATION.md) | 🇯🇵 [日本語](./ja/CODEBASE_DOCUMENTATION.md) | 🇻🇳 [Tiếng Việt](./vi/CODEBASE_DOCUMENTATION.md) | 🇧🇬 [Български](./bg/CODEBASE_DOCUMENTATION.md) | 🇩🇰 [Dansk](./da/CODEBASE_DOCUMENTATION.md) | 🇫🇮 [Suomi](./fi/CODEBASE_DOCUMENTATION.md) | 🇮🇱 [עברית](./he/CODEBASE_DOCUMENTATION.md) | 🇭🇺 [Magyar](./hu/CODEBASE_DOCUMENTATION.md) | 🇮🇩 [Bahasa Indonesia](./id/CODEBASE_DOCUMENTATION.md) | 🇰🇷 [한국어](./ko/CODEBASE_DOCUMENTATION.md) | 🇲🇾 [Bahasa Melayu](./ms/CODEBASE_DOCUMENTATION.md) | 🇳🇱 [Nederlands](./nl/CODEBASE_DOCUMENTATION.md) | 🇳🇴 [Norsk](./no/CODEBASE_DOCUMENTATION.md) | 🇵🇹 [Português (Portugal)](./pt/CODEBASE_DOCUMENTATION.md) | 🇷🇴 [Română](./ro/CODEBASE_DOCUMENTATION.md) | 🇵🇱 [Polski](./pl/CODEBASE_DOCUMENTATION.md) | 🇸🇰 [Slovenčina](./sk/CODEBASE_DOCUMENTATION.md) | 🇸🇪 [Svenska](./sv/CODEBASE_DOCUMENTATION.md) | 🇵🇭 [Filipino](./phi/CODEBASE_DOCUMENTATION.md)
8
- - **FEATURES.md**: 🇺🇸 [English](../FEATURES.md) | 🇧🇷 [Português (Brasil)](./pt-BR/FEATURES.md) | 🇪🇸 [Español](./es/FEATURES.md) | 🇫🇷 [Français](./fr/FEATURES.md) | 🇮🇹 [Italiano](./it/FEATURES.md) | 🇷🇺 [Русский](./ru/FEATURES.md) | 🇨🇳 [中文 (简体)](./zh-CN/FEATURES.md) | 🇩🇪 [Deutsch](./de/FEATURES.md) | 🇮🇳 [हिन्दी](./in/FEATURES.md) | 🇹🇭 [ไทย](./th/FEATURES.md) | 🇺🇦 [Українська](./uk-UA/FEATURES.md) | 🇸🇦 [العربية](./ar/FEATURES.md) | 🇯🇵 [日本語](./ja/FEATURES.md) | 🇻🇳 [Tiếng Việt](./vi/FEATURES.md) | 🇧🇬 [Български](./bg/FEATURES.md) | 🇩🇰 [Dansk](./da/FEATURES.md) | 🇫🇮 [Suomi](./fi/FEATURES.md) | 🇮🇱 [עברית](./he/FEATURES.md) | 🇭🇺 [Magyar](./hu/FEATURES.md) | 🇮🇩 [Bahasa Indonesia](./id/FEATURES.md) | 🇰🇷 [한국어](./ko/FEATURES.md) | 🇲🇾 [Bahasa Melayu](./ms/FEATURES.md) | 🇳🇱 [Nederlands](./nl/FEATURES.md) | 🇳🇴 [Norsk](./no/FEATURES.md) | 🇵🇹 [Português (Portugal)](./pt/FEATURES.md) | 🇷🇴 [Română](./ro/FEATURES.md) | 🇵🇱 [Polski](./pl/FEATURES.md) | 🇸🇰 [Slovenčina](./sk/FEATURES.md) | 🇸🇪 [Svenska](./sv/FEATURES.md) | 🇵🇭 [Filipino](./phi/FEATURES.md)
9
- - **TROUBLESHOOTING.md**: 🇺🇸 [English](../TROUBLESHOOTING.md) | 🇧🇷 [Português (Brasil)](./pt-BR/TROUBLESHOOTING.md) | 🇪🇸 [Español](./es/TROUBLESHOOTING.md) | 🇫🇷 [Français](./fr/TROUBLESHOOTING.md) | 🇮🇹 [Italiano](./it/TROUBLESHOOTING.md) | 🇷🇺 [Русский](./ru/TROUBLESHOOTING.md) | 🇨🇳 [中文 (简体)](./zh-CN/TROUBLESHOOTING.md) | 🇩🇪 [Deutsch](./de/TROUBLESHOOTING.md) | 🇮🇳 [हिन्दी](./in/TROUBLESHOOTING.md) | 🇹🇭 [ไทย](./th/TROUBLESHOOTING.md) | 🇺🇦 [Українська](./uk-UA/TROUBLESHOOTING.md) | 🇸🇦 [العربية](./ar/TROUBLESHOOTING.md) | 🇯🇵 [日本語](./ja/TROUBLESHOOTING.md) | 🇻🇳 [Tiếng Việt](./vi/TROUBLESHOOTING.md) | 🇧🇬 [Български](./bg/TROUBLESHOOTING.md) | 🇩🇰 [Dansk](./da/TROUBLESHOOTING.md) | 🇫🇮 [Suomi](./fi/TROUBLESHOOTING.md) | 🇮🇱 [עברית](./he/TROUBLESHOOTING.md) | 🇭🇺 [Magyar](./hu/TROUBLESHOOTING.md) | 🇮🇩 [Bahasa Indonesia](./id/TROUBLESHOOTING.md) | 🇰🇷 [한국어](./ko/TROUBLESHOOTING.md) | 🇲🇾 [Bahasa Melayu](./ms/TROUBLESHOOTING.md) | 🇳🇱 [Nederlands](./nl/TROUBLESHOOTING.md) | 🇳🇴 [Norsk](./no/TROUBLESHOOTING.md) | 🇵🇹 [Português (Portugal)](./pt/TROUBLESHOOTING.md) | 🇷🇴 [Română](./ro/TROUBLESHOOTING.md) | 🇵🇱 [Polski](./pl/TROUBLESHOOTING.md) | 🇸🇰 [Slovenčina](./sk/TROUBLESHOOTING.md) | 🇸🇪 [Svenska](./sv/TROUBLESHOOTING.md) | 🇵🇭 [Filipino](./phi/TROUBLESHOOTING.md)
10
- - **USER_GUIDE.md**: 🇺🇸 [English](../USER_GUIDE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/USER_GUIDE.md) | 🇪🇸 [Español](./es/USER_GUIDE.md) | 🇫🇷 [Français](./fr/USER_GUIDE.md) | 🇮🇹 [Italiano](./it/USER_GUIDE.md) | 🇷🇺 [Русский](./ru/USER_GUIDE.md) | 🇨🇳 [中文 (简体)](./zh-CN/USER_GUIDE.md) | 🇩🇪 [Deutsch](./de/USER_GUIDE.md) | 🇮🇳 [हिन्दी](./in/USER_GUIDE.md) | 🇹🇭 [ไทย](./th/USER_GUIDE.md) | 🇺🇦 [Українська](./uk-UA/USER_GUIDE.md) | 🇸🇦 [العربية](./ar/USER_GUIDE.md) | 🇯🇵 [日本語](./ja/USER_GUIDE.md) | 🇻🇳 [Tiếng Việt](./vi/USER_GUIDE.md) | 🇧🇬 [Български](./bg/USER_GUIDE.md) | 🇩🇰 [Dansk](./da/USER_GUIDE.md) | 🇫🇮 [Suomi](./fi/USER_GUIDE.md) | 🇮🇱 [עברית](./he/USER_GUIDE.md) | 🇭🇺 [Magyar](./hu/USER_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](./id/USER_GUIDE.md) | 🇰🇷 [한국어](./ko/USER_GUIDE.md) | 🇲🇾 [Bahasa Melayu](./ms/USER_GUIDE.md) | 🇳🇱 [Nederlands](./nl/USER_GUIDE.md) | 🇳🇴 [Norsk](./no/USER_GUIDE.md) | 🇵🇹 [Português (Portugal)](./pt/USER_GUIDE.md) | 🇷🇴 [Română](./ro/USER_GUIDE.md) | 🇵🇱 [Polski](./pl/USER_GUIDE.md) | 🇸🇰 [Slovenčina](./sk/USER_GUIDE.md) | 🇸🇪 [Svenska](./sv/USER_GUIDE.md) | 🇵🇭 [Filipino](./phi/USER_GUIDE.md)
11
-
12
- ## Recent note: Codex account limit policy
13
-
14
- Documentation now includes Codex account-level quota policy behavior:
15
-
16
- - Per-account toggles: `5h` and `Weekly` (ON/OFF).
17
- - Threshold policy: enabled window reaching >=90% marks account as ineligible for selection.
18
- - Auto-rotation: traffic moves to the next eligible Codex account.
19
- - Auto-reuse: account becomes eligible again after provider `resetAt` passes.
20
-
21
- Generated on 2026-02-26.
5
+ - **API_REFERENCE.md**: 🇺🇸 [English](../API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/API_REFERENCE.md) | 🇪🇸 [Español](./es/API_REFERENCE.md) | 🇫🇷 [Français](./fr/API_REFERENCE.md) | 🇮🇹 [Italiano](./it/API_REFERENCE.md) | 🇷🇺 [Русский](./ru/API_REFERENCE.md) | 🇨🇳 [中文 (简体)](./zh-CN/API_REFERENCE.md) | 🇩🇪 [Deutsch](./de/API_REFERENCE.md) | 🇮🇳 [हिन्दी](./in/API_REFERENCE.md) | 🇹🇭 [ไทย](./th/API_REFERENCE.md) | 🇺🇦 [Українська](./uk-UA/API_REFERENCE.md) | 🇸🇦 [العربية](./ar/API_REFERENCE.md) | 🇯🇵 [日本語](./ja/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](./vi/API_REFERENCE.md) | 🇧🇬 [Български](./bg/API_REFERENCE.md) | 🇩🇰 [Dansk](./da/API_REFERENCE.md) | 🇫🇮 [Suomi](./fi/API_REFERENCE.md) | 🇮🇱 [עברית](./he/API_REFERENCE.md) | 🇭🇺 [Magyar](./hu/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](./id/API_REFERENCE.md) | 🇰🇷 [한국어](./ko/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](./ms/API_REFERENCE.md) | 🇳🇱 [Nederlands](./nl/API_REFERENCE.md) | 🇳🇴 [Norsk](./no/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](./pt/API_REFERENCE.md) | 🇷🇴 [Română](./ro/API_REFERENCE.md) | 🇵🇱 [Polski](./pl/API_REFERENCE.md) | 🇸🇰 [Slovenčina](./sk/API_REFERENCE.md) | 🇸🇪 [Svenska](./sv/API_REFERENCE.md) | 🇵🇭 [Filipino](./phi/API_REFERENCE.md) | 🇨🇿 [Čeština](./cs/API_REFERENCE.md)
6
+ - **ARCHITECTURE.md**: 🇺🇸 [English](../ARCHITECTURE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/ARCHITECTURE.md) | 🇪🇸 [Español](./es/ARCHITECTURE.md) | 🇫🇷 [Français](./fr/ARCHITECTURE.md) | 🇮🇹 [Italiano](./it/ARCHITECTURE.md) | 🇷🇺 [Русский](./ru/ARCHITECTURE.md) | 🇨🇳 [中文 (简体)](./zh-CN/ARCHITECTURE.md) | 🇩🇪 [Deutsch](./de/ARCHITECTURE.md) | 🇮🇳 [हिन्दी](./in/ARCHITECTURE.md) | 🇹🇭 [ไทย](./th/ARCHITECTURE.md) | 🇺🇦 [Українська](./uk-UA/ARCHITECTURE.md) | 🇸🇦 [العربية](./ar/ARCHITECTURE.md) | 🇯🇵 [日本語](./ja/ARCHITECTURE.md) | 🇻🇳 [Tiếng Việt](./vi/ARCHITECTURE.md) | 🇧🇬 [Български](./bg/ARCHITECTURE.md) | 🇩🇰 [Dansk](./da/ARCHITECTURE.md) | 🇫🇮 [Suomi](./fi/ARCHITECTURE.md) | 🇮🇱 [עברית](./he/ARCHITECTURE.md) | 🇭🇺 [Magyar](./hu/ARCHITECTURE.md) | 🇮🇩 [Bahasa Indonesia](./id/ARCHITECTURE.md) | 🇰🇷 [한국어](./ko/ARCHITECTURE.md) | 🇲🇾 [Bahasa Melayu](./ms/ARCHITECTURE.md) | 🇳🇱 [Nederlands](./nl/ARCHITECTURE.md) | 🇳🇴 [Norsk](./no/ARCHITECTURE.md) | 🇵🇹 [Português (Portugal)](./pt/ARCHITECTURE.md) | 🇷🇴 [Română](./ro/ARCHITECTURE.md) | 🇵🇱 [Polski](./pl/ARCHITECTURE.md) | 🇸🇰 [Slovenčina](./sk/ARCHITECTURE.md) | 🇸🇪 [Svenska](./sv/ARCHITECTURE.md) | 🇵🇭 [Filipino](./phi/ARCHITECTURE.md) | 🇨🇿 [Čeština](./cs/ARCHITECTURE.md)
7
+ - **CODEBASE_DOCUMENTATION.md**: 🇺🇸 [English](../CODEBASE_DOCUMENTATION.md) | 🇧🇷 [Português (Brasil)](./pt-BR/CODEBASE_DOCUMENTATION.md) | 🇪🇸 [Español](./es/CODEBASE_DOCUMENTATION.md) | 🇫🇷 [Français](./fr/CODEBASE_DOCUMENTATION.md) | 🇮🇹 [Italiano](./it/CODEBASE_DOCUMENTATION.md) | 🇷🇺 [Русский](./ru/CODEBASE_DOCUMENTATION.md) | 🇨🇳 [中文 (简体)](./zh-CN/CODEBASE_DOCUMENTATION.md) | 🇩🇪 [Deutsch](./de/CODEBASE_DOCUMENTATION.md) | 🇮🇳 [हिन्दी](./in/CODEBASE_DOCUMENTATION.md) | 🇹🇭 [ไทย](./th/CODEBASE_DOCUMENTATION.md) | 🇺🇦 [Українська](./uk-UA/CODEBASE_DOCUMENTATION.md) | 🇸🇦 [العربية](./ar/CODEBASE_DOCUMENTATION.md) | 🇯🇵 [日本語](./ja/CODEBASE_DOCUMENTATION.md) | 🇻🇳 [Tiếng Việt](./vi/CODEBASE_DOCUMENTATION.md) | 🇧🇬 [Български](./bg/CODEBASE_DOCUMENTATION.md) | 🇩🇰 [Dansk](./da/CODEBASE_DOCUMENTATION.md) | 🇫🇮 [Suomi](./fi/CODEBASE_DOCUMENTATION.md) | 🇮🇱 [עברית](./he/CODEBASE_DOCUMENTATION.md) | 🇭🇺 [Magyar](./hu/CODEBASE_DOCUMENTATION.md) | 🇮🇩 [Bahasa Indonesia](./id/CODEBASE_DOCUMENTATION.md) | 🇰🇷 [한국어](./ko/CODEBASE_DOCUMENTATION.md) | 🇲🇾 [Bahasa Melayu](./ms/CODEBASE_DOCUMENTATION.md) | 🇳🇱 [Nederlands](./nl/CODEBASE_DOCUMENTATION.md) | 🇳🇴 [Norsk](./no/CODEBASE_DOCUMENTATION.md) | 🇵🇹 [Português (Portugal)](./pt/CODEBASE_DOCUMENTATION.md) | 🇷🇴 [Română](./ro/CODEBASE_DOCUMENTATION.md) | 🇵🇱 [Polski](./pl/CODEBASE_DOCUMENTATION.md) | 🇸🇰 [Slovenčina](./sk/CODEBASE_DOCUMENTATION.md) | 🇸🇪 [Svenska](./sv/CODEBASE_DOCUMENTATION.md) | 🇵🇭 [Filipino](./phi/CODEBASE_DOCUMENTATION.md) | 🇨🇿 [Čeština](./cs/CODEBASE_DOCUMENTATION.md)
8
+ - **FEATURES.md**: 🇺🇸 [English](../FEATURES.md) | 🇧🇷 [Português (Brasil)](./pt-BR/FEATURES.md) | 🇪🇸 [Español](./es/FEATURES.md) | 🇫🇷 [Français](./fr/FEATURES.md) | 🇮🇹 [Italiano](./it/FEATURES.md) | 🇷🇺 [Русский](./ru/FEATURES.md) | 🇨🇳 [中文 (简体)](./zh-CN/FEATURES.md) | 🇩🇪 [Deutsch](./de/FEATURES.md) | 🇮🇳 [हिन्दी](./in/FEATURES.md) | 🇹🇭 [ไทย](./th/FEATURES.md) | 🇺🇦 [Українська](./uk-UA/FEATURES.md) | 🇸🇦 [العربية](./ar/FEATURES.md) | 🇯🇵 [日本語](./ja/FEATURES.md) | 🇻🇳 [Tiếng Việt](./vi/FEATURES.md) | 🇧🇬 [Български](./bg/FEATURES.md) | 🇩🇰 [Dansk](./da/FEATURES.md) | 🇫🇮 [Suomi](./fi/FEATURES.md) | 🇮🇱 [עברית](./he/FEATURES.md) | 🇭🇺 [Magyar](./hu/FEATURES.md) | 🇮🇩 [Bahasa Indonesia](./id/FEATURES.md) | 🇰🇷 [한국어](./ko/FEATURES.md) | 🇲🇾 [Bahasa Melayu](./ms/FEATURES.md) | 🇳🇱 [Nederlands](./nl/FEATURES.md) | 🇳🇴 [Norsk](./no/FEATURES.md) | 🇵🇹 [Português (Portugal)](./pt/FEATURES.md) | 🇷🇴 [Română](./ro/FEATURES.md) | 🇵🇱 [Polski](./pl/FEATURES.md) | 🇸🇰 [Slovenčina](./sk/FEATURES.md) | 🇸🇪 [Svenska](./sv/FEATURES.md) | 🇵🇭 [Filipino](./phi/FEATURES.md) | 🇨🇿 [Čeština](./cs/FEATURES.md)
9
+ - **TROUBLESHOOTING.md**: 🇺🇸 [English](../TROUBLESHOOTING.md) | 🇧🇷 [Português (Brasil)](./pt-BR/TROUBLESHOOTING.md) | 🇪🇸 [Español](./es/TROUBLESHOOTING.md) | 🇫🇷 [Français](./fr/TROUBLESHOOTING.md) | 🇮🇹 [Italiano](./it/TROUBLESHOOTING.md) | 🇷🇺 [Русский](./ru/TROUBLESHOOTING.md) | 🇨🇳 [中文 (简体)](./zh-CN/TROUBLESHOOTING.md) | 🇩🇪 [Deutsch](./de/TROUBLESHOOTING.md) | 🇮🇳 [हिन्दी](./in/TROUBLESHOOTING.md) | 🇹🇭 [ไทย](./th/TROUBLESHOOTING.md) | 🇺🇦 [Українська](./uk-UA/TROUBLESHOOTING.md) | 🇸🇦 [العربية](./ar/TROUBLESHOOTING.md) | 🇯🇵 [日本語](./ja/TROUBLESHOOTING.md) | 🇻🇳 [Tiếng Việt](./vi/TROUBLESHOOTING.md) | 🇧🇬 [Български](./bg/TROUBLESHOOTING.md) | 🇩🇰 [Dansk](./da/TROUBLESHOOTING.md) | 🇫🇮 [Suomi](./fi/TROUBLESHOOTING.md) | 🇮🇱 [עברית](./he/TROUBLESHOOTING.md) | 🇭🇺 [Magyar](./hu/TROUBLESHOOTING.md) | 🇮🇩 [Bahasa Indonesia](./id/TROUBLESHOOTING.md) | 🇰🇷 [한국어](./ko/TROUBLESHOOTING.md) | 🇲🇾 [Bahasa Melayu](./ms/TROUBLESHOOTING.md) | 🇳🇱 [Nederlands](./nl/TROUBLESHOOTING.md) | 🇳🇴 [Norsk](./no/TROUBLESHOOTING.md) | 🇵🇹 [Português (Portugal)](./pt/TROUBLESHOOTING.md) | 🇷🇴 [Română](./ro/TROUBLESHOOTING.md) | 🇵🇱 [Polski](./pl/TROUBLESHOOTING.md) | 🇸🇰 [Slovenčina](./sk/TROUBLESHOOTING.md) | 🇸🇪 [Svenska](./sv/TROUBLESHOOTING.md) | 🇵🇭 [Filipino](./phi/TROUBLESHOOTING.md) | 🇨🇿 [Čeština](./cs/TROUBLESHOOTING.md)
10
+ - **USER_GUIDE.md**: 🇺🇸 [English](../USER_GUIDE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/USER_GUIDE.md) | 🇪🇸 [Español](./es/USER_GUIDE.md) | 🇫🇷 [Français](./fr/USER_GUIDE.md) | 🇮🇹 [Italiano](./it/USER_GUIDE.md) | 🇷🇺 [Русский](./ru/USER_GUIDE.md) | 🇨🇳 [中文 (简体)](./zh-CN/USER_GUIDE.md) | 🇩🇪 [Deutsch](./de/USER_GUIDE.md) | 🇮🇳 [हिन्दी](./in/USER_GUIDE.md) | 🇹🇭 [ไทย](./th/USER_GUIDE.md) | 🇺🇦 [Українська](./uk-UA/USER_GUIDE.md) | 🇸🇦 [العربية](./ar/USER_GUIDE.md) | 🇯🇵 [日本語](./ja/USER_GUIDE.md) | 🇻🇳 [Tiếng Việt](./vi/USER_GUIDE.md) | 🇧🇬 [Български](./bg/USER_GUIDE.md) | 🇩🇰 [Dansk](./da/USER_GUIDE.md) | 🇫🇮 [Suomi](./fi/USER_GUIDE.md) | 🇮🇱 [עברית](./he/USER_GUIDE.md) | 🇭🇺 [Magyar](./hu/USER_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](./id/USER_GUIDE.md) | 🇰🇷 [한국어](./ko/USER_GUIDE.md) | 🇲🇾 [Bahasa Melayu](./ms/USER_GUIDE.md) | 🇳🇱 [Nederlands](./nl/USER_GUIDE.md) | 🇳🇴 [Norsk](./no/USER_GUIDE.md) | 🇵🇹 [Português (Portugal)](./pt/USER_GUIDE.md) | 🇷🇴 [Română](./ro/USER_GUIDE.md) | 🇵🇱 [Polski](./pl/USER_GUIDE.md) | 🇸🇰 [Slovenčina](./sk/USER_GUIDE.md) | 🇸🇪 [Svenska](./sv/USER_GUIDE.md) | 🇵🇭 [Filipino](./phi/USER_GUIDE.md) | 🇨🇿 [Čeština](./cs/USER_GUIDE.md)
11
+ - **VM_DEPLOYMENT_GUIDE.md**: 🇺🇸 [English](../VM_DEPLOYMENT_GUIDE.md) | 🇧🇷 [Português (Brasil)](./pt-BR/VM_DEPLOYMENT_GUIDE.md) | 🇪🇸 [Español](./es/VM_DEPLOYMENT_GUIDE.md) | 🇫🇷 [Français](./fr/VM_DEPLOYMENT_GUIDE.md) | 🇮🇹 [Italiano](./it/VM_DEPLOYMENT_GUIDE.md) | 🇷🇺 [Русский](./ru/VM_DEPLOYMENT_GUIDE.md) | 🇨🇳 [中文 (简体)](./zh-CN/VM_DEPLOYMENT_GUIDE.md) | 🇩🇪 [Deutsch](./de/VM_DEPLOYMENT_GUIDE.md) | 🇮🇳 [हिन्दी](./in/VM_DEPLOYMENT_GUIDE.md) | 🇹🇭 [ไทย](./th/VM_DEPLOYMENT_GUIDE.md) | 🇺🇦 [Українська](./uk-UA/VM_DEPLOYMENT_GUIDE.md) | 🇸🇦 [العربية](./ar/VM_DEPLOYMENT_GUIDE.md) | 🇯🇵 [日本語](./ja/VM_DEPLOYMENT_GUIDE.md) | 🇻🇳 [Tiếng Việt](./vi/VM_DEPLOYMENT_GUIDE.md) | 🇧🇬 [Български](./bg/VM_DEPLOYMENT_GUIDE.md) | 🇩🇰 [Dansk](./da/VM_DEPLOYMENT_GUIDE.md) | 🇫🇮 [Suomi](./fi/VM_DEPLOYMENT_GUIDE.md) | 🇮🇱 [עברית](./he/VM_DEPLOYMENT_GUIDE.md) | 🇭🇺 [Magyar](./hu/VM_DEPLOYMENT_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](./id/VM_DEPLOYMENT_GUIDE.md) | 🇰🇷 [한국어](./ko/VM_DEPLOYMENT_GUIDE.md) | 🇲🇾 [Bahasa Melayu](./ms/VM_DEPLOYMENT_GUIDE.md) | 🇳🇱 [Nederlands](./nl/VM_DEPLOYMENT_GUIDE.md) | 🇳🇴 [Norsk](./no/VM_DEPLOYMENT_GUIDE.md) | 🇵🇹 [Português (Portugal)](./pt/VM_DEPLOYMENT_GUIDE.md) | 🇷🇴 [Română](./ro/VM_DEPLOYMENT_GUIDE.md) | 🇵🇱 [Polski](./pl/VM_DEPLOYMENT_GUIDE.md) | 🇸🇰 [Slovenčina](./sk/VM_DEPLOYMENT_GUIDE.md) | 🇸🇪 [Svenska](./sv/VM_DEPLOYMENT_GUIDE.md) | 🇵🇭 [Filipino](./phi/VM_DEPLOYMENT_GUIDE.md) | 🇨🇿 [Čeština](./cs/VM_DEPLOYMENT_GUIDE.md)
12
+
13
+ Generated on 2026-03-19.
@@ -1,73 +1,71 @@
1
- 🌐 **Languages:** 🇺🇸 [English](../../README.md) · 🇧🇷 [pt-BR](../pt-BR/VM_DEPLOYMENT_GUIDE.md) · 🇪🇸 [es](../es/VM_DEPLOYMENT_GUIDE.md) · 🇫🇷 [fr](../fr/VM_DEPLOYMENT_GUIDE.md) · 🇩🇪 [de](../de/VM_DEPLOYMENT_GUIDE.md) · 🇮🇹 [it](../it/VM_DEPLOYMENT_GUIDE.md) · 🇷🇺 [ru](../ru/VM_DEPLOYMENT_GUIDE.md) · 🇨🇳 [zh-CN](../zh-CN/VM_DEPLOYMENT_GUIDE.md) · 🇯🇵 [ja](../ja/VM_DEPLOYMENT_GUIDE.md) · 🇰🇷 [ko](../ko/VM_DEPLOYMENT_GUIDE.md) · 🇸🇦 [ar](../ar/VM_DEPLOYMENT_GUIDE.md) · 🇮🇳 [in](../in/VM_DEPLOYMENT_GUIDE.md) · 🇹🇭 [th](../th/VM_DEPLOYMENT_GUIDE.md) · 🇻🇳 [vi](../vi/VM_DEPLOYMENT_GUIDE.md) · 🇮🇩 [id](../id/VM_DEPLOYMENT_GUIDE.md) · 🇲🇾 [ms](../ms/VM_DEPLOYMENT_GUIDE.md) · 🇳🇱 [nl](../nl/VM_DEPLOYMENT_GUIDE.md) · 🇵🇱 [pl](../pl/VM_DEPLOYMENT_GUIDE.md) · 🇸🇪 [sv](../sv/VM_DEPLOYMENT_GUIDE.md) · 🇳🇴 [no](../no/VM_DEPLOYMENT_GUIDE.md) · 🇩🇰 [da](../da/VM_DEPLOYMENT_GUIDE.md) · 🇫🇮 [fi](../fi/VM_DEPLOYMENT_GUIDE.md) · 🇵🇹 [pt](../pt/VM_DEPLOYMENT_GUIDE.md) · 🇷🇴 [ro](../ro/VM_DEPLOYMENT_GUIDE.md) · 🇭🇺 [hu](../hu/VM_DEPLOYMENT_GUIDE.md) · 🇧🇬 [bg](../bg/VM_DEPLOYMENT_GUIDE.md) · 🇸🇰 [sk](../sk/VM_DEPLOYMENT_GUIDE.md) · 🇺🇦 [uk-UA](../uk-UA/VM_DEPLOYMENT_GUIDE.md) · 🇮🇱 [he](../he/VM_DEPLOYMENT_GUIDE.md) · 🇵🇭 [phi](../phi/VM_DEPLOYMENT_GUIDE.md)
1
+ # OmniRoute دليل النشر على VM باستخدام Cloudflare
2
2
 
3
- ---
4
-
5
- # OmniRoute — Guia de Deploy em VM com Cloudflare
3
+ 🌐 **Languages:** 🇺🇸 [English](../../VM_DEPLOYMENT_GUIDE.md) | 🇧🇷 [Português (Brasil)](../pt-BR/VM_DEPLOYMENT_GUIDE.md) | 🇪🇸 [Español](../es/VM_DEPLOYMENT_GUIDE.md) | 🇫🇷 [Français](../fr/VM_DEPLOYMENT_GUIDE.md) | 🇮🇹 [Italiano](../it/VM_DEPLOYMENT_GUIDE.md) | 🇷🇺 [Русский](../ru/VM_DEPLOYMENT_GUIDE.md) | 🇨🇳 [中文 (简体)](../zh-CN/VM_DEPLOYMENT_GUIDE.md) | 🇩🇪 [Deutsch](../de/VM_DEPLOYMENT_GUIDE.md) | 🇮🇳 [हिन्दी](../in/VM_DEPLOYMENT_GUIDE.md) | 🇹🇭 [ไทย](../th/VM_DEPLOYMENT_GUIDE.md) | 🇺🇦 [Українська](../uk-UA/VM_DEPLOYMENT_GUIDE.md) | 🇸🇦 [العربية](../ar/VM_DEPLOYMENT_GUIDE.md) | 🇯🇵 [日本語](../ja/VM_DEPLOYMENT_GUIDE.md) | 🇻🇳 [Tiếng Việt](../vi/VM_DEPLOYMENT_GUIDE.md) | 🇧🇬 [Български](../bg/VM_DEPLOYMENT_GUIDE.md) | 🇩🇰 [Dansk](../da/VM_DEPLOYMENT_GUIDE.md) | 🇫🇮 [Suomi](../fi/VM_DEPLOYMENT_GUIDE.md) | 🇮🇱 [עברית](../he/VM_DEPLOYMENT_GUIDE.md) | 🇭🇺 [Magyar](../hu/VM_DEPLOYMENT_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](../id/VM_DEPLOYMENT_GUIDE.md) | 🇰🇷 [한국어](../ko/VM_DEPLOYMENT_GUIDE.md) | 🇲🇾 [Bahasa Melayu](../ms/VM_DEPLOYMENT_GUIDE.md) | 🇳🇱 [Nederlands](../nl/VM_DEPLOYMENT_GUIDE.md) | 🇳🇴 [Norsk](../no/VM_DEPLOYMENT_GUIDE.md) | 🇵🇹 [Português (Portugal)](../pt/VM_DEPLOYMENT_GUIDE.md) | 🇷🇴 [Română](../ro/VM_DEPLOYMENT_GUIDE.md) | 🇵🇱 [Polski](../pl/VM_DEPLOYMENT_GUIDE.md) | 🇸🇰 [Slovenčina](../sk/VM_DEPLOYMENT_GUIDE.md) | 🇸🇪 [Svenska](../sv/VM_DEPLOYMENT_GUIDE.md) | 🇵🇭 [Filipino](../phi/VM_DEPLOYMENT_GUIDE.md) | 🇨🇿 [Čeština](../cs/VM_DEPLOYMENT_GUIDE.md)
6
4
 
7
- Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare.
5
+ الدليل الكامل لتثبيت OmniRoute وتكوينه على VM (VPS) مع المجال المُدار عبر Cloudflare.
8
6
 
9
7
  ---
10
8
 
11
- ## Pré-Requisitos
9
+ ## المتطلبات الأساسية
12
10
 
13
- | Item | Mínimo | Recomendado |
14
- | ----------- | ------------------------ | ---------------- |
15
- | **CPU** | 1 vCPU | 2 vCPU |
16
- | **RAM** | 1 GB | 2 GB |
17
- | **Disco** | 10 GB SSD | 25 GB SSD |
18
- | **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
19
- | **Domínio** | Registrado no Cloudflare | — |
20
- | **Docker** | Docker Engine 24+ | Docker 27+ |
11
+ | العنصر | الحد الأدنى | موصى به |
12
+ | ---------------------------- | ----------------------------------- | ----------------------------------- |
13
+ | ** وحدة المعالجة المركزية ** | 1 وحدة المعالجة المركزية الافتراضية | 2 وحدة المعالجة المركزية الافتراضية |
14
+ | **ذاكرة الوصول العشوائي** | 1 جيجا | 2 جيجا |
15
+ | **القرص** | 10 جيجا اس اس دي | 25 جيجا اس اس دي |
16
+ | **نظام التشغيل** | أوبونتو 22.04 LTS | أوبونتو 24.04 LTS |
17
+ | **المجال** | مسجل في Cloudflare | — |
18
+ | ** عامل الميناء ** | محرك دوكر 24+ | عامل الميناء 27+ |
21
19
 
22
- **Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail.
20
+ **المزودون الذين تم اختبارهم**: Akamai (Linode)، DigitalOcean، Vultr، Hetzner، AWS Lightsail.
23
21
 
24
22
  ---
25
23
 
26
- ## 1. Configurar a VM
24
+ ## 1. قم بتكوين الجهاز الافتراضي
27
25
 
28
- ### 1.1 Criar a instância
26
+ ### 1.1 إنشاء المثيل
29
27
 
30
- No seu provider de VPS preferido:
28
+ على موفر VPS المفضل لديك:
31
29
 
32
- - Escolha Ubuntu 24.04 LTS
33
- - Selecione o plano mínimo (1 vCPU / 1 GB RAM)
34
- - Defina uma senha forte para root ou configure SSH key
35
- - Anote o **IP público** (ex: `203.0.113.10`)
30
+ - اختر Ubuntu 24.04 LTS
31
+ - حدد الحد الأدنى للخطة (1 vCPU / 1 جيجابايت من ذاكرة الوصول العشوائي)
32
+ - قم بتعيين كلمة مرور جذر قوية أو قم بتكوين مفتاح SSH
33
+ - لاحظ **عنوان IP العام** (على سبيل المثال، `203.0.113.10`)
36
34
 
37
- ### 1.2 Conectar via SSH
35
+ ### 1.2 الاتصال عبر SSH
38
36
 
39
37
  ```bash
40
38
  ssh root@203.0.113.10
41
39
  ```
42
40
 
43
- ### 1.3 Atualizar o sistema
41
+ ### 1.3 تحديث النظام
44
42
 
45
43
  ```bash
46
44
  apt update && apt upgrade -y
47
45
  ```
48
46
 
49
- ### 1.4 Instalar Docker
47
+ ### 1.4 تثبيت عامل الميناء
50
48
 
51
49
  ```bash
52
- # Instalar dependências
50
+ # Install dependencies
53
51
  apt install -y ca-certificates curl gnupg
54
52
 
55
- # Adicionar repositório oficial do Docker
53
+ # Add official Docker repository
56
54
  install -m 0755 -d /etc/apt/keyrings
57
55
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
58
56
  chmod a+r /etc/apt/keyrings/docker.gpg
59
- 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
57
+ 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
60
58
  apt update
61
59
  apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
62
60
  ```
63
61
 
64
- ### 1.5 Instalar nginx
62
+ ### 1.5 تثبيت nginx
65
63
 
66
64
  ```bash
67
65
  apt install -y nginx
68
66
  ```
69
67
 
70
- ### 1.6 Configurar Firewall (UFW)
68
+ ### 1.6 تكوين جدار الحماية (UFW)
71
69
 
72
70
  ```bash
73
71
  ufw default deny incoming
@@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS
78
76
  ufw enable
79
77
  ```
80
78
 
81
- > **Dica**: Para segurança máxima, restrinja as portas 80 e 443 apenas para IPs da Cloudflare. Veja a seção [Segurança Avançada](#segurança-avançada).
79
+ > **نصيحة**: للحصول على الحد الأقصى من الأمان، قم بتقييد المنفذين 80 و443 بعناوين Cloudflare IP فقط. راجع قسم [Advanced Security](#advanced-security).
82
80
 
83
81
  ---
84
82
 
85
- ## 2. Instalar o OmniRoute
83
+ ## 2. قم بتثبيت OmniRoute
86
84
 
87
- ### 2.1 Criar diretório de configuração
85
+ ### 2.1 إنشاء دليل التكوين
88
86
 
89
87
  ```bash
90
88
  mkdir -p /opt/omniroute
91
89
  ```
92
90
 
93
- ### 2.2 Criar arquivo de variáveis de ambiente
91
+ ### 2.2 إنشاء ملف متغيرات البيئة
94
92
 
95
93
  ```bash
96
- cat > /opt/omniroute/.env << 'EOF'
97
- # === Segurança ===
98
- JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS
99
- INITIAL_PASSWORD=SuaSenhaSegura123!
100
- API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA
101
- STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA
94
+ cat > /opt/omniroute/.env << EOF
95
+ # === Security ===
96
+ JWT_SECRET=CHANGE-TO-A-UNIQUE-64-CHAR-SECRET-KEY
97
+ INITIAL_PASSWORD=YourSecurePassword123!
98
+ API_KEY_SECRET=REPLACE-WITH-ANOTHER-SECRET-KEY
99
+ STORAGE_ENCRYPTION_KEY=REPLACE-WITH-THIRD-SECRET-KEY
102
100
  STORAGE_ENCRYPTION_KEY_VERSION=v1
103
- MACHINE_ID_SALT=ALTERE-PARA-SALT-UNICO
101
+ MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT
104
102
 
105
103
  # === App ===
106
104
  PORT=20128
@@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true
112
110
  AUTH_COOKIE_SECURE=false
113
111
  REQUIRE_API_KEY=false
114
112
 
115
- # === Domain (altere para seu domínio) ===
113
+ # === Domain (change to your domain) ===
116
114
  BASE_URL=https://llms.seudominio.com
117
115
  NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com
118
116
 
119
- # === Cloud Sync (opcional) ===
117
+ # === Cloud Sync (optional) ===
120
118
  # CLOUD_URL=https://cloud.omniroute.online
121
119
  # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online
122
120
  EOF
123
121
  ```
124
122
 
125
- > ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave.
123
+ > ⚠️ **هام**: أنشئ مفاتيح سرية فريدة! استخدم `openssl rand -hex 32` لكل مفتاح.
126
124
 
127
- ### 2.3 Iniciar o container
125
+ ### 2.3 ابدأ الحاوية
128
126
 
129
127
  ```bash
130
128
  docker pull diegosouzapw/omniroute:latest
@@ -138,45 +136,45 @@ docker run -d \
138
136
  diegosouzapw/omniroute:latest
139
137
  ```
140
138
 
141
- ### 2.4 Verificar se está rodando
139
+ ### 2.4 التحقق من أنه قيد التشغيل
142
140
 
143
141
  ```bash
144
142
  docker ps | grep omniroute
145
143
  docker logs omniroute --tail 20
146
144
  ```
147
145
 
148
- Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`.
146
+ يجب أن يعرض: `[DB] SQLite database ready` و`listening on port 20128`.
149
147
 
150
148
  ---
151
149
 
152
- ## 3. Configurar nginx (Reverse Proxy)
150
+ ## 3. تكوين nginx (الوكيل العكسي)
153
151
 
154
- ### 3.1 Gerar certificado SSL (Cloudflare Origin)
152
+ ### 3.1 إنشاء شهادة SSL (أصل Cloudflare)
155
153
 
156
- No painel da Cloudflare:
154
+ في لوحة معلومات Cloudflare:
157
155
 
158
- 1. em **SSL/TLS → Origin Server**
159
- 2. Clique **Create Certificate**
160
- 3. Deixe os padrões (15 anos, \*.seudominio.com)
161
- 4. Copie o **Origin Certificate** e a **Private Key**
156
+ 1. انتقل إلى **SSL/TLS → خادم الأصل**
157
+ 2. انقر **إنشاء شهادة**
158
+ 3. احتفظ بالإعدادات الافتراضية (15 عامًا، \*.yourdomain.com)
159
+ 4. انسخ **شهادة المنشأ** و**المفتاح الخاص**
162
160
 
163
161
  ```bash
164
162
  mkdir -p /etc/nginx/ssl
165
163
 
166
- # Colar o certificado
164
+ # Paste the certificate
167
165
  nano /etc/nginx/ssl/origin.crt
168
166
 
169
- # Colar a chave privada
167
+ # Paste the private key
170
168
  nano /etc/nginx/ssl/origin.key
171
169
 
172
170
  chmod 600 /etc/nginx/ssl/origin.key
173
171
  ```
174
172
 
175
- ### 3.2 Configuração do nginx
173
+ ### 3.2 تكوين إنجينكس
176
174
 
177
175
  ```bash
178
- cat > /etc/nginx/sites-available/omniroute << 'NGINX'
179
- # Default server — bloqueia acesso direto por IP
176
+ cat > /etc/nginx/sites-available/omniroute << NGINX
177
+ # Default server — blocks direct access via IP
180
178
  server {
181
179
  listen 80 default_server;
182
180
  listen [::]:80 default_server;
@@ -192,7 +190,7 @@ server {
192
190
  server {
193
191
  listen 443 ssl;
194
192
  listen [::]:443 ssl;
195
- server_name llms.seudominio.com; # Altere para seu domínio
193
+ server_name llms.yourdomain.com; # Change to your domain
196
194
 
197
195
  ssl_certificate /etc/nginx/ssl/origin.crt;
198
196
  ssl_certificate_key /etc/nginx/ssl/origin.key;
@@ -210,7 +208,7 @@ server {
210
208
  # WebSocket support
211
209
  proxy_http_version 1.1;
212
210
  proxy_set_header Upgrade $http_upgrade;
213
- proxy_set_header Connection "upgrade";
211
+ proxy_set_header Connection upgrade”;
214
212
 
215
213
  # SSE (Server-Sent Events) — streaming AI responses
216
214
  proxy_buffering off;
@@ -224,61 +222,61 @@ server {
224
222
  server {
225
223
  listen 80;
226
224
  listen [::]:80;
227
- server_name llms.seudominio.com;
225
+ server_name llms.yourdomain.com;
228
226
  return 301 https://$server_name$request_uri;
229
227
  }
230
228
  NGINX
231
229
  ```
232
230
 
233
- ### 3.3 Ativar e testar
231
+ ### 3.3 تمكين واختبار
234
232
 
235
233
  ```bash
236
- # Remover config padrão
234
+ # Remove default configuration
237
235
  rm -f /etc/nginx/sites-enabled/default
238
236
 
239
- # Ativar OmniRoute
237
+ # Enable OmniRoute
240
238
  ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute
241
239
 
242
- # Testar e recarregar
240
+ # Test and reload
243
241
  nginx -t && systemctl reload nginx
244
242
  ```
245
243
 
246
244
  ---
247
245
 
248
- ## 4. Configurar Cloudflare DNS
246
+ ## 4. تكوين Cloudflare DNS
249
247
 
250
- ### 4.1 Adicionar registro DNS
248
+ ### 4.1 إضافة سجل DNS
251
249
 
252
- No painel da Cloudflare → DNS:
250
+ في لوحة معلومات Cloudflare → DNS:
253
251
 
254
- | Type | Name | Content | Proxy |
255
- | ---- | ------ | ------------------------- | ---------- |
256
- | A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied |
252
+ | اكتب | الاسم | المحتوى | الوكيل |
253
+ | ---- | ------ | ---------------------- | -------- |
254
+ | أ | `llms` | `203.0.113.10` (VM IP) | ✅ توكيل |
257
255
 
258
- ### 4.2 Configurar SSL
256
+ ### 4.2 تكوين SSL
259
257
 
260
- Em **SSL/TLS → Overview**:
258
+ ضمن **SSL/TLS → نظرة عامة**:
261
259
 
262
- - Modo: **Full (Strict)**
260
+ - الوضع: **كامل (صارم)**
263
261
 
264
- Em **SSL/TLS → Edge Certificates**:
262
+ ضمن **SSL/TLS → شهادات الحافة**:
265
263
 
266
- - Always Use HTTPS:On
267
- - Minimum TLS Version: TLS 1.2
268
- - Automatic HTTPS Rewrites:On
264
+ - استخدم HTTPS دائمًا: قيد التشغيل
265
+ - الحد الأدنى لإصدار TLS: TLS 1.2
266
+ - إعادة كتابة HTTPS تلقائيًا:تشغيل
269
267
 
270
- ### 4.3 Testar
268
+ ### 4.3 الاختبار
271
269
 
272
270
  ```bash
273
271
  curl -sI https://llms.seudominio.com/health
274
- # Deve retornar HTTP/2 200
272
+ # Should return HTTP/2 200
275
273
  ```
276
274
 
277
275
  ---
278
276
 
279
- ## 5. Operações e Manutenção
277
+ ## 5. العمليات والصيانة
280
278
 
281
- ### Atualizar para nova versão
279
+ ### الترقية إلى الإصدار الجديد
282
280
 
283
281
  ```bash
284
282
  docker pull diegosouzapw/omniroute:latest
@@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \
290
288
  diegosouzapw/omniroute:latest
291
289
  ```
292
290
 
293
- ### Ver logs
291
+ ### عرض السجلات
294
292
 
295
293
  ```bash
296
- docker logs -f omniroute # Stream em tempo real
297
- docker logs omniroute --tail 50 # Últimas 50 linhas
294
+ docker logs -f omniroute # Real-time stream
295
+ docker logs omniroute --tail 50 # Last 50 lines
298
296
  ```
299
297
 
300
- ### Backup manual do banco
298
+ ### النسخ الاحتياطي لقاعدة البيانات يدويا
301
299
 
302
300
  ```bash
303
- # Copiar dados do volume para o host
301
+ # Copy data from the volume to the host
304
302
  docker cp omniroute:/app/data ./backup-$(date +%F)
305
303
 
306
- # Ou comprimir todo o volume
304
+ # Or compress the entire volume
307
305
  docker run --rm -v omniroute-data:/data -v $(pwd):/backup \
308
306
  alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data
309
307
  ```
310
308
 
311
- ### Restaurar de backup
309
+ ### الاستعادة من النسخة الاحتياطية
312
310
 
313
311
  ```bash
314
312
  docker stop omniroute
315
313
  docker run --rm -v omniroute-data:/data -v $(pwd):/backup \
316
- alpine sh -c "rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /"
314
+ alpine sh -c rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /”
317
315
  docker start omniroute
318
316
  ```
319
317
 
320
318
  ---
321
319
 
322
- ## 6. Segurança Avançada
320
+ ## 6. الأمان المتقدم
323
321
 
324
- ### Restringir nginx para Cloudflare IPs
322
+ ### تقييد nginx على عناوين IP الخاصة بـ Cloudflare
325
323
 
326
324
  ```bash
327
- cat > /etc/nginx/cloudflare-ips.conf << 'CF'
328
- # Cloudflare IPv4 ranges — atualizar periodicamente
325
+ cat > /etc/nginx/cloudflare-ips.conf << CF
326
+ # Cloudflare IPv4 ranges — update periodically
329
327
  # https://www.cloudflare.com/ips-v4/
330
328
  set_real_ip_from 173.245.48.0/20;
331
329
  set_real_ip_from 103.21.244.0/22;
@@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP;
346
344
  CF
347
345
  ```
348
346
 
349
- Adicionar no `nginx.conf` dentro do bloco `http {}`:
347
+ أضف ما يلي إلى `nginx.conf` داخل الكتلة `http {}`:
350
348
 
351
349
  ```nginx
352
350
  include /etc/nginx/cloudflare-ips.conf;
353
351
  ```
354
352
 
355
- ### Install fail2ban
353
+ ### تثبيت Fail2ban
356
354
 
357
355
  ```bash
358
356
  apt install -y fail2ban
359
357
  systemctl enable fail2ban
360
358
  systemctl start fail2ban
361
359
 
362
- # Verificar status
360
+ # Check status
363
361
  fail2ban-client status sshd
364
362
  ```
365
363
 
366
- ### Bloquear acesso direto na porta do Docker
364
+ ### منع الوصول المباشر إلى منفذ Docker
367
365
 
368
366
  ```bash
369
- # Impedir acesso externo direto à porta 20128
367
+ # Prevent direct external access to port 20128
370
368
  iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP
371
369
  iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT
372
370
 
373
- # Persistir as regras
371
+ # Persist the rules
374
372
  apt install -y iptables-persistent
375
373
  netfilter-persistent save
376
374
  ```
377
375
 
378
376
  ---
379
377
 
380
- ## 7. Deploy do Cloud Worker (Opcional)
378
+ ## 7. النشر إلى عمال Cloudflare (اختياري)
381
379
 
382
- Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente):
380
+ للوصول عن بعد عبر Cloudflare Workers (دون الكشف عن الجهاز الافتراضي مباشرة):
383
381
 
384
382
  ```bash
385
- # No repositório local
383
+ # In the local repository
386
384
  cd omnirouteCloud
387
385
  npm install
388
386
  npx wrangler login
389
387
  npx wrangler deploy
390
388
  ```
391
389
 
392
- Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md).
390
+ راجع الوثائق الكاملة على [omnirouteCloud/README.md](../omnirouteCloud/README.md).
393
391
 
394
392
  ---
395
393
 
396
- ## Resumo de Portas
394
+ ## ملخص المنفذ
397
395
 
398
- | Porta | Serviço | Acesso |
399
- | ----- | ----------- | ----------------------------- |
400
- | 22 | SSH | Público (com fail2ban) |
401
- | 80 | nginx HTTP | Redirect → HTTPS |
402
- | 443 | nginx HTTPS | Via Cloudflare Proxy |
403
- | 20128 | OmniRoute | Somente localhost (via nginx) |
396
+ | ميناء | الخدمة | الوصول |
397
+ | ----- | ------------- | ----------------------------- |
398
+ | 22 | سش | عام (مع Fail2ban) |
399
+ | 80 | إنجينكس HTTP | إعادة التوجيه → HTTPS |
400
+ | 443 | إنجينكس HTTPS | عبر وكيل Cloudflare |
401
+ | 20128 | أومنيروتي | المضيف المحلي فقط (عبر nginx) |