-
Notifications
You must be signed in to change notification settings - Fork 9
VLESS Proxy
Настройка VLESS прокси для доступа к Google Gemini API из регионов с ограничениями.
Google Gemini API может быть недоступен в некоторых регионах. VLESS прокси позволяет обойти эти ограничения.
Ваш сервер → xray-core (локальный) → VLESS сервер → Google API
-
xray-coreзапускается локально - Создаёт SOCKS5/HTTP прокси на localhost
- Запросы к Gemini идут через этот прокси
- Прокси передаёт их на удалённый VLESS сервер
- VLESS сервер запрашивает Google API
Docker: Уже установлен в образе
Локально:
mkdir -p bin && cd bin
wget https://github.com/XTLS/Xray-core/releases/download/v1.8.7/Xray-linux-64.zip
unzip Xray-linux-64.zip && chmod +x xrayВам нужен VLESS сервер с поддержкой Reality или TLS. Можно:
- Арендовать VPS и настроить самостоятельно
- Использовать коммерческие VPN сервисы с VLESS
vless://UUID@HOST:PORT?security=SECURITY&pbk=PUBLIC_KEY&sid=SHORT_ID&type=TRANSPORT&flow=FLOW#NAME
| Параметр | Описание | Пример |
|---|---|---|
UUID |
Уникальный идентификатор | a1b2c3d4-... |
HOST |
Адрес сервера | vless.example.com |
PORT |
Порт | 443 |
security |
Протокол безопасности |
reality, tls, none
|
pbk |
Public key (для Reality) | abc123... |
sid |
Short ID (для Reality) | 1234 |
type |
Транспорт |
tcp, ws, grpc
|
flow |
Flow control | xtls-rprx-vision |
#NAME |
Название (опционально) | #MyProxy |
Reality + TCP:
vless://uuid@host:443?security=reality&pbk=PUBLIC_KEY&sid=SHORT_ID&type=tcp&flow=xtls-rprx-vision#MyVLESS
TLS + WebSocket:
vless://uuid@host:443?security=tls&type=ws&path=/ws#MyVLESS
- Перейдите в LLM → Cloud Providers
- Нажмите "Добавить провайдер"
- Тип: Gemini
- Введите API ключ
- В модальном окне провайдера найдите "VLESS Proxy"
- Вставьте VLESS URL
- Нажмите "Тест прокси"
Тест проверяет:
- Валидность VLESS URL
- Доступность xray-core
- Подключение к VLESS серверу
- Доступ к Google API через прокси
После успешного теста сохраните провайдера.
| Эндпоинт | Описание |
|---|---|
GET /admin/llm/proxy/status |
Статус xray и прокси |
POST /admin/llm/proxy/test |
Тест VLESS URL |
GET /admin/llm/proxy/validate |
Валидация URL формата |
| Статус | Описание |
|---|---|
| 🟢 Running | Прокси работает |
| 🟡 Configured | Настроен, но не запущен |
| 🔴 Not configured | VLESS URL не указан |
| ⚪ xray not found | xray-core не установлен |
VLESS URL хранится в поле config провайдера:
{
"temperature": 0.7,
"vless_url": "vless://uuid@host:port?..."
}| Ошибка | Причина | Решение |
|---|---|---|
xray not found |
Не установлен xray-core | Установите xray |
Invalid VLESS URL |
Неверный формат URL | Проверьте формат |
Connection refused |
VLESS сервер недоступен | Проверьте сервер |
Timeout |
Медленное соединение | Проверьте сеть |
Если прокси недоступен, система пытается подключиться напрямую с предупреждением в логах.
GeminiProvider выставляет HTTP_PROXY/HTTPS_PROXY на весь процесс (иначе SDK Gemini не подхватывает прокси). Побочный эффект: любой другой HTTP-запрос из оркестратора тоже пойдёт через VLESS — включая обращения к локальным сервисам.
Отсюда два правила, уже зашитые в код:
-
Всё, что ходит в localhost, создаёт httpx-клиент с
trust_env=False. Так сделаныVLLMLLMService.client, health-check vLLM вmodules/llm/router.pyиBridgeClient(WhatsApp-мост). Без этого запрос к127.0.0.1:11434уходил в прокси, и админка показывала «vLLM недоступен» при живом сервере. -
Переменные прокси выставляются только если xray реально поднялся. Раньше при незапустившемся xray
HTTP_PROXYоставался указывать на закрытый порт — и рушил всё подряд: health-check,tiktoken, загрузки с HuggingFace. Теперь при неудачном старте провайдер снимает свои значения и работает напрямую, оставив предупреждение в логе.
Симптом, по которому это узнаётся: «локальная модель числится недоступной, хотя curl localhost:11434/v1/models отвечает» — смотрите, не включён ли Gemini-провайдер с прокси.