Об этом проекте

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, когда он включён.