🔗 Присоединиться к чату | 📖 Документация | 🐳 Развертывание Docker
Qwen-Proxy — это прокси-сервис, преобразующий https://chat.qwen.ai и Qwen Code / Qwen Cli в API, совместимый с OpenAI. С помощью этого проекта вам нужен всего один аккаунт, чтобы использовать любой клиент с поддержкой OpenAI API (например, ChatGPT-Next-Web, LobeChat и др.) для вызова различных моделей https://chat.qwen.ai и Qwen Code / Qwen Cli. Модели в эндпоинте /cli предоставляются Qwen Code / Qwen Cli, поддерживают контекст 256K и нативный параметр tools.
Основные возможности: - Совместимость с форматом OpenAI API, бесшовная интеграция с различными клиентами - Поддержка ротации нескольких аккаунтов для повышения доступности - Поддержка потоковых/непотоковых ответов - Поддержка мультимодальности (распознавание изображений, генерация изображений) - Поддержка интеллектуального поиска, глубокого размышления и других продвинутых функций - Поддержка CLI-эндпоинта с контекстом 256K и возможностью вызова инструментов - Веб-интерфейс управления для удобной настройки и мониторинга - Массовое добавление аккаунтов с отображением прогресса в реальном времени, параллельность входа настраивается в системных настройках
Важно:
chat.qwen.aiограничивает скорость запросов по IP. Известно, что это ограничение не связано с Cookie, а только с IP-адресом.
Решения:
Для высоконагруженного использования рекомендуется применять пул прокси для ротации IP:
| Вариант | Способ настройки | Описание |
|---|---|---|
| Вариант 1 | PROXY_URL + ProxyFlow |
Прямая настройка прокси-адреса, все запросы проходят через пул с ротацией IP |
| Вариант 2 | QWEN_CHAT_PROXY_URL + UrlProxy + ProxyFlow |
Комбинация обратного прокси + пул прокси для более гибкой ротации IP |
Примеры настройки:
# Вариант 1: Прямое использование пула прокси
PROXY_URL=http://127.0.0.1:8282 # Адрес ProxyFlow
# Вариант 2: Обратный прокси + пул прокси
QWEN_CHAT_PROXY_URL=http://127.0.0.1:8000/qwen # Адрес обратного прокси UrlProxy (UrlProxy настроен с HTTP_PROXY на ProxyFlow)
Каждому аккаунту можно назначить собственный исходящий прокси, чтобы разные аккаунты ходили с разных IP одновременно и не попадали под массовый бан chat.qwen.ai по корреляции IP.
Приоритет: account.proxy > глобальный PROXY_URL > без прокси
Поддерживаемые протоколы: HTTP / HTTPS / SOCKS5 (как у PROXY_URL)
Через панель (рекомендуется): Откройте dashboard → при добавлении аккаунта заполните поле «Proxy URL», либо нажмите кнопку «Изменить proxy» на карточке существующего аккаунта.
Через ENV (DATA_SAVE_MODE=none):
# Старый формат (обратная совместимость, прокси не задан)
ACCOUNTS=user1@mail.com:pass1,user2@mail.com:pass2
# Новый формат (URL прокси через `|`, можно смешивать со старым)
ACCOUNTS=user1@mail.com:pass1|http://10.0.0.1:8080,user2@mail.com:pass2|socks5://10.0.0.2:1080
Схема data/data.json (file-режим):
{
"accounts": [
{
"email": "user@mail.com",
"password": "...",
"token": "...",
"expires": 1234567890,
"proxy": "http://10.0.0.1:8080"
}
]
}
Если поле proxy равно null или отсутствует, аккаунт ходит через глобальный PROXY_URL (если он задан).
⚠️ Внимание: прокси-URL в ответах API не маскируются. Проект рассчитан на запуск в доверенной локальной/частной сети с единственным администратором.
Создайте файл .env и настройте следующие параметры:
# 🌐 Конфигурация сервиса
LISTEN_ADDRESS=localhost # Адрес прослушивания
SERVICE_PORT=3000 # Порт сервиса
# 🔐 Безопасность
API_KEY=sk-123456,sk-456789 # API-ключи (обязательно, поддержка нескольких ключей)
ACCOUNTS= # Настройка аккаунтов (формат: user1:pass1[|proxy_url],user2:pass2[|proxy_url])
# 🚀 Многопроцессная конфигурация PM2
PM2_INSTANCES=1 # Количество процессов PM2 (1/число/max)
PM2_MAX_MEMORY=1G # Ограничение памяти PM2 (100M/1G/2G и т.д.)
# Примечание: в кластерном режиме PM2 все процессы используют один порт
# 🔍 Конфигурация функций
SEARCH_INFO_MODE=table # Режим отображения результатов поиска (table/text)
OUTPUT_THINK=true # Выводить ли процесс размышления (true/false)
LEGACY_REASONING_IN_CONTENT=false # Формат рассуждений: false=поле reasoning_content, true=старый режим <think> внутри content (true/false)
SIMPLE_MODEL_MAP=false # Упрощенное сопоставление моделей (true/false)
MODELS_CACHE_TTL=3600 # Срок жизни кэша списка моделей (сек), 0=бессрочно
# 🌐 Прокси и обратный прокси
QWEN_CHAT_PROXY_URL= # Пользовательский URL обратного прокси Chat API (по умолчанию: https://chat.qwen.ai)
QWEN_CLI_PROXY_URL= # Пользовательский URL обратного прокси CLI API (по умолчанию: https://portal.qwen.ai)
PROXY_URL= # Адрес HTTP/HTTPS/SOCKS5 прокси (например: http://127.0.0.1:7890)
# 🗄️ Хранение данных
DATA_SAVE_MODE=none # Режим сохранения данных (none/file/redis)
REDIS_URL= # Адрес подключения к Redis (опционально, при TLS используйте rediss://)
BATCH_LOGIN_CONCURRENCY=5 # Параллельность входа при массовом добавлении аккаунтов
# 📸 Конфигурация кэширования
CACHE_MODE=default # Режим кэширования изображений (default/file)
| Параметр | Описание | Пример |
|---|---|---|
LISTEN_ADDRESS |
Адрес прослушивания сервиса | localhost или 0.0.0.0 |
SERVICE_PORT |
Порт работы сервиса | 3000 |
API_KEY |
API-ключи доступа, поддержка нескольких ключей. Первый ключ — администраторский (доступ к панели управления), остальные — обычные (только вызов API). Разделяются запятой | sk-admin123,sk-user456,sk-user789 |
PM2_INSTANCES |
Количество процессов PM2 | 1/4/max |
PM2_MAX_MEMORY |
Ограничение памяти PM2 | 100M/1G/2G |
SEARCH_INFO_MODE |
Формат отображения результатов поиска | table или text |
OUTPUT_THINK |
Отображать ли процесс размышления AI | true или false |
LEGACY_REASONING_IN_CONTENT |
Формат вывода рассуждений. По умолчанию false = рассуждения в отдельном поле reasoning_content; true = старый режим (<think> внутри content) |
true или false |
SIMPLE_MODEL_MAP |
Упрощенное сопоставление моделей, возвращает только базовые модели без вариантов | true или false |
MODELS_CACHE_TTL |
Срок жизни кэша списка моделей (в секундах); по истечении следующий запрос обновит список; 0 = бессрочный кэш |
3600 |
QWEN_CHAT_PROXY_URL |
Пользовательский адрес обратного прокси Chat API | https://your-proxy.com |
QWEN_CLI_PROXY_URL |
Пользовательский адрес обратного прокси CLI API | https://your-cli-proxy.com |
PROXY_URL |
Адрес прокси для исходящих запросов, поддержка HTTP/HTTPS/SOCKS5 | http://127.0.0.1:7890 |
DATA_SAVE_MODE |
Способ персистентного хранения данных | none/file/redis |
REDIS_URL |
Адрес подключения к Redis, при использовании TLS-шифрования необходим протокол rediss:// |
redis://localhost:6379 или rediss://xxx.upstash.io |
BATCH_LOGIN_CONCURRENCY |
Параллельность входа при массовом добавлении аккаунтов, можно динамически менять в системных настройках фронтенда | 5 |
CACHE_MODE |
Способ хранения кэша изображений | default/file |
LOG_LEVEL |
Уровень логирования | DEBUG/INFO/WARN/ERROR |
ENABLE_FILE_LOG |
Включить ли файловое логирование | true или false |
LOG_DIR |
Директория файлов логов | ./logs |
MAX_LOG_FILE_SIZE |
Максимальный размер файла лога (МБ) | 10 |
MAX_LOG_FILES |
Количество сохраняемых файлов логов | 5 |
💡 Подсказка: Можно бесплатно создать экземпляр Redis на Upstash, при использовании протокола TLS адрес имеет формат
rediss://...

Переменная окружения API_KEY поддерживает настройку нескольких API-ключей для реализации разных уровней доступа:
Формат настройки:
# Один ключ (права администратора)
API_KEY=sk-admin123
# Несколько ключей (первый — администратор, остальные — обычные пользователи)
API_KEY=sk-admin123,sk-user456,sk-user789
Описание прав:
| Тип ключа | Область прав | Описание функций |
|---|---|---|
| Администраторский ключ | Полные права | • Доступ к панели управления |
• Изменение системных настроек
• Вызов всех API-эндпоинтов
• Добавление/удаление обычных ключей | | Обычный ключ | Права вызова API | • Только вызов API-эндпоинтов
• Нет доступа к панели управления
• Нет возможности изменять системные настройки |
Сценарии использования: - Командная работа: назначение ключей с разными правами для разных членов команды - Интеграция приложений: предоставление ограниченного API-доступа сторонним приложениям - Разделение безопасности: разделение административных и пользовательских прав
Примечания: - Первый API_KEY автоматически становится администраторским ключом с максимальными правами - Администратор может динамически добавлять или удалять обычные ключи через панель управления - Все ключи могут вызывать API-эндпоинты, различия в правах касаются только функций управления
Переменная окружения CACHE_MODE управляет способом хранения кэша изображений для оптимизации производительности загрузки и обработки:
| Режим | Описание | Сценарий использования |
|---|---|---|
default |
Кэширование в памяти (по умолчанию) | Однопроцессное развертывание, кэш теряется при перезапуске |
file |
Файловое кэширование | Многопроцессное развертывание, кэш сохраняется в директорию ./caches/ |
Рекомендуемая настройка:
- Однопроцессное развертывание: используйте CACHE_MODE=default, максимальная производительность
- Многопроцессное/кластерное развертывание: используйте CACHE_MODE=file, обеспечивает общий кэш между процессами
- Развертывание Docker: рекомендуется CACHE_MODE=file с монтированием директории ./caches
Структура директории файлового кэша:
caches/
├── [signature1].txt # Файл кэша, содержит URL изображения
├── [signature2].txt
└── ...
docker run -d \
-p 3000:3000 \
-e API_KEY=sk-admin123,sk-user456,sk-user789 \
-e DATA_SAVE_MODE=none \
-e CACHE_MODE=file \
-e ACCOUNTS= \
-v ./caches:/app/caches \
--name qwen2api \
rfym21/qwen2api:latest
# Скачать файл конфигурации
curl -o docker-compose.yml https://raw.githubusercontent.com/Rfym21/Qwen2API/refs/heads/main/docker/docker-compose.yml
# Запустить сервис
docker compose pull && docker compose up -d
# Клонировать проект
git clone https://github.com/Rfym21/Qwen2API.git
cd Qwen2API
# Установить зависимости
npm install
# Настроить переменные окружения
cp .env.example .env
# Отредактировать файл .env
# Умный запуск (рекомендуется — автоматически определяет одно-/многопроцессный режим)
npm start
# Режим разработки
npm run dev
Используйте PM2 для многопроцессного развертывания в продакшене, обеспечивая лучшую производительность и стабильность.
Важно: В кластерном режиме PM2 все процессы используют один порт, PM2 автоматически выполняет балансировку нагрузки.
Используйте npm start для автоматического определения способа запуска:
PM2_INSTANCES=1 — однопроцессный режимPM2_INSTANCES>1 — кластерный режим Node.jsБыстрое развертывание на Hugging Face Spaces:

Быстрое развертывание на Vercel:
Необходимо настроить переменные окружения:
ACCOUNTS=email:password
SERVICE_PORT=80
API_KEY=sk-xxx
DATA_SAVE_MODE=none
``` Qwen2API/ ├── README.md ├── ecosystem.config.js # Конфигурация PM2 ├── package.json │ ├── docker/ # Директория конфигурации Docker │ ├── Dockerfile │ ├── docker-compose.yml │ └── docker-compose-redis.yml │ ├── caches/ # Директория файлов кэша ├── data/ # Директория файлов данных │ ├── data.json │ └── data_template.json ├── scripts/ # Директория скриптов │ └── fingerprint
$ claude mcp add Qwen2API \
-- python -m otcore.mcp_server <graph>