Об этом проекте
OpenWA — это бесплатный открытый API-шлюз WhatsApp, предоставляющий HTTP-эндпоинты и вебхуки для отправки и получения сообщений WhatsApp без опоры на официальный Cloud API от Meta. Он построен на NestJS, TypeScript и панели управления на React и нативно поддерживает Docker для простого развёртывания.
Архитектура
OpenWA использует подключаемую архитектуру: в качестве базы данных можно использовать SQLite (без настройки) или PostgreSQL, хранение и миграция выполняются через локальную файловую систему или S3-совместимые сервисы, а кэширование опционально через Redis. Медиафайлы возвращаются встроенно потребителям API и вебхуков, а не сохраняются автоматически в хранилище.
Движки
Доступны два движка WhatsApp, каждый со своими компромиссами:
- whatsapp-web.js: управляет реальным экземпляром headless Chromium, имитирующим подлинный трафик WhatsApp Web, что снижает риск блокировки, но увеличивает потребление RAM (~300–500 МБ на сессию).
- Baileys: напрямую работает по протоколу WebSocket для нескольких устройств, потребляя меньше памяти (~30–80 МБ на сессию), но несёт более высокий риск блокировки из-за более лёгкой идентификации.
Ключевые возможности
- Управление мультисессиями: одновременная работа нескольких аккаунтов WhatsApp на одном экземпляре.
- Обмен сообщениями: отправка и получение текста, медиа (изображения, видео, аудио, документы), реакций и правок сообщений; поддерживается массовая рассылка.
- Группы и каналы: создание, присоединение, настройка групп; управление метками; поддержка WhatsApp Channels/newsletters.
- Вебхуки: события в реальном времени с проверкой подписи HMAC и опциональными фильтрами перед отправкой.
- Аутентификация API: токены оператора и наблюдателя с контролем доступа на уровне сессии и чата, что позволяет ограничивать интеграции конкретными сессиями или отдельными чатами.
- Обработка звонков: события call.received и автоотклонение на уровне сессии (только Baileys).
- Инфраструктура: проверки работоспособности для Kubernetes, миграция данных между бэкендами, поддержка прокси на уровне сессии, настраиваемое ограничение скорости и белый список CIDR.
Безопасность
Продакшен-стек Docker запускает процесс Node от имени непривилегированного пользователя через dumb-init и gosu, сбрасывает привилегии после исправления прав на тома и направляет доступ к сокету Docker через выделенный прокси-сайдкар вместо прямого монтирования сокета. Документация по безопасности приведена в SECURITY.md.
Интеграции
Официальные плагины доступны для Chatwoot и Typebot через изолированную среду интеграций, а для автоматизации рабочих процессов n8n существуют узлы сообщества. Также поддерживаются сторонние адаптеры, такие как ioBroker.
Предупреждения
Поскольку OpenWA подключается через реверс-инжиниринговые клиенты, а не через официальный API Meta, всегда существует ненулевой риск ограничения или блокировки аккаунта. Сопровождающие рекомендуют использовать выделенный номер, потерей которого вы готовы рискнуть, постепенно прогревать новые аккаунты, соблюдать ограничения скорости и сохранять SMS или email как запасной вариант для критичных сценариев. В регулируемых средах (здравоохранение, финансы, контексты ЕС/GDPR) вместо этого следует использовать официальный WhatsApp Cloud API.
Начало работы
Самый быстрый путь — Docker Compose: клонируйте репозиторий, выполните docker compose -f docker-compose.dev.yml up -d, затем откройте панель управления и API по адресу http://localhost:2785. Продакшен-развёртывания могут добавить PostgreSQL, Redis и MinIO через профили compose. Интерактивный эндпоинт Swagger доступен по адресу /api/docs, когда он включён.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.