diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index deaf9d44cd..b18f515c4c 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1,6 +1,6 @@ # OmniRoute Architecture -🌐 **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) +🌐 **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) _Last updated: 2026-03-04_ diff --git a/docs/VM_DEPLOYMENT_GUIDE.md b/docs/VM_DEPLOYMENT_GUIDE.md index 34838c49a2..d5dce0cf30 100644 --- a/docs/VM_DEPLOYMENT_GUIDE.md +++ b/docs/VM_DEPLOYMENT_GUIDE.md @@ -1,5 +1,7 @@ # OmniRoute — Deployment Guide on VM with Cloudflare +🌐 **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) + Complete guide to install and configure OmniRoute on a VM (VPS) with domain managed via Cloudflare. --- diff --git a/docs/i18n/README.md b/docs/i18n/README.md index bd0cf76ce8..f7c10972bf 100644 --- a/docs/i18n/README.md +++ b/docs/i18n/README.md @@ -2,20 +2,12 @@ This directory contains machine-assisted translations based on the English docs. -- **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) -- **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) -- **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) -- **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) -- **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) -- **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) +- **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) +- **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) +- **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) +- **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) +- **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) +- **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) +- **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) -## Recent note: Codex account limit policy - -Documentation now includes Codex account-level quota policy behavior: - -- Per-account toggles: `5h` and `Weekly` (ON/OFF). -- Threshold policy: enabled window reaching >=90% marks account as ineligible for selection. -- Auto-rotation: traffic moves to the next eligible Codex account. -- Auto-reuse: account becomes eligible again after provider `resetAt` passes. - -Generated on 2026-02-26. +Generated on 2026-03-19. diff --git a/docs/i18n/ar/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/ar/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..c9bd2d844f 100644 --- a/docs/i18n/ar/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/ar/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — دليل النشر على VM باستخدام Cloudflare + +🌐 **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) + +الدليل الكامل لتثبيت OmniRoute وتكوينه على VM (VPS) مع المجال المُدار عبر Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## المتطلبات الأساسية -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| العنصر | الحد الأدنى | موصى به | +| ---------------------------- | ----------------------------------- | ----------------------------------- | +| ** وحدة المعالجة المركزية ** | 1 وحدة المعالجة المركزية الافتراضية | 2 وحدة المعالجة المركزية الافتراضية | +| **ذاكرة الوصول العشوائي** | 1 جيجا | 2 جيجا | +| **القرص** | 10 جيجا اس اس دي | 25 جيجا اس اس دي | +| **نظام التشغيل** | أوبونتو 22.04 LTS | أوبونتو 24.04 LTS | +| **المجال** | مسجل في Cloudflare | — | +| ** عامل الميناء ** | محرك دوكر 24+ | عامل الميناء 27+ | + +**المزودون الذين تم اختبارهم**: Akamai (Linode)، DigitalOcean، Vultr، Hetzner، AWS Lightsail. --- -## Pré-Requisitos +## 1. قم بتكوين الجهاز الافتراضي -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 إنشاء المثيل -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +على موفر VPS المفضل لديك: ---- +- اختر Ubuntu 24.04 LTS +- حدد الحد الأدنى للخطة (1 vCPU / 1 جيجابايت من ذاكرة الوصول العشوائي) +- قم بتعيين كلمة مرور جذر قوية أو قم بتكوين مفتاح SSH +- لاحظ **عنوان IP العام** (على سبيل المثال، `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 الاتصال عبر SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 تحديث النظام ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 تثبيت عامل الميناء ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 تثبيت nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 تكوين جدار الحماية (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **نصيحة**: للحصول على الحد الأقصى من الأمان، قم بتقييد المنفذين 80 و443 بعناوين Cloudflare IP فقط. راجع قسم [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. قم بتثبيت OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 إنشاء دليل التكوين ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 إنشاء ملف متغيرات البيئة ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **هام**: أنشئ مفاتيح سرية فريدة! استخدم `openssl rand -hex 32` لكل مفتاح. -### 2.3 Iniciar o container +### 2.3 ابدأ الحاوية ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 التحقق من أنه قيد التشغيل ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +يجب أن يعرض: `[DB] SQLite database ready` و`listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. تكوين nginx (الوكيل العكسي) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 إنشاء شهادة SSL (أصل Cloudflare) -No painel da Cloudflare: +في لوحة معلومات Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. انتقل إلى **SSL/TLS → خادم الأصل** +2. انقر **إنشاء شهادة** +3. احتفظ بالإعدادات الافتراضية (15 عامًا، \*.yourdomain.com) +4. انسخ **شهادة المنشأ** و**المفتاح الخاص** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 تكوين إنجينكس ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 تمكين واختبار ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. تكوين Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 إضافة سجل DNS -No painel da Cloudflare → DNS: +في لوحة معلومات Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| اكتب | الاسم | المحتوى | الوكيل | +| ---- | ------ | ---------------------- | -------- | +| أ | `llms` | `203.0.113.10` (VM IP) | ✅ توكيل | -### 4.2 Configurar SSL +### 4.2 تكوين SSL -Em **SSL/TLS → Overview**: +ضمن **SSL/TLS → نظرة عامة**: -- Modo: **Full (Strict)** +- الوضع: **كامل (صارم)** -Em **SSL/TLS → Edge Certificates**: +ضمن **SSL/TLS → شهادات الحافة**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- استخدم HTTPS دائمًا: ✅ قيد التشغيل +- الحد الأدنى لإصدار TLS: TLS 1.2 +- إعادة كتابة HTTPS تلقائيًا: ✅ تشغيل -### 4.3 Testar +### 4.3 الاختبار ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. العمليات والصيانة -### Atualizar para nova versão +### الترقية إلى الإصدار الجديد ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### عرض السجلات ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### النسخ الاحتياطي لقاعدة البيانات يدويا ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### الاستعادة من النسخة الاحتياطية ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. الأمان المتقدم -### Restringir nginx para Cloudflare IPs +### تقييد nginx على عناوين IP الخاصة بـ Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +أضف ما يلي إلى `nginx.conf` داخل الكتلة `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### تثبيت Fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### منع الوصول المباشر إلى منفذ Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. النشر إلى عمال Cloudflare (اختياري) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +للوصول عن بعد عبر Cloudflare Workers (دون الكشف عن الجهاز الافتراضي مباشرة): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +راجع الوثائق الكاملة على [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## ملخص المنفذ -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| ميناء | الخدمة | الوصول | +| ----- | ------------- | ----------------------------- | +| 22 | سش | عام (مع Fail2ban) | +| 80 | إنجينكس HTTP | إعادة التوجيه → HTTPS | +| 443 | إنجينكس HTTPS | عبر وكيل Cloudflare | +| 20128 | أومنيروتي | المضيف المحلي فقط (عبر nginx) | diff --git a/docs/i18n/bg/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/bg/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..60aa723bf6 100644 --- a/docs/i18n/bg/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/bg/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Ръководство за внедряване на VM с Cloudflare + +🌐 **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) + +Пълно ръководство за инсталиране и конфигуриране на OmniRoute на VM (VPS) с домейн, управляван чрез Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Предпоставки -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Артикул | Минимум | Препоръчва се | +| ---------- | ------------------------ | ---------------- | +| **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 Engine 24+ | Докер 27+ | + +**Тествани доставчици**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Конфигурирайте VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Създайте екземпляра -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +На предпочитания от вас VPS доставчик: ---- +- Изберете Ubuntu 24.04 LTS +- Изберете минималния план (1 vCPU / 1 GB RAM) +- Задайте силна root парола или конфигурирайте SSH ключ +- Обърнете внимание на **публичния IP** (напр. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Свързване чрез SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Актуализирайте системата ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Инсталирайте Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Инсталирайте nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Конфигуриране на защитна стена (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Съвет**: За максимална сигурност ограничете портове 80 и 443 само до IP адреси на Cloudflare. Вижте раздела [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Инсталирайте OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Създайте конфигурационна директория ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Създайте файл с променливи на средата ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **ВАЖНО**: Генерирайте уникални секретни ключове! Използвайте `openssl rand -hex 32` за всеки ключ. -### 2.3 Iniciar o container +### 2.3 Стартирайте контейнера ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Проверете дали работи ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Трябва да показва: `[DB] SQLite database ready` и `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Конфигурирайте nginx (обратен прокси) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Генериране на SSL сертификат (Cloudflare Origin) -No painel da Cloudflare: +В таблото за управление на Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Отидете на **SSL/TLS → Origin Server** +2. Щракнете върху **Създаване на сертификат** +3. Запазете настройките по подразбиране (15 години, \*.yourdomain.com) +4. Копирайте **Сертификата за произход** и **Личния ключ** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Конфигурация на Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Активиране и тестване ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Конфигурирайте Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Добавете DNS запис -No painel da Cloudflare → DNS: +В таблото за управление на Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Тип | Име | Съдържание | Прокси | +| --- | ------ | ---------------------- | ------------ | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Проксиран | -### 4.2 Configurar SSL +### 4.2 Конфигурирайте SSL -Em **SSL/TLS → Overview**: +Под **SSL/TLS → Общ преглед**: -- Modo: **Full (Strict)** +- Режим: **Пълен (строг)** -Em **SSL/TLS → Edge Certificates**: +Под **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Винаги използвайте HTTPS: ✅ Вкл +- Минимална TLS версия: TLS 1.2 +- Автоматично пренаписване на HTTPS: ✅ Включено -### 4.3 Testar +### 4.3 Тестване ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Операции и поддръжка -### Atualizar para nova versão +### Надстройте до нова версия ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Преглед на регистрационни файлове ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Ръчно архивиране на база данни ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Възстановяване от резервно копие ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Разширена сигурност -### Restringir nginx para Cloudflare IPs +### Ограничете nginx до IP адреси на Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Добавете следното към `nginx.conf` в блока `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Инсталирайте fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Блокирайте директния достъп до порта на Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Разположете в Cloudflare Workers (по избор) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +За отдалечен достъп чрез Cloudflare Workers (без директно излагане на VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Вижте пълната документация на [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Резюме на порта -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Пристанище | Обслужване | Достъп | +| ---------- | ----------- | ------------------------------ | +| 22 | SSH | Публичен (с fail2ban) | +| 80 | nginx HTTP | Пренасочване → HTTPS | +| 443 | nginx HTTPS | Чрез прокси Cloudflare | +| 20128 | OmniRoute | Само локален хост (чрез nginx) | diff --git a/docs/i18n/da/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/da/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..b71c827936 100644 --- a/docs/i18n/da/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/da/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Installationsvejledning på VM med Cloudflare + +🌐 **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) + +Komplet guide til at installere og konfigurere OmniRoute på en VM (VPS) med domæne administreret via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Forudsætninger -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Vare | Minimum | Anbefalet | +| ---------- | ------------------------- | ---------------- | +| **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 | +| **Domæne** | Registreret på Cloudflare | — | +| **Docker** | Docker Engine 24+ | Docker 27+ | + +**Testede udbydere**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurer VM'en -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Opret instansen -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +På din foretrukne VPS-udbyder: ---- +- Vælg Ubuntu 24.04 LTS +- Vælg minimumsplanen (1 vCPU / 1 GB RAM) +- Indstil en stærk root-adgangskode eller konfigurer SSH-nøgle +- Bemærk den **offentlige IP** (f.eks. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Tilslut via SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Opdater systemet ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Installer Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Installer nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Konfigurer firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tip**: For maksimal sikkerhed skal du begrænse porte 80 og 443 til kun Cloudflare IP'er. Se afsnittet [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Installer OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Opret konfigurationsmappe ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Opret fil med miljøvariabler ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **VIGTIG**: Generer unikke hemmelige nøgler! Brug `openssl rand -hex 32` for hver nøgle. -### 2.3 Iniciar o container +### 2.3 Start beholderen ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Bekræft, at den kører ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Den skal vise: `[DB] SQLite database ready` og `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Konfigurer nginx (omvendt proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Generer SSL-certifikat (Cloudflare Origin) -No painel da Cloudflare: +I Cloudflare-dashboardet: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Gå til **SSL/TLS → Origin Server** +2. Klik på **Opret certifikat** +3. Behold standardindstillingerne (15 år, \*.ditdomæne.com) +4. Kopiér **Oprindelsescertifikatet** og den **Private nøgle** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx-konfiguration ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Aktiver og test ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurer Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Tilføj DNS-post -No painel da Cloudflare → DNS: +I Cloudflare-dashboardet → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Skriv | Navn | Indhold | Fuldmagt | +| ----- | ------ | ---------------------- | ----------- | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Fuldmagt | -### 4.2 Configurar SSL +### 4.2 Konfigurer SSL -Em **SSL/TLS → Overview**: +Under **SSL/TLS → Oversigt**: -- Modo: **Full (Strict)** +- Tilstand: **Fuld (streng)** -Em **SSL/TLS → Edge Certificates**: +Under **SSL/TLS → Edge-certifikater**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Brug altid HTTPS: ✅ Til +- Minimum TLS-version: TLS 1.2 +- Automatiske HTTPS-omskrivninger: ✅ Til -### 4.3 Testar +### 4.3 Test ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Drift og vedligeholdelse -### Atualizar para nova versão +### Opgrader til en ny version ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Se logfiler ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuel database backup ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Gendan fra backup ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Avanceret sikkerhed -### Restringir nginx para Cloudflare IPs +### Begræns nginx til Cloudflare IP'er ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Tilføj følgende til `nginx.conf` inde i `http {}` blokken: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Installer fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Bloker direkte adgang til Docker-porten ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Implementer til Cloudflare-arbejdere (valgfrit) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +For fjernadgang via Cloudflare Workers (uden at eksponere VM'en direkte): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Se den fulde dokumentation på [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Portoversigt -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Havn | Service | Adgang | +| ----- | ----------- | ------------------------- | +| 22 | SSH | Offentlig (med fail2ban) | +| 80 | nginx HTTP | Omdirigering → HTTPS | +| 443 | nginx HTTPS | Via Cloudflare Proxy | +| 20128 | OmniRoute | Kun Localhost (via nginx) | diff --git a/docs/i18n/de/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/de/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..d9ebae328d 100644 --- a/docs/i18n/de/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/de/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute – Bereitstellungshandbuch auf VM mit Cloudflare + +🌐 **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) + +Vollständige Anleitung zur Installation und Konfiguration von OmniRoute auf einer VM (VPS) mit über Cloudflare verwalteter Domäne. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Voraussetzungen -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Artikel | Minimum | Empfohlen | +| ------------------ | -------------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **Festplatte** | 10 GB SSD | 25 GB SSD | +| **Betriebssystem** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domäne** | Registriert bei Cloudflare | — | +| **Docker** | Docker Engine 24+ | Docker 27+ | + +**Getestete Anbieter**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurieren Sie die VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Erstellen Sie die Instanz -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Bei Ihrem bevorzugten VPS-Anbieter: ---- +- Wählen Sie Ubuntu 24.04 LTS +- Wählen Sie den Mindestplan (1 vCPU / 1 GB RAM) +- Legen Sie ein sicheres Root-Passwort fest oder konfigurieren Sie den SSH-Schlüssel +- Notieren Sie sich die **öffentliche IP** (z. B. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Verbindung über SSH herstellen ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Aktualisieren Sie das System ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Docker installieren ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Nginx installieren ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Firewall (UFW) konfigurieren ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tipp**: Für maximale Sicherheit beschränken Sie die Ports 80 und 443 nur auf Cloudflare-IPs. Siehe den Abschnitt [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. OmniRoute installieren -### 2.1 Criar diretório de configuração +### 2.1 Konfigurationsverzeichnis erstellen ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Umgebungsvariablendatei erstellen ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **WICHTIG**: Generieren Sie einzigartige geheime Schlüssel! Verwenden Sie `openssl rand -hex 32` für jeden Schlüssel. -### 2.3 Iniciar o container +### 2.3 Starten Sie den Container ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Stellen Sie sicher, dass es ausgeführt wird ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Es sollte Folgendes anzeigen: `[DB] SQLite database ready` und `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Nginx (Reverse Proxy) konfigurieren -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 SSL-Zertifikat generieren (Cloudflare Origin) -No painel da Cloudflare: +Im Cloudflare-Dashboard: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Gehen Sie zu **SSL/TLS → Ursprungsserver** +2. Klicken Sie auf **Zertifikat erstellen** +3. Behalten Sie die Standardeinstellungen bei (15 Jahre, \*.yourdomain.com) +4. Kopieren Sie das **Ursprungszertifikat** und den **Privaten Schlüssel** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx-Konfiguration ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Aktivieren und testen ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurieren Sie Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 DNS-Eintrag hinzufügen -No painel da Cloudflare → DNS: +Im Cloudflare-Dashboard → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Geben Sie | ein Name | Inhalt | Proxy | +| --------- | -------- | ---------------------- | -------- | +| A | `llms` | `203.0.113.10` (VM-IP) | ✅ Proxy | -### 4.2 Configurar SSL +### 4.2 SSL konfigurieren -Em **SSL/TLS → Overview**: +Unter **SSL/TLS → Übersicht**: -- Modo: **Full (Strict)** +- Modus: **Vollständig (Streng)** -Em **SSL/TLS → Edge Certificates**: +Unter **SSL/TLS → Edge-Zertifikate**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Immer HTTPS verwenden: ✅ Ein +- Mindest-TLS-Version: TLS 1.2 +- Automatische HTTPS-Rewrites: ✅ Ein -### 4.3 Testar +### 4.3 Testen ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Betrieb und Wartung -### Atualizar para nova versão +### Upgrade auf eine neue Version ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Protokolle anzeigen ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuelle Datenbanksicherung ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Aus Backup wiederherstellen ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Erweiterte Sicherheit -### Restringir nginx para Cloudflare IPs +### Nginx auf Cloudflare-IPs beschränken ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Fügen Sie Folgendes zu `nginx.conf` im Block `http {}` hinzu: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Fail2ban installieren ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blockieren Sie den direkten Zugriff auf den Docker-Port ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Bereitstellung für Cloudflare-Worker (optional) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Für den Fernzugriff über Cloudflare Workers (ohne die VM direkt verfügbar zu machen): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Die vollständige Dokumentation finden Sie unter [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Portzusammenfassung -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Hafen | Service | Zugriff | +| ----- | ----------- | -------------------------- | +| 22 | SSH | Öffentlich (mit fail2ban) | +| 80 | nginx HTTP | Weiterleiten → HTTPS | +| 443 | nginx HTTPS | Über Cloudflare-Proxy | +| 20128 | OmniRoute | Nur Localhost (über Nginx) | diff --git a/docs/i18n/es/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/es/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..aef093802e 100644 --- a/docs/i18n/es/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/es/VM_DEPLOYMENT_GUIDE.md @@ -1,46 +1,44 @@ -🌐 **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) +# OmniRoute: Guía de implementación en VM con Cloudflare + +🌐 **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) + +Guía completa para instalar y configurar OmniRoute en una VM (VPS) con dominio administrado vía Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Requisitos previos -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Artículo | Mínimo | Recomendado | +| -------------- | ------------------------ | --------------------- | +| **procesador** | 1 CPU virtual | 2 CPU virtuales | +| **RAM** | 1 GB | 2 GB | +| **Disco** | SSD de 10 GB | SSD de 25 GB | +| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Dominio** | Registrado en Cloudflare | — | +| **Acoplador** | Motor Docker 24+ | Ventana acoplable 27+ | + +**Proveedores probados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configurar la máquina virtual -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Crear la instancia -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +En su proveedor VPS preferido: ---- +- Elija Ubuntu 24.04 LTS +- Seleccione el plan mínimo (1 vCPU / 1 GB de RAM) +- Establezca una contraseña de root segura o configure la clave SSH +- Tenga en cuenta la **IP pública** (por ejemplo, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Conectarse vía SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Actualizar el sistema ```bash apt update && apt upgrade -y @@ -49,14 +47,14 @@ apt update && apt upgrade -y ### 1.4 Instalar Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 ``` @@ -67,7 +65,7 @@ apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Configurar el cortafuegos (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Consejo**: Para máxima seguridad, restrinja los puertos 80 y 443 solo a las IP de Cloudflare. Consulte la sección [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Instalar OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Crear directorio de configuración ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Crear archivo de variables de entorno ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **IMPORTANTE**: ¡Genera claves secretas únicas! Utilice `openssl rand -hex 32` para cada clave. -### 2.3 Iniciar o container +### 2.3 Iniciar el contenedor ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Verificar que esté funcionando ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Debería mostrar: `[DB] SQLite database ready` y `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Configurar nginx (Proxy inverso) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Generar certificado SSL (Origen Cloudflare) -No painel da Cloudflare: +En el panel de Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Vaya a **SSL/TLS → Servidor de origen** +2. Haga clic en **Crear certificado** +3. Mantenga los valores predeterminados (15 años, \*.sudominio.com) +4. Copie el **Certificado de Origen** y la **Clave Privada** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configuración de Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Habilitar y probar ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configurar DNS de Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Agregar registro DNS -No painel da Cloudflare → DNS: +En el panel de Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Tipo | Nombre | Contenido | Apoderado | +| ---- | ------ | ----------------------------------------- | ------------ | +| Un | `llms` | `203.0.113.10` (IP de la máquina virtual) | ✅ Apoderado | ### 4.2 Configurar SSL -Em **SSL/TLS → Overview**: +En **SSL/TLS → Descripción general**: -- Modo: **Full (Strict)** +- Modo: **Completo (Estricto)** -Em **SSL/TLS → Edge Certificates**: +En **SSL/TLS → Certificados perimetrales**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Utilice siempre HTTPS: ✅ Activado +- Versión mínima de TLS: TLS 1.2 +- Reescrituras HTTPS automáticas: ✅ Activado -### 4.3 Testar +### 4.3 Pruebas ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Operaciones y Mantenimiento -### Atualizar para nova versão +### Actualizar a una nueva versión ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Ver registros ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Copia de seguridad manual de la base de datos ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Restaurar desde copia de seguridad ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Seguridad avanzada -### Restringir nginx para Cloudflare IPs +### Restringir nginx a las IP de Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Agregue lo siguiente a `nginx.conf` dentro del bloque `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Instalar fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Bloquear el acceso directo al puerto Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Implementación para trabajadores de Cloudflare (opcional) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Para acceso remoto a través de Cloudflare Workers (sin exponer la VM directamente): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Consulte la documentación completa en [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Resumen de puerto -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Puerto | Servicio | Acceso | +| ------ | ----------- | ---------------------------------- | +| 22 | SSH | Público (con fail2ban) | +| 80 | nginxHTTP | Redirigir → HTTPS | +| 443 | nginx HTTPS | A través del proxy de Cloudflare | +| 20128 | OmniRuta | Solo localhost (a través de nginx) | diff --git a/docs/i18n/fi/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/fi/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..924077cc35 100644 --- a/docs/i18n/fi/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/fi/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Käyttöönottoopas VM:ssä Cloudflaren kanssa + +🌐 **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) + +Täydellinen opas OmniRouten asentamiseen ja määrittämiseen VM:lle (VPS), jonka toimialuetta hallitaan Cloudflaren kautta. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Edellytykset -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Tuote | Minimi | Suositeltava | +| ----------- | ------------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 Gt | 2 Gt | +| **Levy** | 10 Gt SSD | 25 Gt SSD | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domain** | Rekisteröity Cloudflareen | — | +| **Dokkeri** | Docker Engine 24+ | Docker 27+ | + +**Testatut palveluntarjoajat**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Määritä virtuaalikone -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Luo ilmentymä -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Valitsemallasi VPS-palveluntarjoajalla: ---- +- Valitse Ubuntu 24.04 LTS +- Valitse vähimmäissuunnitelma (1 vCPU / 1 Gt RAM) +- Aseta vahva root-salasana tai määritä SSH-avain +- Huomaa **julkinen IP** (esim. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Yhdistä SSH:n kautta ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Päivitä järjestelmä ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Asenna Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Asenna nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Määritä palomuuri (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Vinkki**: Maksimaalista turvallisuutta varten rajaa portit 80 ja 443 vain Cloudflaren IP-osoitteisiin. Katso osio [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Asenna OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Luo asetushakemisto ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Luo ympäristömuuttujatiedosto ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **TÄRKEÄÄ**: Luo ainutlaatuisia salaisia avaimia! Käytä `openssl rand -hex 32` jokaiselle avaimelle. -### 2.3 Iniciar o container +### 2.3 Käynnistä kontti ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Varmista, että se on käynnissä ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Sen pitäisi näyttää: `[DB] SQLite database ready` ja `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Määritä nginx (käänteinen välityspalvelin) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Luo SSL-varmenne (Cloudflare Origin) -No painel da Cloudflare: +Cloudflare-hallintapaneelissa: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Siirry kohtaan **SSL/TLS → Origin Server** +2. Napsauta **Luo varmenne** +3. Säilytä oletusasetukset (15 vuotta, \*.omaverkkotunnus.com) +4. Kopioi **alkuperätodistus** ja **yksityinen avain** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx-kokoonpano ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Ota käyttöön ja testaa ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Määritä Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Lisää DNS-tietue -No painel da Cloudflare → DNS: +Cloudflaren kojelaudassa → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Tyyppi | Nimi | Sisältö | Välityspalvelin | +| ------ | ------ | ---------------------- | ------------------ | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Välityspalvelin | -### 4.2 Configurar SSL +### 4.2 Määritä SSL -Em **SSL/TLS → Overview**: +Kohdassa **SSL/TLS → Yleiskatsaus**: -- Modo: **Full (Strict)** +- Tila: **Täysi (tiukka)** -Em **SSL/TLS → Edge Certificates**: +Alle **SSL/TLS → Edge-sertifikaatit**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Käytä aina HTTPS:ää: ✅ Käytössä +- TLS:n vähimmäisversio: TLS 1.2 +- Automaattiset HTTPS-uudelleenkirjoitukset: ✅ Käytössä -### 4.3 Testar +### 4.3 Testaus ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Käyttö ja huolto -### Atualizar para nova versão +### Päivitä uuteen versioon ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Näytä lokit ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuaalinen tietokannan varmuuskopiointi ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Palauta varmuuskopiosta ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Lisäsuojaus -### Restringir nginx para Cloudflare IPs +### Rajoita nginx Cloudflaren IP-osoitteisiin ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Lisää seuraava `nginx.conf` -lohkoon `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Asenna fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Estä suora pääsy Docker-porttiin ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Ota käyttöön Cloudflare-työntekijöille (valinnainen) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Etäkäyttö Cloudflare Workersin kautta (paljastamatta virtuaalikonetta suoraan): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Katso koko dokumentaatio osoitteessa [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Portin yhteenveto -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Portti | Palvelu | Pääsy | +| ------ | ----------- | ----------------------------------- | +| 22 | SSH | Julkinen (fail2banin kanssa) | +| 80 | nginx HTTP | Uudelleenohjaus → HTTPS | +| 443 | nginx HTTPS | Cloudflare-välityspalvelimen kautta | +| 20128 | OmniRoute | Vain Localhost (nginxin kautta) | diff --git a/docs/i18n/fr/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/fr/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..3f95c0565e 100644 --- a/docs/i18n/fr/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/fr/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Guide de déploiement sur VM avec Cloudflare + +🌐 **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) + +Guide complet pour installer et configurer OmniRoute sur une VM (VPS) avec domaine géré via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Prérequis -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Article | Minimum | Recommandé | +| -------------- | ---------------------- | ---------------------- | +| **processeur** | 1 processeur virtuel | 2 processeurs virtuels | +| **RAM** | 1 Go | 2 Go | +| **Disque** | Disque SSD de 10 Go | Disque SSD de 25 Go | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domaine** | Inscrit sur Cloudflare | — | +| **Docker** | Moteur Docker 24+ | Docker 27+ | + +**Fournisseurs testés** : Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configurer la VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Créer l'instance -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Sur votre fournisseur VPS préféré : ---- +- Choisissez Ubuntu 24.04 LTS +- Sélectionnez le forfait minimum (1 vCPU / 1 Go de RAM) +- Définissez un mot de passe root fort ou configurez la clé SSH +- Notez l'**IP publique** (par exemple, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Connectez-vous via SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Mettre à jour le système ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Installer Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Installer nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Configurer le pare-feu (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Conseil** : Pour une sécurité maximale, limitez les ports 80 et 443 aux IP Cloudflare uniquement. Voir la section [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Installez OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Créer un répertoire de configuration ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Créer un fichier de variables d'environnement ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **IMPORTANT** : Générez des clés secrètes uniques ! Utilisez `openssl rand -hex 32` pour chaque clé. -### 2.3 Iniciar o container +### 2.3 Démarrer le conteneur ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Vérifiez qu'il est en cours d'exécution ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Il doit afficher : `[DB] SQLite database ready` et `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Configurer nginx (proxy inverse) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Générer un certificat SSL (Cloudflare Origin) -No painel da Cloudflare: +Dans le tableau de bord Cloudflare : -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Accédez à **SSL/TLS → Serveur d'origine** +2. Cliquez sur **Créer un certificat** +3. Conservez les valeurs par défaut (15 ans, \*.votredomaine.com) +4. Copiez le **Certificat d'origine** et la **Clé privée** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configuration de Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Activer et tester ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configurer le DNS Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Ajouter un enregistrement DNS -No painel da Cloudflare → DNS: +Dans le tableau de bord Cloudflare → DNS : -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Tapez | Nom | Contenu | Proxy | +| ----- | ------ | ------------------------------------------- | ------------- | +| Un | `llms` | `203.0.113.10` (IP de la machine virtuelle) | ✅ Mandataire | -### 4.2 Configurar SSL +### 4.2 Configurer SSL -Em **SSL/TLS → Overview**: +Sous **SSL/TLS → Présentation** : -- Modo: **Full (Strict)** +- Mode : **Complet (strict)** -Em **SSL/TLS → Edge Certificates**: +Sous **SSL/TLS → Certificats Edge** : -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Utilisez toujours HTTPS : ✅ Activé + -Version TLS minimale : TLS 1.2 +- Réécritures HTTPS automatiques : ✅ Activée -### 4.3 Testar +### 4.3 Tests ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Exploitation et maintenance -### Atualizar para nova versão +### Mettre à niveau vers une nouvelle version ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Afficher les journaux ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Sauvegarde manuelle de la base de données ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Restaurer à partir d'une sauvegarde ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Sécurité avancée -### Restringir nginx para Cloudflare IPs +### Restreindre nginx aux IP Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Ajoutez ce qui suit à `nginx.conf` à l'intérieur du bloc `http {}` : ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Installer fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Bloquer l'accès direct au port Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Déployer sur Cloudflare Workers (facultatif) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Pour un accès à distance via Cloudflare Workers (sans exposer directement la VM) : ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Consultez la documentation complète sur [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Résumé des ports -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Port | Services | Accès | +| ----- | ----------- | -------------------------------- | +| 22 | SSH | Public (avec fail2ban) | +| 80 | nginx HTTP | Redirection → HTTPS | +| 443 | nginx HTTPS | Via le proxy Cloudflare | +| 20128 | OmniRoute | Localhost uniquement (via nginx) | diff --git a/docs/i18n/he/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/he/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..b00b99ddb9 100644 --- a/docs/i18n/he/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/he/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — מדריך פריסה ב-VM עם Cloudflare + +🌐 **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) + +מדריך שלם להתקנה והגדרה של OmniRoute ב-VM (VPS) עם דומיין מנוהל באמצעות Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## דרישות מוקדמות -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| פריט | מינימום | מומלץ | +| ---------- | ----------------- | ----------------- | +| **מעבד** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **דיסק** | 10 GB SSD | SSD 25 GB | +| **OS** | אובונטו 22.04 LTS | אובונטו 24.04 LTS | +| **דומיין** | רשום ב-Cloudflare | — | +| **דוקר** | Docker Engine 24+ | Docker 27+ | + +**ספקים שנבדקו**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. הגדר את ה-VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 צור את המופע -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +בספק ה-VPS המועדף עליך: ---- +- בחר אובונטו 24.04 LTS +- בחר את התוכנית המינימלית (1 vCPU / 1 GB RAM) +- הגדר סיסמת שורש חזקה או הגדר את מפתח SSH +- שימו לב ל-**IP הציבורי** (למשל, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 התחבר באמצעות SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 עדכן את המערכת ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 התקן Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 התקן את nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 הגדר חומת אש (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **טיפ**: לאבטחה מירבית, הגבל את היציאות 80 ו-443 ל-IP של Cloudflare בלבד. עיין בסעיף [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. התקן את OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 צור ספריית תצורה ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 צור קובץ משתני סביבה ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **חשוב**: צור מפתחות סודיים ייחודיים! השתמש ב-`openssl rand -hex 32` עבור כל מפתח. -### 2.3 Iniciar o container +### 2.3 הפעל את המיכל ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 ודא שהוא פועל ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +זה אמור להציג: `[DB] SQLite database ready` ו-`listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. הגדר את nginx (פרוקסי הפוך) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 יצירת אישור SSL (מקור Cloudflare) -No painel da Cloudflare: +בלוח המחוונים של Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. עבור אל **SSL/TLS → שרת מקור** +2. לחץ על **צור אישור** +3. שמור על ברירת המחדל (15 שנים, \*.yourdomain.com) +4. העתק את **תעודת המקור** ואת **המפתח הפרטי** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 תצורת Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 הפעל ובדוק ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. הגדר את Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 הוסף רשומת DNS -No painel da Cloudflare → DNS: +בלוח המחוונים של Cloudflare ← DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| הקלד | שם | תוכן | פרוקסי | +| ---- | ------ | ---------------------- | --------- | +| א | `llms` | `203.0.113.10` (VM IP) | ✅ פרוקסי | -### 4.2 Configurar SSL +### 4.2 הגדר SSL -Em **SSL/TLS → Overview**: +תחת **SSL/TLS ← סקירה כללית**: -- Modo: **Full (Strict)** +- מצב: **מלא (קפדני)** -Em **SSL/TLS → Edge Certificates**: +תחת **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- השתמש תמיד ב-HTTPS: ✅ פועל +- גרסת TLS מינימלית: TLS 1.2 +- שכתובים אוטומטיים של HTTPS: ✅ פועל -### 4.3 Testar +### 4.3 בדיקה ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. תפעול ותחזוקה -### Atualizar para nova versão +### שדרג לגרסה חדשה ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### הצג יומנים ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### גיבוי ידני של מסד הנתונים ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### שחזר מגיבוי ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. אבטחה מתקדמת -### Restringir nginx para Cloudflare IPs +### הגבל את nginx לכתובות IP של Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +הוסף את הדברים הבאים ל`nginx.conf` בתוך הבלוק `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### התקן fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### חסום גישה ישירה ליציאת Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. פריסה ל-Cloudflare Workers (אופציונלי) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +לגישה מרחוק דרך Cloudflare Workers (מבלי לחשוף ישירות את ה-VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +ראה את התיעוד המלא ב-[omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## סיכום יציאה -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| נמל | שירות | גישה | +| ----- | ----------- | -------------------------- | +| 22 | SSH | ציבורי (עם fail2ban) | +| 80 | nginx HTTP | הפניה מחדש → HTTPS | +| 443 | nginx HTTPS | דרך Cloudflare Proxy | +| 20128 | OmniRoute | Localhost בלבד (דרך nginx) | diff --git a/docs/i18n/hu/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/hu/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..09d559e465 100644 --- a/docs/i18n/hu/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/hu/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Telepítési útmutató a Cloudflare-rel rendelkező virtuális gépen + +🌐 **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) + +Teljes útmutató az OmniRoute telepítéséhez és konfigurálásához Cloudflare-en keresztül kezelt tartományú virtuális gépen (VPS). --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Előfeltételek -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Tétel | Minimum | Ajánlott | +| ----------- | ------------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **Lemez** | 10 GB SSD | 25 GB SSD | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domain** | Regisztrálva a Cloudflare | — | +| **Dokkoló** | Docker Engine 24+ | Docker 27+ | + +**Tesztelt szolgáltatók**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurálja a virtuális gépet -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Hozza létre a példányt -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +A választott VPS-szolgáltatónál: ---- +- Válassza az Ubuntu 24.04 LTS-t +- Válassza ki a minimális csomagot (1 vCPU / 1 GB RAM) +- Állítson be erős root jelszót vagy konfigurálja az SSH-kulcsot +- Jegyezze fel a **nyilvános IP-címet** (pl. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Csatlakozás SSH-n keresztül ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Frissítse a rendszert ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Telepítse a Dockert ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Az nginx telepítése ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Tűzfal konfigurálása (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tipp**: A maximális biztonság érdekében korlátozza a 80-as és 443-as portot csak a Cloudflare IP-címekre. Lásd a [Advanced Security](#advanced-security) részt. --- -## 2. Instalar o OmniRoute +## 2. Telepítse az OmniRoute programot -### 2.1 Criar diretório de configuração +### 2.1 Konfigurációs könyvtár létrehozása ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Környezeti változók fájl létrehozása ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **FONTOS**: Hozzon létre egyedi titkos kulcsokat! Minden kulcshoz használja az `openssl rand -hex 32` értéket. -### 2.3 Iniciar o container +### 2.3 Indítsa el a tárolót ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Ellenőrizze, hogy fut-e ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Meg kell jelennie: `[DB] SQLite database ready` és `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Az nginx (fordított proxy) konfigurálása -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 SSL-tanúsítvány generálása (Cloudflare Origin) -No painel da Cloudflare: +A Cloudflare irányítópulton: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Nyissa meg az **SSL/TLS → Origin Server** lehetőséget. +2. Kattintson a **Tanúsítvány létrehozása** lehetőségre. +3. Tartsa meg az alapértelmezett értékeket (15 év, \*.sajatdomain.com) +4. Másolja ki az **Eredeti tanúsítványt** és a **Privát kulcsot** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx konfiguráció ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Engedélyezés és tesztelés ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurálja a Cloudflare DNS-t -### 4.1 Adicionar registro DNS +### 4.1 DNS-rekord hozzáadása -No painel da Cloudflare → DNS: +A Cloudflare irányítópulton → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Típus | Név | Tartalom | Proxy | +| ----- | ------ | ---------------------- | ----------------- | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Meghatalmazott | -### 4.2 Configurar SSL +### 4.2 SSL konfigurálása -Em **SSL/TLS → Overview**: +Az **SSL/TLS → Áttekintés** alatt: -- Modo: **Full (Strict)** +- Mód: **Teljes (szigorú)** -Em **SSL/TLS → Edge Certificates**: +**SSL/TLS → Edge Certificates** alatt: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Mindig használjon HTTPS-t: ✅ Be +- Minimális TLS-verzió: TLS 1.2 +- Automatikus HTTPS-újraírások: ✅ Be -### 4.3 Testar +### 4.3 Tesztelés ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Műveletek és karbantartás -### Atualizar para nova versão +### Frissítsen egy új verzióra ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Naplók megtekintése ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuális adatbázis-mentés ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Visszaállítás biztonsági másolatból ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Speciális biztonság -### Restringir nginx para Cloudflare IPs +### Az nginx korlátozása a Cloudflare IP-címekre ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Adja hozzá a következőket a `nginx.conf` elemhez a `http {}` blokkon belül: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Telepítse a fail2ban-t ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### A Docker-porthoz való közvetlen hozzáférés letiltása ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Telepítés a Cloudflare Workers számára (opcionális) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +A Cloudflare Workersen keresztüli távoli eléréshez (a virtuális gép közvetlen feltárása nélkül): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Tekintse meg a teljes dokumentációt: [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Port összefoglaló -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Kikötő | Szolgáltatás | Hozzáférés | +| ------ | ------------ | ----------------------------------- | +| 22 | SSH | Nyilvános (fail2ban-nal) | +| 80 | nginx HTTP | Átirányítás → HTTPS | +| 443 | nginx HTTPS | Cloudflare Proxy segítségével | +| 20128 | OmniRoute | Csak Localhost (nginx-en keresztül) | diff --git a/docs/i18n/id/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/id/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..ff32516444 100644 --- a/docs/i18n/id/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/id/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Panduan Penerapan pada VM dengan Cloudflare + +🌐 **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) + +Panduan lengkap untuk menginstal dan mengkonfigurasi OmniRoute pada VM (VPS) dengan domain yang dikelola melalui Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Prasyarat -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Barang | Minimal | Direkomendasikan | +| ------------------- | ----------------------- | ------------------- | +| **CPU** | 1vCPU | 2vCPU | +| **RAM** | 1 GB | 2 GB | +| **Disk** | SSD 10 GB | SSD 25GB | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domain** | Terdaftar di Cloudflare | — | +| **Buruh pelabuhan** | Mesin Docker 24+ | buruh pelabuhan 27+ | + +**Penyedia teruji**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurasikan VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Membuat instance -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Pada penyedia VPS pilihan Anda: ---- +- Pilih Ubuntu 24.04 LTS +- Pilih paket minimum (1 vCPU / 1 GB RAM) +- Tetapkan kata sandi root yang kuat atau konfigurasikan kunci SSH +- Catat **IP publik** (mis., `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Terhubung melalui SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Perbarui sistem ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Instal Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Instal nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Konfigurasi Firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tips**: Untuk keamanan maksimum, batasi port 80 dan 443 hanya untuk IP Cloudflare. Lihat bagian [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Instal OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Membuat direktori konfigurasi ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Membuat file variabel lingkungan ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **PENTING**: Hasilkan kunci rahasia unik! Gunakan `openssl rand -hex 32` untuk setiap kunci. -### 2.3 Iniciar o container +### 2.3 Mulai penampung ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Pastikan itu sedang berjalan ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Seharusnya menampilkan: `[DB] SQLite database ready` dan `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Konfigurasikan nginx (Proxy Terbalik) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Menghasilkan sertifikat SSL (Cloudflare Origin) -No painel da Cloudflare: +Di dasbor Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Buka **SSL/TLS → Server Asal** +2. Klik **Buat Sertifikat** +3. Pertahankan default (15 tahun, \*.domainanda.com) +4. Salin **Sertifikat Asal** dan **Kunci Pribadi** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Konfigurasi Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Aktifkan dan Uji ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurasikan DNS Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Tambahkan data DNS -No painel da Cloudflare → DNS: +Di dasbor Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Ketik | Nama | Konten | Proksi | +| ------ | ------ | ---------------------- | ----------- | +| SEBUAH | `llms` | `203.0.113.10` (IP VM) | ✅ Diproksi | -### 4.2 Configurar SSL +### 4.2 Konfigurasikan SSL -Em **SSL/TLS → Overview**: +Di bawah **SSL/TLS → Ikhtisar**: -- Modo: **Full (Strict)** +- Mode: **Penuh (Ketat)** -Em **SSL/TLS → Edge Certificates**: +Di bawah **SSL/TLS → Sertifikat Edge**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Selalu Gunakan HTTPS: ✅ Aktif +- Versi TLS Minimum: TLS 1.2 +- Penulisan Ulang HTTPS Otomatis: ✅ Aktif -### 4.3 Testar +### 4.3 Pengujian ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Pengoperasian dan Pemeliharaan -### Atualizar para nova versão +### Tingkatkan ke versi baru ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Lihat log ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Pencadangan basis data manual ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Pulihkan dari cadangan ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Keamanan Tingkat Lanjut -### Restringir nginx para Cloudflare IPs +### Batasi nginx ke IP Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Tambahkan yang berikut ini ke `nginx.conf` di dalam blok `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Instal fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blokir akses langsung ke port Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Deploy ke Cloudflare Worker (Opsional) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Untuk akses jarak jauh melalui Cloudflare Workers (tanpa mengekspos VM secara langsung): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Lihat dokumentasi selengkapnya di [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Ringkasan Pelabuhan -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Pelabuhan | Layanan | Akses | +| --------- | ----------- | ------------------------------- | +| 22 | SSH | Publik (dengan fail2ban) | +| 80 | nginx HTTP | Pengalihan → HTTPS | +| 443 | nginx HTTPS | Melalui Proksi Cloudflare | +| 20128 | OmniRoute | Hanya localhost (melalui nginx) | diff --git a/docs/i18n/in/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/in/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..a428fbe33b 100644 --- a/docs/i18n/in/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/in/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,69 @@ -🌐 **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) +# ओमनीरूट - क्लाउडफ्लेयर के साथ वीएम पर परिनियोजन गाइड + +🌐 **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) + +क्लाउडफ्लेयर के माध्यम से प्रबंधित डोमेन के साथ वीएम (वीपीएस) पर ओमनीरूट को स्थापित और कॉन्फ़िगर करने के लिए पूरी गाइड। --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## पूर्वावश्यकताएँ -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| आइटम | न्यूनतम | अनुशंसित | +| ---------- | --------------------- | ------------------ | +| **सीपीयू** | 1 वीसीपीयू | 2 वीसीपीयू | +| **राम** | 1 जीबी | 2 जीबी | +| **डिस्क** | 10 जीबी एसएसडी | 25 जीबी एसएसडी | +| **ओएस** | उबंटू 22.04 एलटीएस | उबंटू 24.04 एलटीएस | +| **डोमेन** | Cloudflare पर पंजीकृत | — | +| **डॉकर** | डॉकर इंजन 24+ | डॉकर 27+ | + +**परीक्षित प्रदाता**: अकामाई (लिनोड), डिजिटलओशन, वल्चर, हेट्ज़नर, एडब्ल्यूएस लाइटसेल। --- -## Pré-Requisitos +## 1. वीएम को कॉन्फ़िगर करें -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 उदाहरण बनाएँ -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +आपके पसंदीदा VPS प्रदाता पर: ---- +- उबंटू 24.04 एलटीएस चुनें +- न्यूनतम योजना चुनें (1 वीसीपीयू / 1 जीबी रैम) +- एक मजबूत रूट पासवर्ड सेट करें या SSH कुंजी कॉन्फ़िगर करें +- **सार्वजनिक आईपी** पर ध्यान दें (जैसे, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 एसएसएच के माध्यम से कनेक्ट करें ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 सिस्टम को अपडेट करें + +**OMNI_टोकन_1** + +### 1.4 डॉकर स्थापित करें ```bash -apt update && apt upgrade -y -``` - -### 1.4 Instalar Docker - -```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 nginx स्थापित करें ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 फ़ायरवॉल कॉन्फ़िगर करें (UFW) ```bash ufw default deny incoming @@ -78,53 +74,23 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **टिप**: अधिकतम सुरक्षा के लिए, पोर्ट 80 और 443 को केवल क्लाउडफ़ेयर आईपी तक सीमित रखें। [Advanced Security](#advanced-security) अनुभाग देखें। --- -## 2. Instalar o OmniRoute +## 2. ओमनीरूट स्थापित करें -### 2.1 Criar diretório de configuração +### 2.1 कॉन्फ़िगरेशन निर्देशिका बनाएं -```bash -mkdir -p /opt/omniroute -``` +**OMNI_टोकन_5** -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 पर्यावरण चर फ़ाइल बनाएँ -```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY_VERSION=v1 -MACHINE_ID_SALT=ALTERE-PARA-SALT-UNICO +**OMNI_टोकन_6** -# === App === -PORT=20128 -NODE_ENV=production -HOSTNAME=0.0.0.0 -DATA_DIR=/app/data -STORAGE_DRIVER=sqlite -ENABLE_REQUEST_LOGS=true -AUTH_COOKIE_SECURE=false -REQUIRE_API_KEY=false +> ⚠️ **महत्वपूर्ण**: अद्वितीय गुप्त कुंजियाँ उत्पन्न करें! प्रत्येक कुंजी के लिए `openssl rand -hex 32` का उपयोग करें। -# === Domain (altere para seu domínio) === -BASE_URL=https://llms.seudominio.com -NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com - -# === Cloud Sync (opcional) === -# CLOUD_URL=https://cloud.omniroute.online -# NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online -EOF -``` - -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. - -### 2.3 Iniciar o container +### 2.3 कंटेनर प्रारंभ करें ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +104,42 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 सत्यापित करें कि यह चल रहा है -```bash -docker ps | grep omniroute -docker logs omniroute --tail 20 -``` +**OMNI_टोकन_8** -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +इसे प्रदर्शित करना चाहिए: `[DB] SQLite database ready` और `listening on port 20128`। --- -## 3. Configurar nginx (Reverse Proxy) +## 3. nginx कॉन्फ़िगर करें (रिवर्स प्रॉक्सी) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 एसएसएल प्रमाणपत्र उत्पन्न करें (क्लाउडफ्लेयर ओरिजिन) -No painel da Cloudflare: +क्लाउडफ्लेयर डैशबोर्ड में: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. **एसएसएल/टीएलएस → ओरिजिन सर्वर** पर जाएं +2. **प्रमाणपत्र बनाएं** पर क्लिक करें +3. डिफ़ॉल्ट रखें (15 वर्ष, \*.yourdomain.com) +4. **मूल प्रमाणपत्र** और **निजी कुंजी** की प्रतिलिपि बनाएँ ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 नगनेक्स कॉन्फ़िगरेशन ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +155,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +173,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,180 +187,109 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 सक्षम करें और परीक्षण करें -```bash -# Remover config padrão -rm -f /etc/nginx/sites-enabled/default - -# Ativar OmniRoute -ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute - -# Testar e recarregar -nginx -t && systemctl reload nginx -``` +**OMNI_टोकन_11** --- -## 4. Configurar Cloudflare DNS +## 4. क्लाउडफ्लेयर डीएनएस कॉन्फ़िगर करें -### 4.1 Adicionar registro DNS +### 4.1 डीएनएस रिकॉर्ड जोड़ें -No painel da Cloudflare → DNS: +क्लाउडफ़ेयर डैशबोर्ड में → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| प्रकार | नाम | सामग्री | प्रॉक्सी | +| ------ | ------ | ---------------------- | ----------- | +| ए | `llms` | `203.0.113.10` (VM IP) | ✅ प्रॉक्सी | -### 4.2 Configurar SSL +### 4.2 एसएसएल कॉन्फ़िगर करें -Em **SSL/TLS → Overview**: +**एसएसएल/टीएलएस → अवलोकन** के अंतर्गत: -- Modo: **Full (Strict)** +- मोड: **पूर्ण (सख्त)** -Em **SSL/TLS → Edge Certificates**: +**एसएसएल/टीएलएस → एज सर्टिफिकेट** के अंतर्गत: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- हमेशा HTTPS का उपयोग करें: ✅ चालू +- न्यूनतम टीएलएस संस्करण: टीएलएस 1.2 +- स्वचालित HTTPS पुनर्लेखन: ✅ चालू -### 4.3 Testar +### 4.3 परीक्षण -```bash -curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 -``` +**OMNI_टोकन_12** --- -## 5. Operações e Manutenção +## 5. संचालन एवं रखरखाव -### Atualizar para nova versão +### नए संस्करण में अपग्रेड करें -```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 -``` +**OMNI_टोकन_13** -### Ver logs +### लॉग देखें -```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas -``` +**OMNI_टोकन_14** -### Backup manual do banco +### मैनुअल डेटाबेस बैकअप -```bash -# Copiar dados do volume para o host -docker cp omniroute:/app/data ./backup-$(date +%F) +**OMNI_टोकन_15** -# Ou comprimir todo o volume -docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ - alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data -``` +### बैकअप से पुनर्स्थापित करें -### Restaurar de backup - -```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 -``` +**OMNI_टोकन_16** --- -## 6. Segurança Avançada +## 6. उन्नत सुरक्षा -### Restringir nginx para Cloudflare IPs +### nginx को Cloudflare IP तक सीमित करें + +**OMNI_टोकन_17** + +निम्नलिखित को `http {}` ब्लॉक के अंदर `nginx.conf` में जोड़ें: + +**OMNI_टोकन_18** + +### फेल2बैन स्थापित करें + +**OMNI_टोकन_19** + +### डॉकर पोर्ट तक सीधी पहुंच को अवरुद्ध करें ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente -# 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 -``` - -Adicionar no `nginx.conf` dentro do bloco `http {}`: - -```nginx -include /etc/nginx/cloudflare-ips.conf; -``` - -### Install fail2ban - -```bash -apt install -y fail2ban -systemctl enable fail2ban -systemctl start fail2ban - -# Verificar status -fail2ban-client status sshd -``` - -### Bloquear acesso direto na porta do Docker - -```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. क्लाउडफ्लेयर श्रमिकों की तैनाती (वैकल्पिक) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +क्लाउडफ्लेयर वर्कर्स के माध्यम से रिमोट एक्सेस के लिए (वीएम को सीधे उजागर किए बिना): -```bash -# No repositório local -cd omnirouteCloud -npm install -npx wrangler login -npx wrangler deploy -``` +**OMNI_टोकन_21** -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +पूरा दस्तावेज़ [omnirouteCloud/README.md](../omnirouteCloud/README.md) पर देखें। --- -## Resumo de Portas +## पोर्ट सारांश -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| बंदरगाह | सेवा | पहुंच | +| ------- | ----------- | ----------------------------------- | +| 22 | एसएसएच | सार्वजनिक (fail2ban के साथ) | +| 80 | nginx HTTP | रीडायरेक्ट → HTTPS | +| 443 | nginx HTTPS | क्लाउडफ्लेयर प्रॉक्सी के माध्यम से | +| 20128 | ओमनीरूट | केवल लोकलहोस्ट (nginx के माध्यम से) | diff --git a/docs/i18n/it/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/it/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..c0581b1777 100644 --- a/docs/i18n/it/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/it/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute: guida alla distribuzione su VM con Cloudflare + +🌐 **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) + +Guida completa per installare e configurare OmniRoute su una VM (VPS) con dominio gestito tramite Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Prerequisiti -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Articolo | Minimo | Consigliato | +| --------------------- | ------------------------ | ---------------- | +| **CPU** | 1 CPU virtuale | 2 vCPU | +| **RAM** | 1GB | 2GB | +| **Disco** | SSD da 10GB | SSD da 25GB | +| **Sistema operativo** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Dominio** | Registrato su Cloudflare | — | +| **Docker** | Motore Docker24+ | Docker27+ | + +**Fornitori testati**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configura la VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Creare l'istanza -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Sul tuo provider VPS preferito: ---- +- Scegli Ubuntu 24.04 LTS +- Seleziona il piano minimo (1 vCPU / 1 GB RAM) +- Imposta una password root complessa o configura la chiave SSH +- Prendi nota dell'**IP pubblico** (ad esempio, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Connetti tramite SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Aggiornare il sistema ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Installa Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Installa nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Configurazione del firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Suggerimento**: per la massima sicurezza, limita le porte 80 e 443 solo agli IP Cloudflare. Consulta la sezione [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Installa OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Creare la directory di configurazione ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Creare il file delle variabili d'ambiente ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **IMPORTANTE**: genera chiavi segrete uniche! Utilizza `openssl rand -hex 32` per ciascuna chiave. -### 2.3 Iniciar o container +### 2.3 Avviare il contenitore ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Verificare che sia in esecuzione ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Dovrebbe essere visualizzato: `[DB] SQLite database ready` e `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Configura nginx (proxy inverso) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Genera certificato SSL (Cloudflare Origin) -No painel da Cloudflare: +Nella dashboard di Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Vai su **SSL/TLS → Server di origine** +2. Fai clic su **Crea certificato** +3. Mantieni le impostazioni predefinite (15 anni, \*.tuodominio.com) +4. Copia il **Certificato di Origine** e la **Chiave Privata** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configurazione Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Abilita e prova ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configura il DNS di Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Aggiungi record DNS -No painel da Cloudflare → DNS: +Nella dashboard di Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Digitare | Nome | Contenuto | Procura | +| -------- | ------ | ------------------------------------------- | ---------- | +| A | `llms` | `203.0.113.10` (IP della macchina virtuale) | ✅ Procura | -### 4.2 Configurar SSL +### 4.2 Configurare SSL -Em **SSL/TLS → Overview**: +In **SSL/TLS → Panoramica**: -- Modo: **Full (Strict)** +- Modalità: **Completa (Ristretta)** -Em **SSL/TLS → Edge Certificates**: +In **SSL/TLS → Certificati Edge**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Usa sempre HTTPS: ✅ Attivo +- Versione TLS minima: TLS 1.2 +- Riscritture HTTPS automatiche: ✅ On -### 4.3 Testar +### 4.3 Test ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Operazioni e manutenzione -### Atualizar para nova versão +### Aggiorna a una nuova versione ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Visualizza i registri ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Backup manuale del database ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Ripristina dal backup ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Sicurezza avanzata -### Restringir nginx para Cloudflare IPs +### Limita nginx agli IP Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Aggiungi quanto segue a `nginx.conf` all'interno del blocco `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Installa fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blocca l'accesso diretto alla porta Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Distribuzione ai dipendenti Cloudflare (facoltativo) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Per l'accesso remoto tramite Cloudflare Workers (senza esporre direttamente la VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Consulta la documentazione completa su [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Riepilogo delle porte -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Porto | Servizio | Accesso | +| ----- | ----------- | -------------------------------- | +| 22 | SSH | Pubblico (con fail2ban) | +| 80 | nginxHTTP | Reindirizzamento → HTTPS | +| 443 | nginx HTTPS | Tramite proxy Cloudflare | +| 20128 | OmniRoute | Solo host locale (tramite nginx) | diff --git a/docs/i18n/ja/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/ja/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..1c866e3641 100644 --- a/docs/i18n/ja/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/ja/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Cloudflare を使用した VM の導入ガイド + +🌐 **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) + +Cloudflare経由でドメインが管理されているVM(VPS)にOmniRouteをインストールして構成するための完全なガイド。 --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## 前提条件 -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| アイテム | 最小 | おすすめ | +| ------------ | -------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1GB | 2GB | +| **ディスク** | 10GB SSD | 25 GB SSD | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **ドメイン** | Cloudflareに登録済み | — | +| **ドッカー** | Docker エンジン 24+ | ドッカー 27+ | + +**テスト済みプロバイダ**: Akamai (Linode)、DigitalOcean、Vultr、Hetzner、AWS Lightsail。 --- -## Pré-Requisitos +## 1. VM を構成する -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 インスタンスを作成する -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +好みの VPS プロバイダーで: ---- +- Ubuntu 24.04 LTS を選択します +- 最小プラン (1 vCPU / 1 GB RAM) を選択します。 +- 強力な root パスワードを設定するか、SSH キーを構成します +- **パブリック IP** に注意してください (例: `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 SSH 経由で接続する ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 システムをアップデートする ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Docker のインストール ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 nginx をインストールする ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 ファイアウォールの構成 (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **ヒント**: セキュリティを最大限に高めるには、ポート 80 と 443 を Cloudflare IP のみに制限します。 [Advanced Security](#advanced-security) セクションを参照してください。 --- -## 2. Instalar o OmniRoute +## 2. OmniRoute をインストールする -### 2.1 Criar diretório de configuração +### 2.1 構成ディレクトリの作成 ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 環境変数ファイルの作成 ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **重要**: 一意の秘密キーを生成してください。各キーに `openssl rand -hex 32` を使用します。 -### 2.3 Iniciar o container +### 2.3 コンテナの起動 ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 実行中であることを確認する ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +`[DB] SQLite database ready` および `listening on port 20128` と表示されます。 --- -## 3. Configurar nginx (Reverse Proxy) +## 3. nginx (リバースプロキシ) の設定 -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 SSL証明書の生成(Cloudflare Origin) -No painel da Cloudflare: +Cloudflareダッシュボードで: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. **SSL/TLS → オリジンサーバー** に移動します。 +2. [**証明書の作成**] をクリックします。 +3. デフォルトのまま (15 年、\*.yourdomain.com) +4. **送信元証明書**と**秘密キー**をコピーします。 ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx の構成 ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 有効化とテスト ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Cloudflare DNS を構成する -### 4.1 Adicionar registro DNS +### 4.1 DNS レコードの追加 -No painel da Cloudflare → DNS: +Cloudflareダッシュボード → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| タイプ | 名前 | コンテンツ | プロキシ | +| ------ | ------ | ---------------------- | ----------- | +| あ | `llms` | `203.0.113.10` (VM IP) | ✅ プロキシ | -### 4.2 Configurar SSL +### 4.2 SSL の構成 -Em **SSL/TLS → Overview**: +**SSL/TLS → 概要** の下: -- Modo: **Full (Strict)** +- モード: **フル (厳密)** -Em **SSL/TLS → Edge Certificates**: +**SSL/TLS → エッジ証明書** の下: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- 常に HTTPS を使用する: ✅ オン +- 最小 TLS バージョン: TLS 1.2 +- 自動 HTTPS 書き換え: ✅ オン -### 4.3 Testar +### 4.3 テスト ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. 運用と保守 -### Atualizar para nova versão +### 新しいバージョンにアップグレードする ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### ログを表示する ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### データベースの手動バックアップ ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### バックアップから復元する ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. 高度なセキュリティ -### Restringir nginx para Cloudflare IPs +### nginx を Cloudflare IP に制限する ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +`http {}` ブロック内の `nginx.conf` に以下を追加します。 ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +###fail2ban をインストールする ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Docker ポートへの直接アクセスをブロックする ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Cloudflare ワーカーへのデプロイ (オプション) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Cloudflare Workersを介したリモートアクセスの場合(VMを直接公開しない): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +[omnirouteCloud/README.md](../omnirouteCloud/README.md) で完全なドキュメントを参照してください。 --- -## Resumo de Portas +## ポートの概要 -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| ポート | サービス | アクセス | +| ------ | ------------ | ------------------------------- | +| 22 | SSH | パブリック (fail2ban あり) | +| 80 | nginx HTTP | リダイレクト → HTTPS | +| 443 | nginx HTTPS | Cloudflare プロキシ経由 | +| 20128 | オムニルート | ローカルホストのみ (nginx 経由) | diff --git a/docs/i18n/ko/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/ko/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..2f391e72a9 100644 --- a/docs/i18n/ko/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/ko/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Cloudflare를 사용한 VM 배포 가이드 + +🌐 **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) + +Cloudflare를 통해 관리되는 도메인이 있는 VM(VPS)에 OmniRoute를 설치하고 구성하기 위한 전체 가이드입니다. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## 전제조건 -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| 아이템 | 최소 | 추천 | +| ---------- | ------------------- | ---------------- | +| **CPU** | vCPU 1개 | vCPU 2개 | +| **램** | 1GB | 2GB | +| **디스크** | 10GB SSD | 25GB SSD | +| **OS** | 우분투 22.04 LTS | 우분투 24.04 LTS | +| **도메인** | Cloudflare에 등록됨 | — | +| **도커** | 도커 엔진 24+ | 도커 27+ | + +**테스트된 공급자**: Akamai(Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. VM 구성 -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 인스턴스 생성 -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +선호하는 VPS 제공업체에서: ---- +- 우분투 24.04 LTS를 선택하세요 +- 최소 요금제 선택(vCPU 1개 / RAM 1GB) +- 강력한 루트 비밀번호를 설정하거나 SSH 키를 구성하세요. +- **공용 IP**(예: `203.0.113.10`)를 기록해 두세요. -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 SSH를 통해 연결 ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 시스템 업데이트 ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 도커 설치 ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 nginx 설치 ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 방화벽 구성(UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **팁**: 보안을 극대화하려면 포트 80과 443을 Cloudflare IP로만 제한하세요. [Advanced Security](#advanced-security) 섹션을 참조하세요. --- -## 2. Instalar o OmniRoute +## 2. OmniRoute 설치 -### 2.1 Criar diretório de configuração +### 2.1 구성 디렉터리 생성 ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 환경변수 파일 생성 ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **중요**: 고유한 비밀 키를 생성하세요! 각 키에 `openssl rand -hex 32`을 사용하세요. -### 2.3 Iniciar o container +### 2.3 컨테이너 시작 ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 실행 중인지 확인 ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +`[DB] SQLite database ready` 및 `listening on port 20128`이 표시되어야 합니다. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. nginx(역방향 프록시) 구성 -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 SSL 인증서 생성(Cloudflare 원본) -No painel da Cloudflare: +Cloudflare 대시보드에서: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. **SSL/TLS → 원본 서버**로 이동합니다. +2. **인증서 만들기**를 클릭하세요. +3. 기본값(15년, \*.yourdomain.com)을 유지합니다. +4. **원본 인증서** 및 **개인 키**를 복사합니다. ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx 구성 ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 활성화 및 테스트 ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Cloudflare DNS 구성 -### 4.1 Adicionar registro DNS +### 4.1 DNS 레코드 추가 -No painel da Cloudflare → DNS: +Cloudflare 대시보드 → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| 유형 | 이름 | 내용 | 프록시 | +| ---- | ------ | --------------------- | ----------- | +| A | `llms` | `203.0.113.10`(VM IP) | ✅ 프록시됨 | -### 4.2 Configurar SSL +### 4.2 SSL 구성 -Em **SSL/TLS → Overview**: +**SSL/TLS → 개요**에서: -- Modo: **Full (Strict)** +- 모드: **전체(엄격)** -Em **SSL/TLS → Edge Certificates**: +**SSL/TLS → 에지 인증서**에서: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- 항상 HTTPS 사용: ✅ 켜기 +- 최소 TLS 버전: TLS 1.2 +- 자동 HTTPS 재작성: ✅ 켜짐 -### 4.3 Testar +### 4.3 테스트 ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. 운영 및 유지 관리 -### Atualizar para nova versão +### 새 버전으로 업그레이드 ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### 로그 보기 ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### 수동 데이터베이스 백업 ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### 백업에서 복원 ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. 고급 보안 -### Restringir nginx para Cloudflare IPs +### nginx를 Cloudflare IP로 제한 ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +`http {}` 블록 내부의 `nginx.conf`에 다음을 추가합니다. ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Fail2ban 설치 ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Docker 포트에 대한 직접 액세스 차단 ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Cloudflare Workers에 배포(선택 사항) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Cloudflare Workers를 통한 원격 액세스의 경우(VM을 직접 노출하지 않고): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +[omnirouteCloud/README.md](../omnirouteCloud/README.md)에서 전체 문서를 참조하세요. --- -## Resumo de Portas +## 포트 요약 -| Porta | Serviço | Acesso | +| 포트 | 서비스 | 액세스 | | ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| 22 | SSH | 공개(fail2ban 포함) | +| 80 | nginx HTTP | 리디렉션 → HTTPS | +| 443 | nginx HTTPS | Cloudflare 프록시를 통해 | +| 20128 | 옴니루트 | 로컬호스트 전용(nginx를 통해) | diff --git a/docs/i18n/ms/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/ms/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..8257f10e21 100644 --- a/docs/i18n/ms/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/ms/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Panduan Penggunaan pada VM dengan Cloudflare + +🌐 **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) + +Panduan lengkap untuk memasang dan mengkonfigurasi OmniRoute pada VM (VPS) dengan domain yang diuruskan melalui Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Prasyarat -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Item | Minimum | Disyorkan | +| ---------- | ----------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **Cakera** | 10 GB SSD | 25 GB SSD | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domain** | Berdaftar di Cloudflare | — | +| **Docker** | Enjin Docker 24+ | Docker 27+ | + +**Pembekal yang diuji**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurasikan VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Cipta contoh -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Pada pembekal VPS pilihan anda: ---- +- Pilih Ubuntu 24.04 LTS +- Pilih pelan minimum (1 vCPU / 1 GB RAM) +- Tetapkan kata laluan akar yang kuat atau konfigurasikan kunci SSH +- Perhatikan **IP awam** (cth., `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Sambung melalui SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Kemas kini sistem ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Pasang Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Pasang nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Konfigurasi Firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Petua**: Untuk keselamatan maksimum, hadkan port 80 dan 443 kepada IP Cloudflare sahaja. Lihat bahagian [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Pasang OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Cipta direktori konfigurasi ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Cipta fail pembolehubah persekitaran ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **PENTING**: Jana kunci rahsia unik! Gunakan `openssl rand -hex 32` untuk setiap kunci. -### 2.3 Iniciar o container +### 2.3 Mulakan bekas ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Sahkan bahawa ia sedang berjalan ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Ia sepatutnya memaparkan: `[DB] SQLite database ready` dan `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Konfigurasikan nginx (Proksi Songsang) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Jana sijil SSL (Cloudflare Origin) -No painel da Cloudflare: +Dalam papan pemuka Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Pergi ke **SSL/TLS → Pelayan Asal** +2. Klik **Buat Sijil** +3. Kekalkan lalai (15 tahun, \*.yourdomain.com) +4. Salin **Sijil Asal** dan **Kunci Persendirian** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Konfigurasi Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Dayakan dan Uji ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurasikan Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Tambah rekod DNS -No painel da Cloudflare → DNS: +Dalam papan pemuka Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Taip | Nama | Kandungan | Proksi | +| ---- | ------ | ---------------------- | ----------- | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Diproksi | -### 4.2 Configurar SSL +### 4.2 Konfigurasikan SSL -Em **SSL/TLS → Overview**: +Di bawah **SSL/TLS → Gambaran Keseluruhan**: -- Modo: **Full (Strict)** +- Mod: **Penuh (Ketat)** -Em **SSL/TLS → Edge Certificates**: +Di bawah **SSL/TLS → Sijil Edge**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Sentiasa Gunakan HTTPS: ✅ Hidup +- Versi TLS minimum: TLS 1.2 +- Penulisan Semula HTTPS Automatik: ✅ Hidup -### 4.3 Testar +### 4.3 Pengujian ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Operasi dan Penyelenggaraan -### Atualizar para nova versão +### Naik taraf kepada versi baharu ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Lihat log ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Sandaran pangkalan data manual ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Pulihkan daripada sandaran ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Keselamatan Lanjutan -### Restringir nginx para Cloudflare IPs +### Hadkan nginx kepada IP Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Tambahkan yang berikut pada `nginx.conf` di dalam blok `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Pasang fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Sekat akses terus ke pelabuhan Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Sebarkan ke Cloudflare Workers (Pilihan) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Untuk akses jauh melalui Cloudflare Workers (tanpa mendedahkan VM secara langsung): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Lihat dokumentasi penuh di [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Ringkasan Pelabuhan -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Pelabuhan | Perkhidmatan | Akses | +| --------- | ------------ | -------------------------------- | +| 22 | SSH | Awam (dengan fail2ban) | +| 80 | nginx HTTP | Ubah hala → HTTPS | +| 443 | nginx HTTPS | Melalui Proksi Cloudflare | +| 20128 | OmniRoute | Localhost sahaja (melalui nginx) | diff --git a/docs/i18n/nl/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/nl/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..3436af2522 100644 --- a/docs/i18n/nl/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/nl/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Implementatiehandleiding op VM met Cloudflare + +🌐 **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) + +Volledige gids voor het installeren en configureren van OmniRoute op een VM (VPS) met een domein beheerd via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Vereisten -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Artikel | Minimaal | Aanbevolen | +| --------------------- | --------------------------- | --------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **Schijf** | 10 GB SSD | 25 GB SSD | +| **Besturingssysteem** | Ubuntu 22.04LTS | Ubuntu 24.04LTS | +| **Domein** | Geregistreerd op Cloudflare | — | +| **Dokker** | Docker-engine 24+ | Dokwerker 27+ | + +**Geteste providers**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configureer de VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Maak het exemplaar -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Op uw favoriete VPS-provider: ---- +- Kies Ubuntu 24.04 LTS +- Selecteer het minimale abonnement (1 vCPU / 1 GB RAM) +- Stel een sterk rootwachtwoord in of configureer de SSH-sleutel +- Noteer het **openbare IP** (bijvoorbeeld `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Verbinding maken via SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Update het systeem ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Docker installeren ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Installeer nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Firewall configureren (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tip**: Voor maximale veiligheid beperkt u poort 80 en 443 alleen tot Cloudflare IP's. Zie de sectie [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Installeer OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Maak een configuratiedirectory ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Maak een bestand met omgevingsvariabelen ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **BELANGRIJK**: Genereer unieke geheime sleutels! Gebruik `openssl rand -hex 32` voor elke sleutel. -### 2.3 Iniciar o container +### 2.3 Start de container ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Controleer of het actief is ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Het zou moeten verschijnen: `[DB] SQLite database ready` en `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Nginx configureren (Reverse Proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 SSL-certificaat genereren (Cloudflare Origin) -No painel da Cloudflare: +In het Cloudflare-dashboard: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Ga naar **SSL/TLS → Origin Server** +2. Klik op **Certificaat maken** +3. Behoud de standaardwaarden (15 jaar, \*.uwdomein.com) +4. Kopieer het **Oorsprongscertificaat** en de **Privésleutel** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx-configuratie ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Inschakelen en testen ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configureer Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 DNS-record toevoegen -No painel da Cloudflare → DNS: +In het Cloudflare-dashboard → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Typ | Naam | Inhoud | Proxy | +| --- | ------ | ---------------------- | ---------------- | +| Een | `llms` | `203.0.113.10` (VM-IP) | ✅ Gevolmachtigd | -### 4.2 Configurar SSL +### 4.2 SSL configureren -Em **SSL/TLS → Overview**: +Onder **SSL/TLS → Overzicht**: -- Modo: **Full (Strict)** +- Modus: **Volledig (streng)** -Em **SSL/TLS → Edge Certificates**: +Onder **SSL/TLS → Edge-certificaten**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Gebruik altijd HTTPS: ✅ Aan +- Minimale TLS-versie: TLS 1.2 +- Automatische HTTPS-herschrijvingen: ✅ Aan -### 4.3 Testar +### 4.3 Testen ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Bediening en onderhoud -### Atualizar para nova versão +### Upgrade naar een nieuwe versie ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Logboeken bekijken ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Handmatige databaseback-up ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Herstellen vanaf back-up ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Geavanceerde beveiliging -### Restringir nginx para Cloudflare IPs +### Beperk nginx tot Cloudflare IP's ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Voeg het volgende toe aan `nginx.conf` in het blok `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Installeer fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blokkeer directe toegang tot de Docker-poort ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Implementeren naar Cloudflare-werknemers (optioneel) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Voor externe toegang via Cloudflare Workers (zonder de VM rechtstreeks bloot te leggen): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Bekijk de volledige documentatie op [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Poortsamenvatting -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Haven | Dienst | Toegang | +| ----- | ----------- | ---------------------------- | +| 22 | SSH | Openbaar (met fail2ban) | +| 80 | nginx-HTTP | Omleiding → HTTPS | +| 443 | nginx-HTTPS | Via Cloudflare Proxy | +| 20128 | OmniRoute | Alleen Localhost (via nginx) | diff --git a/docs/i18n/no/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/no/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..a4067dc9ce 100644 --- a/docs/i18n/no/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/no/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Implementeringsveiledning på VM med Cloudflare + +🌐 **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) + +Komplett veiledning for å installere og konfigurere OmniRoute på en VM (VPS) med domene administrert via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Forutsetninger -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Vare | Minimum | Anbefalt | +| ---------- | ------------------------ | ---------------- | +| **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 | +| **Domene** | Registrert på Cloudflare | — | +| **Dokker** | Docker Engine 24+ | Docker 27+ | + +**Testede leverandører**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurer VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Opprett forekomsten -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +På din foretrukne VPS-leverandør: ---- +- Velg Ubuntu 24.04 LTS +- Velg minimumsplanen (1 vCPU / 1 GB RAM) +- Angi et sterkt root-passord eller konfigurer SSH-nøkkel + – Legg merke til **offentlig IP** (f.eks. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Koble til via SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Oppdater systemet ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Installer Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Installer nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Konfigurer brannmur (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tips**: For maksimal sikkerhet, begrense portene 80 og 443 til bare Cloudflare IP-er. Se avsnittet [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Installer OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Opprett konfigurasjonskatalog ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Lag miljøvariabler-fil ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **VIKTIG**: Generer unike hemmelige nøkler! Bruk `openssl rand -hex 32` for hver nøkkel. -### 2.3 Iniciar o container +### 2.3 Start beholderen ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Bekreft at den kjører ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Den skal vise: `[DB] SQLite database ready` og `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Konfigurer nginx (omvendt proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Generer SSL-sertifikat (Cloudflare Origin) -No painel da Cloudflare: +I Cloudflare-dashbordet: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Gå til **SSL/TLS → Origin Server** +2. Klikk på **Opprett sertifikat** +3. Behold standardinnstillingene (15 år, \*.dittdomene.com) +4. Kopier **opprinnelsessertifikatet** og **privatnøkkelen** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx-konfigurasjon ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Aktiver og test ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurer Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Legg til DNS-post -No painel da Cloudflare → DNS: +I Cloudflare-dashbordet → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Skriv inn | Navn | Innhold | Fullmakt | +| --------- | ------ | ---------------------- | ----------- | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Fullmakt | -### 4.2 Configurar SSL +### 4.2 Konfigurer SSL -Em **SSL/TLS → Overview**: +Under **SSL/TLS → Oversikt**: -- Modo: **Full (Strict)** +- Modus: **Full (Streng)** -Em **SSL/TLS → Edge Certificates**: +Under **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Bruk alltid HTTPS: ✅ På +- Minimum TLS-versjon: TLS 1.2 +- Automatiske HTTPS-omskrivinger: ✅ På -### 4.3 Testar +### 4.3 Testing ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Drift og vedlikehold -### Atualizar para nova versão +### Oppgrader til en ny versjon ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Vis logger ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuell sikkerhetskopiering av database ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Gjenopprett fra sikkerhetskopi ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Avansert sikkerhet -### Restringir nginx para Cloudflare IPs +### Begrens nginx til Cloudflare IP-er ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Legg til følgende til `nginx.conf` inne i `http {}`-blokken: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Installer fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blokker direkte tilgang til Docker-porten ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Distribuer til Cloudflare-arbeidere (valgfritt) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +For ekstern tilgang via Cloudflare Workers (uten å eksponere VM direkte): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Se hele dokumentasjonen på [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Portsammendrag -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Port | Service | Tilgang | +| ----- | ----------- | -------------------------- | +| 22 | SSH | Offentlig (med fail2ban) | +| 80 | nginx HTTP | Omdirigere → HTTPS | +| 443 | nginx HTTPS | Via Cloudflare Proxy | +| 20128 | OmniRoute | Kun lokal vert (via nginx) | diff --git a/docs/i18n/phi/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/phi/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..b7ac46710e 100644 --- a/docs/i18n/phi/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/phi/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Gabay sa Deployment sa VM gamit ang Cloudflare + +🌐 **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) + +Kumpletong gabay sa pag-install at pag-configure ng OmniRoute sa isang VM (VPS) na may domain na pinamamahalaan sa pamamagitan ng Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Mga kinakailangan -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| aytem | Pinakamababa | 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 nasubok na provider**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. I-configure ang VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Lumikha ng instance -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Sa iyong gustong VPS provider: ---- +- Piliin ang Ubuntu 24.04 LTS +- Piliin ang minimum na plano (1 vCPU / 1 GB RAM) +- Magtakda ng malakas na root password o i-configure ang SSH key +- Tandaan ang **pampublikong IP** (hal., `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Kumonekta sa pamamagitan ng SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 I-update ang system ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 I-install ang Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 I-install ang nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 I-configure ang Firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tip**: Para sa maximum na seguridad, paghigpitan ang mga port 80 at 443 sa mga Cloudflare IP lamang. Tingnan ang seksyong [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. I-install ang OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Lumikha ng direktoryo ng pagsasaayos ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Lumikha ng file ng mga variable ng kapaligiran ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **MAHALAGA**: Bumuo ng mga natatanging lihim na key! Gamitin ang `openssl rand -hex 32` para sa bawat key. -### 2.3 Iniciar o container +### 2.3 Simulan ang lalagyan ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 I-verify na ito ay tumatakbo ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Dapat itong magpakita ng: `[DB] SQLite database ready` at `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. I-configure ang nginx (Reverse Proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Bumuo ng SSL certificate (Cloudflare Origin) -No painel da Cloudflare: +Sa dashboard ng Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Pumunta sa **SSL/TLS → Origin Server** +2. I-click ang **Gumawa ng Sertipiko** +3. Panatilihin ang mga default (15 taon, \*.yourdomain.com) +4. Kopyahin ang **Origin Certificate** at ang **Private Key** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configuration ng Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Paganahin at Pagsubok ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. I-configure ang Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Magdagdag ng DNS record -No painel da Cloudflare → DNS: +Sa Cloudflare dashboard → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Uri | Pangalan | Nilalaman | Proxy | +| ----- | -------- | ---------------------- | ---------- | +| Isang | `llms` | `203.0.113.10` (VM IP) | ✅ Proxied | -### 4.2 Configurar SSL +### 4.2 I-configure ang SSL -Em **SSL/TLS → Overview**: +Sa ilalim ng **SSL/TLS → Pangkalahatang-ideya**: -- Modo: **Full (Strict)** +- Mode: **Buong (Mahigpit)** -Em **SSL/TLS → Edge Certificates**: +Sa ilalim ng **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Palaging Gumamit ng HTTPS: ✅ Naka-on +- Minimum na Bersyon ng TLS: TLS 1.2 +- Mga Awtomatikong HTTPS Rewrite: ✅ Naka-on -### 4.3 Testar +### 4.3 Pagsubok ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Mga Operasyon at Pagpapanatili -### Atualizar para nova versão +### Mag-upgrade sa bagong bersyon ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Tingnan ang mga log ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manu-manong backup ng database ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Ibalik mula sa backup ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Advanced na Seguridad -### Restringir nginx para Cloudflare IPs +### Limitahan ang nginx sa mga Cloudflare IP ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Idagdag ang sumusunod sa `nginx.conf` sa loob ng `http {}` block: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### I-install ang fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### I-block ang direktang access sa Docker port ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. I-deploy sa Cloudflare Workers (Opsyonal) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Para sa malayuang pag-access sa pamamagitan ng Cloudflare Workers (nang hindi direktang inilalantad ang VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Tingnan ang buong dokumentasyon sa [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Buod ng Port -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Port | Serbisyo | Access | +| ----- | ----------- | ---------------------------------------- | +| 22 | SSH | Pampubliko (na may fail2ban) | +| 80 | nginx HTTP | I-redirect → HTTPS | +| 443 | nginx HTTPS | Sa pamamagitan ng Cloudflare Proxy | +| 20128 | OmniRoute | Localhost lang (sa pamamagitan ng nginx) | diff --git a/docs/i18n/pl/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/pl/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..ca1e2fd8a6 100644 --- a/docs/i18n/pl/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/pl/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Przewodnik wdrażania na maszynie wirtualnej z Cloudflare + +🌐 **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) + +Kompletny przewodnik dotyczący instalacji i konfiguracji OmniRoute na maszynie wirtualnej (VPS) z domeną zarządzaną przez Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Warunki wstępne -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Pozycja | Minimalne | Polecane | +| --------------------- | --------------------------- | --------------------- | +| **Procesor** | 1 procesor wirtualny | 2 procesory wirtualne | +| **RAM** | 1 GB | 2 GB | +| **Dysk** | Dysk SSD 10 GB | Dysk SSD 25 GB | +| **System operacyjny** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domena** | Zarejestrowany w Cloudflare | — | +| **Doker** | Silnik Dockera 24+ | Doker 27+ | + +**Testowani dostawcy**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Skonfiguruj maszynę wirtualną -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Utwórz instancję -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +U preferowanego dostawcy VPS: ---- +- Wybierz Ubuntu 24.04 LTS +- Wybierz plan minimalny (1 vCPU / 1 GB RAM) +- Ustaw silne hasło roota lub skonfiguruj klucz SSH +- Zanotuj **publiczny adres IP** (np. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Połącz się przez SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Zaktualizuj system ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Zainstaluj Dockera ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Zainstaluj nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Skonfiguruj zaporę sieciową (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Wskazówka**: Dla maksymalnego bezpieczeństwa ogranicz porty 80 i 443 tylko do adresów IP Cloudflare. Zobacz sekcję [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Zainstaluj OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Utwórz katalog konfiguracyjny ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Utwórz plik zmiennych środowiskowych ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **WAŻNE**: Wygeneruj unikalne tajne klucze! Użyj `openssl rand -hex 32` dla każdego klucza. -### 2.3 Iniciar o container +### 2.3 Uruchom kontener ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Sprawdź, czy działa ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Powinien wyświetlić: `[DB] SQLite database ready` i `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Skonfiguruj nginx (odwrotny serwer proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Wygeneruj certyfikat SSL (Cloudflare Origin) -No painel da Cloudflare: +W panelu Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Przejdź do **SSL/TLS → Serwer Origin** +2. Kliknij **Utwórz certyfikat** +3. Zachowaj ustawienia domyślne (15 lat, \*.twojadomena.com) +4. Skopiuj **Certyfikat pochodzenia** i **Klucz prywatny** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Konfiguracja Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Włącz i przetestuj ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Skonfiguruj DNS Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Dodaj rekord DNS -No painel da Cloudflare → DNS: +W panelu Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Wpisz | Imię | Treść | Pełnomocnik | +| ----- | ------ | -------------------------------------- | ----------- | +| | `llms` | `203.0.113.10` (IP maszyny wirtualnej) | ✅Przesłane | -### 4.2 Configurar SSL +### 4.2 Skonfiguruj SSL -Em **SSL/TLS → Overview**: +W obszarze **SSL/TLS → Przegląd**: -- Modo: **Full (Strict)** +- Tryb: **Pełny (ścisły)** -Em **SSL/TLS → Edge Certificates**: +W obszarze **SSL/TLS → Certyfikaty brzegowe**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Zawsze używaj protokołu HTTPS: ✅ Włącz +- Minimalna wersja TLS: TLS 1.2 +- Automatyczne przepisywanie protokołu HTTPS: ✅ Włączone -### 4.3 Testar +### 4.3 Testowanie ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Obsługa i konserwacja -### Atualizar para nova versão +### Uaktualnij do nowej wersji ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Wyświetl logi ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Ręczna kopia zapasowa bazy danych ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Przywróć z kopii zapasowej ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Zaawansowane zabezpieczenia -### Restringir nginx para Cloudflare IPs +### Ogranicz nginx do adresów IP Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Dodaj następujące polecenie do `nginx.conf` wewnątrz bloku `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Zainstaluj Fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Zablokuj bezpośredni dostęp do portu Dockera ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Wdróż do pracowników Cloudflare (opcjonalnie) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +W przypadku zdalnego dostępu za pośrednictwem Cloudflare Workers (bez bezpośredniego ujawniania maszyny wirtualnej): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Zobacz pełną dokumentację pod adresem [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Podsumowanie portu -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Port | Usługa | Dostęp | +| ----- | ----------- | ------------------------------ | +| 22 | SSH | Publiczne (z funkcją Fail2ban) | +| 80 | Nginx HTTP | Przekierowanie → HTTPS | +| 443 | nginx HTTPS | Przez serwer proxy Cloudflare | +| 20128 | OmniRoute | Tylko Localhost (przez Nginx) | diff --git a/docs/i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..56e39fa56e 100644 --- a/docs/i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md @@ -1,38 +1,36 @@ -🌐 **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) +# OmniRoute — Guia de implantação em VM com Cloudflare + +🌐 **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) + +Guia completo para instalar e configurar OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Pré-requisitos -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Artigo | Mínimo | Recomendado | +| ----------- | ------------------------ | --------------- | +| **CPU** | 1 vCPU | 2 vCPUs | +| **RAM** | 1 GB | 2 GB | +| **Disco** | SSD de 10 GB | SSD de 25 GB | +| **SO** | Ubuntu 22.04LTS | Ubuntu 24.04LTS | +| **Domínio** | Registrado na Cloudflare | — | +| **Docker** | Motor Docker 24+ | Docker 27+ | + +**Provedores testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configure a VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Crie a instância -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. - ---- - -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: +No seu provedor VPS preferido: - Escolha Ubuntu 24.04 LTS - Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) +- Defina uma senha root forte ou configure a chave SSH +- Observe o **IP público** (por exemplo, `203.0.113.10`) ### 1.2 Conectar via SSH @@ -46,22 +44,22 @@ ssh root@203.0.113.10 apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Instalar o Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Instale o nginx ```bash apt install -y nginx @@ -78,11 +76,11 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Dica**: para segurança máxima, restrinja as portas 80 e 443 apenas aos IPs da Cloudflare. Consulte a seção [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Instale o OmniRoute ### 2.1 Criar diretório de configuração @@ -93,14 +91,14 @@ mkdir -p /opt/omniroute ### 2.2 Criar arquivo de variáveis de ambiente ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **IMPORTANTE**: Gere chaves secretas exclusivas! Use `openssl rand -hex 32` para cada chave. -### 2.3 Iniciar o container +### 2.3 Inicie o contêiner ```bash docker pull diegosouzapw/omniroute:latest @@ -138,7 +136,7 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Verifique se está em execução ```bash docker ps | grep omniroute @@ -149,34 +147,34 @@ Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Configurar nginx (proxy reverso) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Gerar certificado SSL (Origem Cloudflare) No painel da Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Vá para **SSL/TLS → Servidor de Origem** +2. Clique em **Criar certificado** +3. Mantenha os padrões (15 anos, \*.seudominio.com) +4. Copie o **Certificado de Origem** e a **Chave Privada** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configuração Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Habilitar e testar ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configurar DNS da Cloudflare ### 4.1 Adicionar registro DNS -No painel da Cloudflare → DNS: +No painel Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Tipo | Nome | Conteúdo | Procuração | +| ---- | ------ | ------------------------- | ------------ | +| Um | `llms` | `203.0.113.10` (IP da VM) | ✅ Procurado | ### 4.2 Configurar SSL -Em **SSL/TLS → Overview**: +Em **SSL/TLS → Visão geral**: -- Modo: **Full (Strict)** +- Modo: **Completo (estrito)** -Em **SSL/TLS → Edge Certificates**: +Em **SSL/TLS → Certificados Edge**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Sempre use HTTPS: ✅ Ligado +- Versão mínima do TLS: TLS 1.2 +- Reescritas automáticas de HTTPS: ✅ Ativado -### 4.3 Testar +### 4.3 Teste ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- ## 5. Operações e Manutenção -### Atualizar para nova versão +### Atualize para uma nova versão ```bash docker pull diegosouzapw/omniroute:latest @@ -290,30 +288,30 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Ver registros ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Backup manual do banco de dados ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Restaurar do backup ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` @@ -321,11 +319,11 @@ docker start omniroute ## 6. Segurança Avançada -### Restringir nginx para Cloudflare IPs +### Restringir o nginx aos IPs da Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Adicione o seguinte a `nginx.conf` dentro do bloco `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Instale o fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Bloqueie o acesso direto à porta Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Implantar em Cloudflare Workers (opcional) Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Veja a documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Resumo da porta -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Porto | Serviço | Acesso | +| ----- | ----------- | ---------------------------- | +| 22 | SSH | Público (com fail2ban) | +| 80 | HTTP nginx | Redirecionar → HTTPS | +| 443 | HTTPS nginx | Através do proxy Cloudflare | +| 20128 | OmniRoute | Apenas localhost (via nginx) | diff --git a/docs/i18n/pt/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/pt/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..56e39fa56e 100644 --- a/docs/i18n/pt/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/pt/VM_DEPLOYMENT_GUIDE.md @@ -1,38 +1,36 @@ -🌐 **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) +# OmniRoute — Guia de implantação em VM com Cloudflare + +🌐 **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) + +Guia completo para instalar e configurar OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Pré-requisitos -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Artigo | Mínimo | Recomendado | +| ----------- | ------------------------ | --------------- | +| **CPU** | 1 vCPU | 2 vCPUs | +| **RAM** | 1 GB | 2 GB | +| **Disco** | SSD de 10 GB | SSD de 25 GB | +| **SO** | Ubuntu 22.04LTS | Ubuntu 24.04LTS | +| **Domínio** | Registrado na Cloudflare | — | +| **Docker** | Motor Docker 24+ | Docker 27+ | + +**Provedores testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configure a VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Crie a instância -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. - ---- - -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: +No seu provedor VPS preferido: - Escolha Ubuntu 24.04 LTS - Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) +- Defina uma senha root forte ou configure a chave SSH +- Observe o **IP público** (por exemplo, `203.0.113.10`) ### 1.2 Conectar via SSH @@ -46,22 +44,22 @@ ssh root@203.0.113.10 apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Instalar o Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Instale o nginx ```bash apt install -y nginx @@ -78,11 +76,11 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Dica**: para segurança máxima, restrinja as portas 80 e 443 apenas aos IPs da Cloudflare. Consulte a seção [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Instale o OmniRoute ### 2.1 Criar diretório de configuração @@ -93,14 +91,14 @@ mkdir -p /opt/omniroute ### 2.2 Criar arquivo de variáveis de ambiente ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **IMPORTANTE**: Gere chaves secretas exclusivas! Use `openssl rand -hex 32` para cada chave. -### 2.3 Iniciar o container +### 2.3 Inicie o contêiner ```bash docker pull diegosouzapw/omniroute:latest @@ -138,7 +136,7 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Verifique se está em execução ```bash docker ps | grep omniroute @@ -149,34 +147,34 @@ Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Configurar nginx (proxy reverso) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Gerar certificado SSL (Origem Cloudflare) No painel da Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Vá para **SSL/TLS → Servidor de Origem** +2. Clique em **Criar certificado** +3. Mantenha os padrões (15 anos, \*.seudominio.com) +4. Copie o **Certificado de Origem** e a **Chave Privada** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configuração Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Habilitar e testar ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configurar DNS da Cloudflare ### 4.1 Adicionar registro DNS -No painel da Cloudflare → DNS: +No painel Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Tipo | Nome | Conteúdo | Procuração | +| ---- | ------ | ------------------------- | ------------ | +| Um | `llms` | `203.0.113.10` (IP da VM) | ✅ Procurado | ### 4.2 Configurar SSL -Em **SSL/TLS → Overview**: +Em **SSL/TLS → Visão geral**: -- Modo: **Full (Strict)** +- Modo: **Completo (estrito)** -Em **SSL/TLS → Edge Certificates**: +Em **SSL/TLS → Certificados Edge**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Sempre use HTTPS: ✅ Ligado +- Versão mínima do TLS: TLS 1.2 +- Reescritas automáticas de HTTPS: ✅ Ativado -### 4.3 Testar +### 4.3 Teste ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- ## 5. Operações e Manutenção -### Atualizar para nova versão +### Atualize para uma nova versão ```bash docker pull diegosouzapw/omniroute:latest @@ -290,30 +288,30 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Ver registros ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Backup manual do banco de dados ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Restaurar do backup ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` @@ -321,11 +319,11 @@ docker start omniroute ## 6. Segurança Avançada -### Restringir nginx para Cloudflare IPs +### Restringir o nginx aos IPs da Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Adicione o seguinte a `nginx.conf` dentro do bloco `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Instale o fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Bloqueie o acesso direto à porta Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Implantar em Cloudflare Workers (opcional) Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Veja a documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Resumo da porta -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Porto | Serviço | Acesso | +| ----- | ----------- | ---------------------------- | +| 22 | SSH | Público (com fail2ban) | +| 80 | HTTP nginx | Redirecionar → HTTPS | +| 443 | HTTPS nginx | Através do proxy Cloudflare | +| 20128 | OmniRoute | Apenas localhost (via nginx) | diff --git a/docs/i18n/ro/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/ro/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..eb05ebbeef 100644 --- a/docs/i18n/ro/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/ro/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Ghid de implementare pe VM cu Cloudflare + +🌐 **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) + +Ghid complet pentru instalarea și configurarea OmniRoute pe o VM (VPS) cu domeniu gestionat prin Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Cerințe preliminare -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Articol | Minimum | Recomandat | +| ----------- | ------------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **Disc** | SSD de 10 GB | SSD de 25 GB | +| **OS** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Domeniu** | Înregistrat pe Cloudflare | — | +| **Docker** | Docker Engine 24+ | Docker 27+ | + +**Furnizori testați**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Configurați VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Creați instanța -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Pe furnizorul dvs. VPS preferat: ---- +- Alegeți Ubuntu 24.04 LTS +- Selectați planul minim (1 vCPU / 1 GB RAM) +- Setați o parolă de root puternică sau configurați cheia SSH +- Rețineți **IP-ul public** (de exemplu, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Conectați-vă prin SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Actualizați sistemul ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Instalați Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Instalați nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Configurați firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Sfat**: pentru securitate maximă, restricționați porturile 80 și 443 doar la IP-uri Cloudflare. Consultați secțiunea [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Instalați OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Creați directorul de configurare ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Creați fișierul cu variabile de mediu ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **IMPORTANT**: Generați chei secrete unice! Folosiți `openssl rand -hex 32` pentru fiecare cheie. -### 2.3 Iniciar o container +### 2.3 Porniți containerul ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Verificați dacă rulează ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Ar trebui să afișeze: `[DB] SQLite database ready` și `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Configurați nginx (proxy invers) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Generați certificat SSL (Cloudflare Origin) -No painel da Cloudflare: +În tabloul de bord Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Accesați **SSL/TLS → Origin Server** +2. Faceți clic pe **Creați certificat** +3. Păstrează valorile implicite (15 ani, \*.domeniul tău.com) +4. Copiați **Certificatul de origine** și **Cheia privată** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Configurare Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Activare și testare ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Configurați Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Adăugați înregistrarea DNS -No painel da Cloudflare → DNS: +În tabloul de bord Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Tip | Nume | Conținut | Proxy | +| --- | ------ | ---------------------- | -------- | +| A | `llms` | `203.0.113.10` (IP VM) | ✅ Proxy | -### 4.2 Configurar SSL +### 4.2 Configurați SSL -Em **SSL/TLS → Overview**: +Sub **SSL/TLS → Prezentare generală**: -- Modo: **Full (Strict)** +- Mod: **Complet (strict)** -Em **SSL/TLS → Edge Certificates**: +Sub **SSL/TLS → Certificate Edge**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Utilizați întotdeauna HTTPS: ✅ Activat +- Versiune TLS minimă: TLS 1.2 +- Rescrieri automate HTTPS: ✅ Activat -### 4.3 Testar +### 4.3 Testare ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Operațiuni și întreținere -### Atualizar para nova versão +### Faceți upgrade la o versiune nouă ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Vizualizați jurnalele ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Backup manual al bazei de date ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Restaurați din backup ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Securitate avansată -### Restringir nginx para Cloudflare IPs +### Restricționați nginx la IP-urile Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Adăugați următoarele la `nginx.conf` în interiorul blocului `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Instalați fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blocați accesul direct la portul Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Implementați la lucrătorii Cloudflare (opțional) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Pentru acces la distanță prin Cloudflare Workers (fără a expune VM-ul direct): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Consultați documentația completă la [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Rezumatul portului -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Port | Serviciu | Acces | +| ----- | ----------- | ---------------------------- | +| 22 | SSH | Public (cu fail2ban) | +| 80 | nginx HTTP | Redirecționare → HTTPS | +| 443 | nginx HTTPS | Prin Cloudflare Proxy | +| 20128 | OmniRoute | Numai Localhost (prin nginx) | diff --git a/docs/i18n/ru/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/ru/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..acc6db698f 100644 --- a/docs/i18n/ru/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/ru/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Руководство по развертыванию на виртуальной машине с Cloudflare + +🌐 **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) + +Полное руководство по установке и настройке OmniRoute на виртуальной машине (VPS) с доменом, управляемым через Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Предварительные условия -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Товар | Минимум | Рекомендуется | +| --------- | ------------------------------- | -------------------- | +| **ЦП** | 1 виртуальный ЦП | 2 виртуальных ЦП | +| **ОЗУ** | 1 ГБ | 2 ГБ | +| **Диск** | SSD-накопитель на 10 ГБ | SSD-накопитель 25 ГБ | +| **ОС** | Убунту 22.04 ЛТС | Убунту 24.04 ЛТС | +| **Домен** | Зарегистрировался на Cloudflare | — | +| **Докер** | Докер-движок 24+ | Докер 27+ | + +**Проверенные провайдеры**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Настройте виртуальную машину -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Создайте экземпляр -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +У предпочитаемого вами VPS-провайдера: ---- +- Выберите Ubuntu 24.04 LTS. +- Выберите минимальный план (1 виртуальный ЦП / 1 ГБ ОЗУ) +- Установите надежный пароль root или настройте ключ SSH. + – Обратите внимание на **публичный IP-адрес** (например, `203.0.113.10`). -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Подключение через SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +###1.3 Обновить систему ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Установите Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Установите nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Настройка брандмауэра (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Совет**. Для максимальной безопасности ограничьте порты 80 и 443 только IP-адресами Cloudflare. См. раздел [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Установите OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Создание каталога конфигурации ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Создание файла переменных среды ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **ВАЖНО**: создавайте уникальные секретные ключи! Используйте `openssl rand -hex 32` для каждого ключа. -### 2.3 Iniciar o container +### 2.3 Запускаем контейнер ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Убедитесь, что он работает ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Должно отображаться: `[DB] SQLite database ready` и `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Настройте nginx (обратный прокси) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Создание SSL-сертификата (Cloudflare Origin) -No painel da Cloudflare: +В панели управления Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Перейдите в **SSL/TLS → Исходный сервер**. +2. Нажмите **Создать сертификат**. +3. Оставьте настройки по умолчанию (15 лет, \*.yourdomain.com). +4. Скопируйте **Сертификат происхождения** и **Закрытый ключ**. ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Конфигурация Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Включение и тестирование ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Настройте DNS Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Добавление DNS-записи -No painel da Cloudflare → DNS: +В панели управления Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Тип | Имя | Содержание | Прокси | +| --- | ------ | -------------------------------------------- | --------- | +| А | `llms` | `203.0.113.10` (IP-адрес виртуальной машины) | ✅ Прокси | -### 4.2 Configurar SSL +### 4.2 Настройка SSL -Em **SSL/TLS → Overview**: +В разделе **SSL/TLS → Обзор**: -- Modo: **Full (Strict)** +- Режим: **Полный (Строгий)** -Em **SSL/TLS → Edge Certificates**: +В разделе **SSL/TLS → Пограничные сертификаты**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Всегда используйте HTTPS: ✅ Вкл. +- Минимальная версия TLS: TLS 1.2. +- Автоматическая перезапись HTTPS: ✅ Вкл. -### 4.3 Testar +### 4.3 Тестирование ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Эксплуатация и техническое обслуживание -### Atualizar para nova versão +### Обновление до новой версии ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Просмотр журналов ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Резервное копирование базы данных вручную ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Восстановление из резервной копии ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Повышенная безопасность -### Restringir nginx para Cloudflare IPs +### Ограничить nginx IP-адресами Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Добавьте следующее в `nginx.conf` внутри блока `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Установить Fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Блокируем прямой доступ к порту Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Развертывание в рабочих средах Cloudflare (необязательно) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Для удаленного доступа через Cloudflare Workers (без прямого доступа к виртуальной машине): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Полную документацию смотрите на странице [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Сводка портов -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Порт | Сервис | Доступ | +| ----- | ----------- | ----------------------------------- | +| 22 | СШ | Публичный (с Fail2ban) | +| 80 | nginx HTTP | Перенаправление → HTTPS | +| 443 | nginx HTTPS | Через прокси-сервер Cloudflare | +| 20128 | ОмниРоут | Только локальный хост (через nginx) | diff --git a/docs/i18n/sk/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/sk/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..fd2f380f12 100644 --- a/docs/i18n/sk/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/sk/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Sprievodca nasadením na VM s Cloudflare + +🌐 **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) + +Kompletný sprievodca inštaláciou a konfiguráciou OmniRoute na VM (VPS) s doménou spravovanou cez Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Predpoklady -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Položka | Minimálne | Odporúčané | +| ---------- | -------------------------- | ---------------- | +| **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 | +| **Doména** | Registrovaný na Cloudflare | — | +| **Docker** | Docker Engine 24+ | Docker 27+ | + +**Testovaní poskytovatelia**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Nakonfigurujte VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Vytvorte inštanciu -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +U preferovaného poskytovateľa VPS: ---- +- Vyberte Ubuntu 24.04 LTS +- Vyberte minimálny plán (1 vCPU / 1 GB RAM) +- Nastavte silné heslo root alebo nakonfigurujte kľúč SSH + – Všimnite si **verejnú IP** (napr. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Pripojenie cez SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Aktualizujte systém ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Nainštalujte Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Nainštalujte nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Konfigurácia brány firewall (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tip**: Pre maximálnu bezpečnosť obmedzte porty 80 a 443 iba na IP adresy Cloudflare. Pozrite si časť [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Nainštalujte OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Vytvorte konfiguračný adresár ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Vytvorenie súboru premenných prostredia ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **DÔLEŽITÉ**: Vytvorte jedinečné tajné kľúče! Pre každý kľúč použite `openssl rand -hex 32`. -### 2.3 Iniciar o container +### 2.3 Spustite kontajner ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Overte, či beží ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Malo by sa zobraziť: `[DB] SQLite database ready` a `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Konfigurácia nginx (reverzný proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Generovanie SSL certifikátu (Cloudflare Origin) -No painel da Cloudflare: +Na hlavnom paneli Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Prejdite na **SSL/TLS → Pôvodný server** +2. Kliknite na **Vytvoriť certifikát** +3. Ponechajte predvolené hodnoty (15 rokov, \*.yourdomain.com) +4. Skopírujte **Certifikát o pôvode** a **Súkromný kľúč** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Konfigurácia Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Povoliť a otestovať ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Nakonfigurujte Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Pridať DNS záznam -No painel da Cloudflare → DNS: +Na hlavnom paneli Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Typ | Meno | Obsah | Proxy | +| --- | ------ | ---------------------- | ------------------ | +| A | `llms` | `203.0.113.10` (IP VM) | ✅ Sprostredkovaný | -### 4.2 Configurar SSL +### 4.2 Konfigurácia SSL -Em **SSL/TLS → Overview**: +V časti **SSL/TLS → Prehľad**: -- Modo: **Full (Strict)** +- Režim: **Plný (prísny)** -Em **SSL/TLS → Edge Certificates**: +V časti **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Vždy používať HTTPS: ✅ Zap +- Minimálna verzia TLS: TLS 1.2 +- Automatické prepisy HTTPS: ✅ Zap -### 4.3 Testar +### 4.3 Testovanie ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Prevádzka a údržba -### Atualizar para nova versão +### Inovujte na novú verziu ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Zobraziť denníky ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuálne zálohovanie databázy ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Obnoviť zo zálohy ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Pokročilé zabezpečenie -### Restringir nginx para Cloudflare IPs +### Obmedzte nginx na IP adresy Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Pridajte nasledujúce do `nginx.conf` v rámci bloku `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Nainštalujte fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blokovať priamy prístup k portu Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Nasadenie pre pracovníkov Cloudflare (voliteľné) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Pre vzdialený prístup cez Cloudflare Workers (bez priameho odhalenia VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Úplnú dokumentáciu nájdete na stránke [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Súhrn portov -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Prístav | Služba | Prístup | +| ------- | ----------- | ------------------------- | +| 22 | SSH | Verejné (s fail2ban) | +| 80 | nginx HTTP | Presmerovanie → HTTPS | +| 443 | nginx HTTPS | Cez Cloudflare Proxy | +| 20128 | OmniRoute | Iba Localhost (cez nginx) | diff --git a/docs/i18n/sv/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/sv/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..b78859696b 100644 --- a/docs/i18n/sv/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/sv/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Implementeringsguide på virtuell dator med Cloudflare + +🌐 **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) + +Komplett guide för att installera och konfigurera OmniRoute på en virtuell dator (VPS) med domän som hanteras via Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Förutsättningar -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Objekt | Minsta | Rekommenderas | +| ---------- | ------------------------- | ---------------- | +| **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 | +| **Domän** | Registrerad på Cloudflare | — | +| **Docker** | Docker Engine 24+ | Docker 27+ | + +**Testade leverantörer**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Konfigurera den virtuella datorn -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Skapa instansen -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +På din föredragna VPS-leverantör: ---- +- Välj Ubuntu 24.04 LTS +- Välj minimiplan (1 vCPU / 1 GB RAM) +- Ställ in ett starkt root-lösenord eller konfigurera SSH-nyckel +- Notera den **offentliga IP-adressen** (t.ex. `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Anslut via SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Uppdatera systemet ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Installera Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Installera nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Konfigurera brandvägg (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Tips**: För maximal säkerhet, begränsa portarna 80 och 443 till endast Cloudflare IP-adresser. Se avsnittet [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Installera OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Skapa konfigurationskatalog ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Skapa fil med miljövariabler ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **VIKTIGT**: Skapa unika hemliga nycklar! Använd `openssl rand -hex 32` för varje nyckel. -### 2.3 Iniciar o container +### 2.3 Starta behållaren ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Kontrollera att den körs ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Den ska visa: `[DB] SQLite database ready` och `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Konfigurera nginx (omvänd proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Generera SSL-certifikat (Cloudflare Origin) -No painel da Cloudflare: +I Cloudflares instrumentpanel: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Gå till **SSL/TLS → Origin Server** +2. Klicka på **Skapa certifikat** +3. Behåll standardinställningarna (15 år, \*.dindomän.com) +4. Kopiera **ursprungscertifikatet** och **privat nyckel** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx-konfiguration ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Aktivera och testa ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Konfigurera Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 Lägg till DNS-post -No painel da Cloudflare → DNS: +I Cloudflares instrumentpanel → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Skriv | Namn | Innehåll | Proxy | +| ----- | ------ | ---------------------- | ----------- | +| A | `llms` | `203.0.113.10` (VM IP) | ✅ Fullmakt | -### 4.2 Configurar SSL +### 4.2 Konfigurera SSL -Em **SSL/TLS → Overview**: +Under **SSL/TLS → Översikt**: -- Modo: **Full (Strict)** +- Läge: **Fullständig (Strikt)** -Em **SSL/TLS → Edge Certificates**: +Under **SSL/TLS → Edge-certifikat**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Använd alltid HTTPS: ✅ På +- Minsta TLS-version: TLS 1.2 +- Automatiska HTTPS-omskrivningar: ✅ På -### 4.3 Testar +### 4.3 Testning ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Drift och underhåll -### Atualizar para nova versão +### Uppgradera till en ny version ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Visa loggar ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Manuell säkerhetskopiering av databas ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Återställ från säkerhetskopia ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Avancerad säkerhet -### Restringir nginx para Cloudflare IPs +### Begränsa nginx till Cloudflare IP-adresser ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Lägg till följande till `nginx.conf` inuti `http {}`-blocket: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Installera fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Blockera direktåtkomst till Docker-porten ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Distribuera till Cloudflare-arbetare (valfritt) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +För fjärråtkomst via Cloudflare Workers (utan att exponera den virtuella datorn direkt): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Se hela dokumentationen på [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Portsammanfattning -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Hamn | Service | Tillgång | +| ----- | ----------- | ---------------------------- | +| 22 | SSH | Public (med fail2ban) | +| 80 | nginx HTTP | Omdirigera → HTTPS | +| 443 | nginx HTTPS | Via Cloudflare Proxy | +| 20128 | OmniRoute | Endast Localhost (via nginx) | diff --git a/docs/i18n/th/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/th/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..eaca2449c9 100644 --- a/docs/i18n/th/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/th/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — คู่มือการปรับใช้บน VM พร้อม Cloudflare + +🌐 **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) + +คำแนะนำฉบับสมบูรณ์ในการติดตั้งและกำหนดค่า OmniRoute บน VM (VPS) ด้วยโดเมนที่จัดการผ่าน Cloudflare --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## ข้อกำหนดเบื้องต้น -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| รายการ | ขั้นต่ำ | แนะนำ | +| ------------------ | -------------------------- | ----------------- | +| **ซีพียู** | 1 vCPU | 2 vCPU | +| **แรม** | 1 กิกะไบต์ | 2 กิกะไบต์ | +| **ดิสก์** | SSD 10GB | 25 GB SSD | +| **ระบบปฏิบัติการ** | อูบุนตู 22.04 LTS | อูบุนตู 24.04 LTS | +| **โดเมน** | ลงทะเบียนบน Cloudflare | — | +| **นักเทียบท่า** | นักเทียบท่าเครื่องยนต์ 24+ | นักเทียบท่า 27+ | + +**ผู้ให้บริการที่ผ่านการทดสอบ**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail --- -## Pré-Requisitos +## 1. กำหนดค่า VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 สร้างอินสแตนซ์ -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +บนผู้ให้บริการ VPS ที่คุณต้องการ: ---- +- เลือก Ubuntu 24.04 LTS +- เลือกแผนขั้นต่ำ (1 vCPU / 1 GB RAM) +- ตั้งรหัสผ่านรูทที่รัดกุมหรือกำหนดค่าคีย์ SSH +- หมายเหตุ **IP สาธารณะ** (เช่น `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 เชื่อมต่อผ่าน SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 อัพเดตระบบ ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 ติดตั้งนักเทียบท่า ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 ติดตั้ง nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 กำหนดค่าไฟร์วอลล์ (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **เคล็ดลับ**: เพื่อความปลอดภัยสูงสุด จำกัดพอร์ต 80 และ 443 ไว้เฉพาะ IP ของ Cloudflare เท่านั้น ดูส่วน [Advanced Security](#advanced-security) --- -## 2. Instalar o OmniRoute +## 2. ติดตั้ง OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 สร้างไดเร็กทอรีการกำหนดค่า ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 สร้างไฟล์ตัวแปรสภาพแวดล้อม ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **สำคัญ**: สร้างคีย์ลับที่ไม่ซ้ำใคร! ใช้ `openssl rand -hex 32` สำหรับแต่ละคีย์ -### 2.3 Iniciar o container +### 2.3 เริ่มคอนเทนเนอร์ ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 ตรวจสอบว่ามันกำลังทำงานอยู่ ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +ควรแสดง: `[DB] SQLite database ready` และ `listening on port 20128` --- -## 3. Configurar nginx (Reverse Proxy) +## 3. กำหนดค่า nginx (Reverse Proxy) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 สร้างใบรับรอง SSL (Cloudflare Origin) -No painel da Cloudflare: +ในแดชบอร์ด Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. ไปที่ **SSL/TLS → เซิร์ฟเวอร์ต้นทาง** +2. คลิก **สร้างใบรับรอง** +3. คงค่าเริ่มต้นไว้ (15 ปี \*.yourdomain.com) +4. คัดลอก **Origin Certificate** และ **Private Key** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 การกำหนดค่า Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 เปิดใช้งานและทดสอบ ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. กำหนดค่า Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 เพิ่มบันทึก DNS -No painel da Cloudflare → DNS: +ในแดชบอร์ด Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| พิมพ์ | ชื่อ | เนื้อหา | หนังสือมอบฉันทะ | +| ----- | ------ | ---------------------- | --------------- | +| ก | `llms` | `203.0.113.10` (VM IP) | ✅ พร็อกซี | -### 4.2 Configurar SSL +### 4.2 กำหนดค่า SSL -Em **SSL/TLS → Overview**: +ภายใต้ **SSL/TLS → ภาพรวม**: -- Modo: **Full (Strict)** +- โหมด: **เต็ม (เข้มงวด)** -Em **SSL/TLS → Edge Certificates**: +ภายใต้ **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- ใช้ HTTPS เสมอ: ✅ เปิด +- เวอร์ชัน TLS ขั้นต่ำ: TLS 1.2 +- การเขียน HTTPS อัตโนมัติ: ✅เปิด -### 4.3 Testar +### 4.3 การทดสอบ ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. การดำเนินงานและการบำรุงรักษา -### Atualizar para nova versão +### อัปเกรดเป็นเวอร์ชันใหม่ ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### ดูบันทึก ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### สำรองฐานข้อมูลด้วยตนเอง ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### กู้คืนจากข้อมูลสำรอง ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. การรักษาความปลอดภัยขั้นสูง -### Restringir nginx para Cloudflare IPs +### จำกัด nginx ไว้ที่ IP ของ Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +เพิ่มสิ่งต่อไปนี้ใน `nginx.conf` ภายในบล็อก `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### ติดตั้ง Fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### บล็อกการเข้าถึงพอร์ต Docker โดยตรง ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. ปรับใช้กับ Cloudflare Workers (ไม่บังคับ) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +สำหรับการเข้าถึงระยะไกลผ่าน Cloudflare Workers (โดยไม่ต้องเปิดเผย VM โดยตรง): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +ดูเอกสารฉบับเต็มได้ที่ [omnirouteCloud/README.md](../omnirouteCloud/README.md) --- -## Resumo de Portas +## สรุปพอร์ต -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| พอร์ต | บริการ | เข้าถึง | +| ----- | ----------- | ------------------------------- | +| 22 | เอสเอสเอช | สาธารณะ (พร้อม Fail2ban) | +| 80 | nginx HTTP | เปลี่ยนเส้นทาง → HTTPS | +| 443 | nginx HTTPS | ผ่าน Cloudflare Proxy | +| 20128 | OmniRoute | Localhost เท่านั้น (ผ่าน nginx) | diff --git a/docs/i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..fe3848fcff 100644 --- a/docs/i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — посібник із розгортання на віртуальній машині з Cloudflare + +🌐 **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) + +Повний посібник із встановлення та налаштування OmniRoute на віртуальній машині (VPS) із доменом, керованим через Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Передумови -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Пункт | Мінімум | Рекомендовано | +| --------- | --------------------------- | ---------------- | +| **ЦП** | 1 vCPU | 2 vCPU | +| **RAM** | 1 Гб | 2 ГБ | +| **Диск** | 10 ГБ SSD | 25 ГБ SSD | +| **ОС** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Домен** | Зареєстровано на Cloudflare | — | +| **Докер** | Docker Engine 24+ | Докер 27+ | + +**Перевірені постачальники**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Налаштуйте віртуальну машину -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Створіть екземпляр -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +У бажаного постачальника VPS: ---- +- Виберіть Ubuntu 24.04 LTS +- Виберіть мінімальний план (1 vCPU / 1 GB RAM) +- Встановіть надійний пароль root або налаштуйте ключ SSH +- Зверніть увагу на **публічну IP** (наприклад, `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Підключіться через SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Оновіть систему ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Встановіть Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Встановіть nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Налаштувати брандмауер (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Порада**: для максимальної безпеки обмежте порти 80 і 443 лише IP-адресами Cloudflare. Перегляньте розділ [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Встановіть OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Створіть каталог конфігурації ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Створіть файл змінних середовища ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **ВАЖЛИВО**: генеруйте унікальні секретні ключі! Використовуйте `openssl rand -hex 32` для кожного ключа. -### 2.3 Iniciar o container +### 2.3 Запустіть контейнер ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Переконайтеся, що він працює ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Має відображатися: `[DB] SQLite database ready` та `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Налаштувати nginx (зворотний проксі) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Створення сертифіката SSL (Cloudflare Origin) -No painel da Cloudflare: +На інформаційній панелі Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Перейдіть до **SSL/TLS → Оригінальний сервер** +2. Натисніть **Створити сертифікат** +3. Зберігайте значення за умовчанням (15 років, \*.yourdomain.com) +4. Скопіюйте **Сертифікат походження** та **Приватний ключ** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Конфігурація Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Увімкнути та перевірити ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Налаштуйте DNS Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Додайте запис DNS -No painel da Cloudflare → DNS: +На інформаційній панелі Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Тип | Ім'я | Зміст | Проксі | +| --- | ------ | --------------------------------------------- | --------- | +| A | `llms` | `203.0.113.10` (IP-адреса віртуальної машини) | ✅ Проксі | -### 4.2 Configurar SSL +### 4.2 Налаштувати SSL -Em **SSL/TLS → Overview**: +У розділі **SSL/TLS → Огляд**: -- Modo: **Full (Strict)** +- Режим: **Повний (Строгий)** -Em **SSL/TLS → Edge Certificates**: +У розділі **SSL/TLS → Edge Certificates**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Завжди використовувати HTTPS: ✅ Увімк +- Мінімальна версія TLS: TLS 1.2 +- Автоматичне перезапис HTTPS: ✅ Увімкнено -### 4.3 Testar +### 4.3 Тестування ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Експлуатація та технічне обслуговування -### Atualizar para nova versão +### Оновлення до нової версії ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Переглянути журнали ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Резервне копіювання бази даних вручну ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Відновити з резервної копії ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Розширений захист -### Restringir nginx para Cloudflare IPs +### Обмежити nginx IP-адресами Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Додайте наступне до `nginx.conf` всередині блоку `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Встановити fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Заблокувати прямий доступ до порту Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Розгортання в Cloudflare Workers (необов’язково) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Для віддаленого доступу через Cloudflare Workers (без безпосереднього доступу до віртуальної машини): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Перегляньте повну документацію за адресою [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Короткий опис порту -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Порт | Сервіс | Доступ | +| ----- | ----------- | --------------------------------- | +| 22 | SSH | Загальнодоступний (з fail2ban) | +| 80 | nginx HTTP | Перенаправлення → HTTPS | +| 443 | nginx HTTPS | Через проксі Cloudflare | +| 20128 | OmniRoute | Лише локальний хост (через nginx) | diff --git a/docs/i18n/vi/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/vi/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..de3427f413 100644 --- a/docs/i18n/vi/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/vi/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — Hướng dẫn triển khai trên VM với Cloudflare + +🌐 **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) + +Hướng dẫn đầy đủ để cài đặt và định cấu hình OmniRoute trên VM (VPS) với miền được quản lý qua Cloudflare. --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## Điều kiện tiên quyết -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| Mục | Tối thiểu | Được đề xuất | +| ---------- | -------------------------- | ---------------- | +| **CPU** | 1 vCPU | 2 vCPU | +| **RAM** | 1 GB | 2 GB | +| **Đĩa** | SSD 10GB | SSD 25 GB | +| **HĐH** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | +| **Miền** | Đã đăng ký trên Cloudflare | — | +| **Docker** | Công cụ Docker 24+ | Docker 27+ | + +**Các nhà cung cấp đã được thử nghiệm**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. --- -## Pré-Requisitos +## 1. Cấu hình VM -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 Tạo phiên bản -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +Trên nhà cung cấp VPS ưa thích của bạn: ---- +- Chọn Ubuntu 24.04 LTS +- Chọn gói tối thiểu (1 vCPU / 1 GB RAM) +- Đặt mật khẩu root mạnh hoặc định cấu hình khóa SSH +- Lưu ý **IP công cộng** (ví dụ: `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 Kết nối qua SSH ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 Cập nhật hệ thống ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 Cài đặt Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 Cài đặt nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 Cấu hình tường lửa (UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **Mẹo**: Để bảo mật tối đa, hãy hạn chế cổng 80 và 443 đối với IP Cloudflare. Xem phần [Advanced Security](#advanced-security). --- -## 2. Instalar o OmniRoute +## 2. Cài đặt OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 Tạo thư mục cấu hình ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 Tạo tệp biến môi trường ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **QUAN TRỌNG**: Tạo các khóa bí mật duy nhất! Sử dụng `openssl rand -hex 32` cho mỗi khóa. -### 2.3 Iniciar o container +### 2.3 Khởi động container ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 Xác minh rằng nó đang chạy ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +Nó sẽ hiển thị: `[DB] SQLite database ready` và `listening on port 20128`. --- -## 3. Configurar nginx (Reverse Proxy) +## 3. Cấu hình nginx (Proxy ngược) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 Tạo chứng chỉ SSL (Nguồn gốc Cloudflare) -No painel da Cloudflare: +Trong bảng điều khiển Cloudflare: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. Đi tới **SSL/TLS → Máy chủ gốc** +2. Nhấp vào **Tạo chứng chỉ** +3. Giữ nguyên giá trị mặc định (15 năm, \*.yourdomain.com) +4. Sao chép **Chứng chỉ xuất xứ** và **Khóa riêng** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Cấu hình Nginx ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 Kích hoạt và kiểm tra ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4. Cấu hình DNS Cloudflare -### 4.1 Adicionar registro DNS +### 4.1 Thêm bản ghi DNS -No painel da Cloudflare → DNS: +Trong bảng điều khiển Cloudflare → DNS: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| Loại | Tên | Nội dung | Ủy nhiệm | +| ---- | ------ | ---------------------- | ---------------- | +| A | `llms` | `203.0.113.10` (IP VM) | ✅ Được ủy quyền | -### 4.2 Configurar SSL +### 4.2 Định cấu hình SSL -Em **SSL/TLS → Overview**: +Trong **SSL/TLS → Tổng quan**: -- Modo: **Full (Strict)** +- Chế độ: **Đầy đủ (Nghiêm ngặt)** -Em **SSL/TLS → Edge Certificates**: +Trong **SSL/TLS → Chứng chỉ biên**: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- Luôn sử dụng HTTPS: ✅ Bật +- Phiên bản TLS tối thiểu: TLS 1.2 +- Tự động ghi lại HTTPS: ✅ Bật -### 4.3 Testar +### 4.3 Kiểm tra ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. Vận hành và bảo trì -### Atualizar para nova versão +### Nâng cấp lên phiên bản mới ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### Xem nhật ký ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### Sao lưu cơ sở dữ liệu thủ công ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### Khôi phục từ bản sao lưu ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. Bảo mật nâng cao -### Restringir nginx para Cloudflare IPs +### Hạn chế nginx đối với IP Cloudflare ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +Thêm phần sau vào `nginx.conf` bên trong khối `http {}`: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### Cài đặt failed2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### Chặn quyền truy cập trực tiếp vào cổng Docker ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. Triển khai lên Cloudflare Workers (Tùy chọn) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +Để truy cập từ xa thông qua Cloudflare Workers (không để lộ trực tiếp VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +Xem tài liệu đầy đủ tại [omnirouteCloud/README.md](../omnirouteCloud/README.md). --- -## Resumo de Portas +## Tóm tắt cổng -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| Cảng | Dịch vụ | Truy cập | +| ----- | ----------- | ------------------------------- | +| 22 | SSH | Công khai (với Fail2ban) | +| 80 | nginx HTTP | Chuyển hướng → HTTPS | +| 443 | nginx HTTPS | Qua Proxy Cloudflare | +| 20128 | OmniRoute | Chỉ Localhost (thông qua nginx) | diff --git a/docs/i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md b/docs/i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md index f0734d9a9e..1d60f00fc0 100644 --- a/docs/i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md +++ b/docs/i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md @@ -1,73 +1,71 @@ -🌐 **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) +# OmniRoute — 使用 Cloudflare 在虚拟机上部署指南 + +🌐 **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) + +在通过 Cloudflare 管理域的 VM (VPS) 上安装和配置 OmniRoute 的完整指南。 --- -# OmniRoute — Guia de Deploy em VM com Cloudflare +## 先决条件 -Guia completo para instalar e configurar o OmniRoute em uma VM (VPS) com domínio gerenciado via Cloudflare. +| 项目 | 最低 | 推荐 | +| ------------ | -------------------- | --------------------------------- | ---------------- | +| **CPU** | 1 个虚拟CPU | 2 个虚拟CPU | +| **内存** | 1 GB | 2GB | +| **磁盘** | 10 GB 固态硬盘 | 25 GB 固态硬盘 | +| **操作系统** | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS Ubuntu 24.04 LTS | Ubuntu 24.04 LTS | +| **域名** | 在 Cloudflare 上注册 | — | +| **码头工人** | Docker 引擎 24+ | Docker 27+ | + +**经过测试的提供商**:Akamai (Linode)、DigitalOcean、Vultr、Hetzner、AWS Lightsail。 --- -## Pré-Requisitos +## 1.配置虚拟机 -| Item | Mínimo | Recomendado | -| ----------- | ------------------------ | ---------------- | -| **CPU** | 1 vCPU | 2 vCPU | -| **RAM** | 1 GB | 2 GB | -| **Disco** | 10 GB SSD | 25 GB SSD | -| **SO** | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS | -| **Domínio** | Registrado no Cloudflare | — | -| **Docker** | Docker Engine 24+ | Docker 27+ | +### 1.1 创建实例 -**Providers testados**: Akamai (Linode), DigitalOcean, Vultr, Hetzner, AWS Lightsail. +在您首选的 VPS 提供商上: ---- +- 选择 Ubuntu 24.04 LTS +- 选择最低计划(1 vCPU / 1 GB RAM) +- 设置强root密码或配置SSH密钥 +- 记下 **公共 IP**(例如 `203.0.113.10`) -## 1. Configurar a VM - -### 1.1 Criar a instância - -No seu provider de VPS preferido: - -- Escolha Ubuntu 24.04 LTS -- Selecione o plano mínimo (1 vCPU / 1 GB RAM) -- Defina uma senha forte para root ou configure SSH key -- Anote o **IP público** (ex: `203.0.113.10`) - -### 1.2 Conectar via SSH +### 1.2 通过 SSH 连接 ```bash ssh root@203.0.113.10 ``` -### 1.3 Atualizar o sistema +### 1.3 更新系统 ```bash apt update && apt upgrade -y ``` -### 1.4 Instalar Docker +### 1.4 安装 Docker ```bash -# Instalar dependências +# Install dependencies apt install -y ca-certificates curl gnupg -# Adicionar repositório oficial do Docker +# Add official 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 +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 Instalar nginx +### 1.5 安装nginx ```bash apt install -y nginx ``` -### 1.6 Configurar Firewall (UFW) +### 1.6 配置防火墙(UFW) ```bash ufw default deny incoming @@ -78,29 +76,29 @@ ufw allow 443/tcp # HTTPS ufw enable ``` -> **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). +> **提示**:为了获得最大的安全性,请将端口 80 和 443 仅限制为 Cloudflare IP。请参阅 [Advanced Security](#advanced-security) 部分。 --- -## 2. Instalar o OmniRoute +## 2. 安装 OmniRoute -### 2.1 Criar diretório de configuração +### 2.1 创建配置目录 ```bash mkdir -p /opt/omniroute ``` -### 2.2 Criar arquivo de variáveis de ambiente +### 2.2 创建环境变量文件 ```bash -cat > /opt/omniroute/.env << 'EOF' -# === Segurança === -JWT_SECRET=ALTERE-PARA-CHAVE-SECRETA-UNICA-64-CHARS -INITIAL_PASSWORD=SuaSenhaSegura123! -API_KEY_SECRET=ALTERE-PARA-OUTRA-CHAVE-SECRETA -STORAGE_ENCRYPTION_KEY=ALTERE-PARA-TERCEIRA-CHAVE-SECRETA +cat > /opt/omniroute/.env << ‘EOF’ +# === Security === +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=ALTERE-PARA-SALT-UNICO +MACHINE_ID_SALT=CHANGE-TO-A-UNIQUE-SALT # === App === PORT=20128 @@ -112,19 +110,19 @@ ENABLE_REQUEST_LOGS=true AUTH_COOKIE_SECURE=false REQUIRE_API_KEY=false -# === Domain (altere para seu domínio) === +# === Domain (change to your domain) === BASE_URL=https://llms.seudominio.com NEXT_PUBLIC_BASE_URL=https://llms.seudominio.com -# === Cloud Sync (opcional) === +# === Cloud Sync (optional) === # CLOUD_URL=https://cloud.omniroute.online # NEXT_PUBLIC_CLOUD_URL=https://cloud.omniroute.online EOF ``` -> ⚠️ **IMPORTANTE**: Gere chaves secretas únicas! Use `openssl rand -hex 32` para cada chave. +> ⚠️ **重要**:生成唯一的密钥!对每个密钥使用 `openssl rand -hex 32`。 -### 2.3 Iniciar o container +### 2.3 启动容器 ```bash docker pull diegosouzapw/omniroute:latest @@ -138,45 +136,45 @@ docker run -d \ diegosouzapw/omniroute:latest ``` -### 2.4 Verificar se está rodando +### 2.4 验证其是否正在运行 ```bash docker ps | grep omniroute docker logs omniroute --tail 20 ``` -Deve exibir: `[DB] SQLite database ready` e `listening on port 20128`. +它应显示:`[DB] SQLite database ready` 和 `listening on port 20128`。 --- -## 3. Configurar nginx (Reverse Proxy) +## 3.配置nginx(反向代理) -### 3.1 Gerar certificado SSL (Cloudflare Origin) +### 3.1 生成 SSL 证书(Cloudflare Origin) -No painel da Cloudflare: +在 Cloudflare 仪表板中: -1. Vá em **SSL/TLS → Origin Server** -2. Clique **Create Certificate** -3. Deixe os padrões (15 anos, \*.seudominio.com) -4. Copie o **Origin Certificate** e a **Private Key** +1. 转到 **SSL/TLS → 源服务器** +2. 单击**创建证书** +3. 保留默认值(15 年,\*.yourdomain.com) +4. 复制**原始证书**和**私钥** ```bash mkdir -p /etc/nginx/ssl -# Colar o certificado +# Paste the certificate nano /etc/nginx/ssl/origin.crt -# Colar a chave privada +# Paste the private key nano /etc/nginx/ssl/origin.key chmod 600 /etc/nginx/ssl/origin.key ``` -### 3.2 Configuração do nginx +### 3.2 Nginx 配置 ```bash -cat > /etc/nginx/sites-available/omniroute << 'NGINX' -# Default server — bloqueia acesso direto por IP +cat > /etc/nginx/sites-available/omniroute << ‘NGINX’ +# Default server — blocks direct access via IP server { listen 80 default_server; listen [::]:80 default_server; @@ -192,7 +190,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; - server_name llms.seudominio.com; # Altere para seu domínio + server_name llms.yourdomain.com; # Change to your domain ssl_certificate /etc/nginx/ssl/origin.crt; ssl_certificate_key /etc/nginx/ssl/origin.key; @@ -210,7 +208,7 @@ server { # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; + proxy_set_header Connection “upgrade”; # SSE (Server-Sent Events) — streaming AI responses proxy_buffering off; @@ -224,61 +222,61 @@ server { server { listen 80; listen [::]:80; - server_name llms.seudominio.com; + server_name llms.yourdomain.com; return 301 https://$server_name$request_uri; } NGINX ``` -### 3.3 Ativar e testar +### 3.3 启用和测试 ```bash -# Remover config padrão +# Remove default configuration rm -f /etc/nginx/sites-enabled/default -# Ativar OmniRoute +# Enable OmniRoute ln -sf /etc/nginx/sites-available/omniroute /etc/nginx/sites-enabled/omniroute -# Testar e recarregar +# Test and reload nginx -t && systemctl reload nginx ``` --- -## 4. Configurar Cloudflare DNS +## 4.配置 Cloudflare DNS -### 4.1 Adicionar registro DNS +### 4.1 添加DNS记录 -No painel da Cloudflare → DNS: +在 Cloudflare 仪表板 → DNS 中: -| Type | Name | Content | Proxy | -| ---- | ------ | ------------------------- | ---------- | -| A | `llms` | `203.0.113.10` (IP da VM) | ✅ Proxied | +| 类型 | 名称 | 内容 | 代理 | +| ---- | ------ | --------------------------- | ------- | +| 一个 | `llms` | `203.0.113.10`(虚拟机 IP) | ✅ 代理 | -### 4.2 Configurar SSL +### 4.2 配置SSL -Em **SSL/TLS → Overview**: +在 **SSL/TLS → 概述** 下: -- Modo: **Full (Strict)** +- 模式:**完全(严格)** -Em **SSL/TLS → Edge Certificates**: +在**SSL/TLS → 边缘证书**下: -- Always Use HTTPS: ✅ On -- Minimum TLS Version: TLS 1.2 -- Automatic HTTPS Rewrites: ✅ On +- 始终使用 HTTPS: ✅ 打开 +- 最低 TLS 版本:TLS 1.2 +- 自动 HTTPS 重写: ✅ 开启 -### 4.3 Testar +### 4.3 测试 ```bash curl -sI https://llms.seudominio.com/health -# Deve retornar HTTP/2 200 +# Should return HTTP/2 200 ``` --- -## 5. Operações e Manutenção +## 5. 操作与维护 -### Atualizar para nova versão +### 升级到新版本 ```bash docker pull diegosouzapw/omniroute:latest @@ -290,42 +288,42 @@ docker run -d --name omniroute --restart unless-stopped \ diegosouzapw/omniroute:latest ``` -### Ver logs +### 查看日志 ```bash -docker logs -f omniroute # Stream em tempo real -docker logs omniroute --tail 50 # Últimas 50 linhas +docker logs -f omniroute # Real-time stream +docker logs omniroute --tail 50 # Last 50 lines ``` -### Backup manual do banco +### 手动数据库备份 ```bash -# Copiar dados do volume para o host +# Copy data from the volume to the host docker cp omniroute:/app/data ./backup-$(date +%F) -# Ou comprimir todo o volume +# Or compress the entire volume docker run --rm -v omniroute-data:/data -v $(pwd):/backup \ alpine tar czf /backup/omniroute-data-$(date +%F).tar.gz /data ``` -### Restaurar de backup +### 从备份恢复 ```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 /" + alpine sh -c “rm -rf /data/* && tar xzf /backup/omniroute-data-YYYY-MM-DD.tar.gz -C /” docker start omniroute ``` --- -## 6. Segurança Avançada +## 6. 高级安全性 -### Restringir nginx para Cloudflare IPs +### 将 nginx 限制为 Cloudflare IP ```bash -cat > /etc/nginx/cloudflare-ips.conf << 'CF' -# Cloudflare IPv4 ranges — atualizar periodicamente +cat > /etc/nginx/cloudflare-ips.conf << ‘CF’ +# Cloudflare IPv4 ranges — update periodically # https://www.cloudflare.com/ips-v4/ set_real_ip_from 173.245.48.0/20; set_real_ip_from 103.21.244.0/22; @@ -346,58 +344,58 @@ real_ip_header CF-Connecting-IP; CF ``` -Adicionar no `nginx.conf` dentro do bloco `http {}`: +将以下内容添加到 `http {}` 块内的 `nginx.conf` 中: ```nginx include /etc/nginx/cloudflare-ips.conf; ``` -### Install fail2ban +### 安装fail2ban ```bash apt install -y fail2ban systemctl enable fail2ban systemctl start fail2ban -# Verificar status +# Check status fail2ban-client status sshd ``` -### Bloquear acesso direto na porta do Docker +### 阻止直接访问 Docker 端口 ```bash -# Impedir acesso externo direto à porta 20128 +# Prevent direct external access to port 20128 iptables -I DOCKER-USER -p tcp --dport 20128 -j DROP iptables -I DOCKER-USER -i lo -p tcp --dport 20128 -j ACCEPT -# Persistir as regras +# Persist the rules apt install -y iptables-persistent netfilter-persistent save ``` --- -## 7. Deploy do Cloud Worker (Opcional) +## 7. 部署到 Cloudflare Workers(可选) -Para acesso remoto via Cloudflare Workers (sem expor a VM diretamente): +对于通过 Cloudflare Workers 进行远程访问(无需直接公开 VM): ```bash -# No repositório local +# In the local repository cd omnirouteCloud npm install npx wrangler login npx wrangler deploy ``` -Ver documentação completa em [omnirouteCloud/README.md](../omnirouteCloud/README.md). +请参阅 [omnirouteCloud/README.md](../omnirouteCloud/README.md) 处的完整文档。 --- -## Resumo de Portas +## 端口总结 -| Porta | Serviço | Acesso | -| ----- | ----------- | ----------------------------- | -| 22 | SSH | Público (com fail2ban) | -| 80 | nginx HTTP | Redirect → HTTPS | -| 443 | nginx HTTPS | Via Cloudflare Proxy | -| 20128 | OmniRoute | Somente localhost (via nginx) | +| 港口 | 服务 | 访问 | +| ----- | --------------- | ------------------------ | +| 22 | 22 SSH | 公共(带有fail2ban) | +| 80 | nginx HTTP | 重定向 → HTTPS | +| 443 | 443 nginx HTTPS | 通过 Cloudflare 代理 | +| 20128 | 20128全方位路线 | 仅本地主机(通过 nginx) | diff --git a/package-lock.json b/package-lock.json index c4b8963dcf..e294a0d44c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "omniroute", - "version": "2.8.0", + "version": "2.8.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "omniroute", - "version": "2.8.0", + "version": "2.8.3", "hasInstallScript": true, "license": "MIT", "workspaces": [ diff --git a/scripts/i18n/generate-multilang.mjs b/scripts/i18n/generate-multilang.mjs index d3f9c25e92..e70b953324 100644 --- a/scripts/i18n/generate-multilang.mjs +++ b/scripts/i18n/generate-multilang.mjs @@ -15,6 +15,7 @@ const DOC_SOURCE_FILES = [ "FEATURES.md", "TROUBLESHOOTING.md", "USER_GUIDE.md", + "VM_DEPLOYMENT_GUIDE.md", ]; const LOCALE_SPECS = [ diff --git a/src/shared/constants/providers.ts b/src/shared/constants/providers.ts index ee0a8d968e..b8993a96d1 100644 --- a/src/shared/constants/providers.ts +++ b/src/shared/constants/providers.ts @@ -10,6 +10,9 @@ export const FREE_PROVIDERS = { name: "Gemini CLI", icon: "terminal", color: "#4285F4", + deprecated: true, + deprecationReason: + "Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead.", }, kiro: { id: "kiro", alias: "kr", name: "Kiro AI", icon: "psychology_alt", color: "#FF6B35" }, }; diff --git a/src/shared/validation/providerSchema.ts b/src/shared/validation/providerSchema.ts index f254ad31a7..4bc5b1e219 100644 --- a/src/shared/validation/providerSchema.ts +++ b/src/shared/validation/providerSchema.ts @@ -19,6 +19,12 @@ export const ProviderSchema = z.object({ textIcon: z.string().optional(), website: z.string().url().optional(), passthroughModels: z.boolean().optional(), + deprecated: z.boolean().optional(), + deprecationReason: z.string().optional(), + hasFree: z.boolean().optional(), + freeNote: z.string().optional(), + authHint: z.string().optional(), + apiHint: z.string().optional(), }); export const ProvidersMapSchema = z.record(z.string(), ProviderSchema);