Sobre el proyecto

OpenWA es una API Gateway de WhatsApp gratuita y de código abierto que proporciona puntos finales HTTP y webhooks para enviar y recibir mensajes de WhatsApp sin depender de la API oficial en la nube de Meta. Está construida con NestJS, TypeScript y un panel de control React, y es nativa de Docker para un despliegue sencillo. Arquitectura OpenWA utiliza una arquitectura configurable: el backend de base de datos puede ser SQLite (sin configuración) o PostgreSQL, el almacenamiento y las migraciones usan el sistema de archivos local o servicios compatibles con S3, y el caché es opcional mediante Redis. Los archivos multimedia se devuelven en línea a los consumidores de la API y webhooks en lugar de persistirse automáticamente en el almacenamiento. Motores Hay dos motores de WhatsApp disponibles, cada uno con diferentes compensaciones: - whatsapp-web.js: ejecuta una instancia real de Chromium sin cabeza que imita el tráfico genuino de WhatsApp Web, lo que resulta en menor riesgo de prohibición pero mayor uso de RAM (~300-500 MB por sesión). - Baileys: habla directamente el protocolo WebSocket multi-dispositivo, consumiendo menos memoria (~30-80 MB por sesión) pero conllevando mayor riesgo de prohibición debido a la facilidad de huella digital. Funcionalidades clave - Gestión multi-sesión: ejecuta varias cuentas de WhatsApp simultáneamente en una misma instancia. - Mensajería: enviar y recibir texto, medios (imágenes, video, audio, documentos), reacciones y ediciones de mensajes; envío masivo admitido. - Grupos y canales: crear, unir y configurar grupos; gestionar etiquetas; soporte para Canales y boletines de WhatsApp. - Webhooks: eventos en tiempo real con verificación de firma HMAC y filtros opcionales previos al despacho. - Autenticación de API: tokens de operador y espectador con control de acceso basado en sesión y chat, de modo que las integraciones puedan limitarse a sesiones específicas o chats individuales. - Manejo de llamadas: eventos call.received y rechazo automático por sesión (solo Baileys). - Infraestructura: controles de salud para Kubernetes, migración de datos entre backends, soporte de proxy por sesión, límite de velocidad configurable y lista blanca CIDR. Seguridad El stack de Docker en producción ejecuta el proceso Node como usuario no root mediante dumb-init y gosu, reduce privilegios después de corregir la propiedad de los volúmenes, y enruta el acceso al socket de Docker a través de un sidecar proxy dedicado en lugar de montar el socket directamente. La documentación de seguridad está disponible en SECURITY.md. Integraciones Existen plugins oficiales para Chatwoot y Typebot a través de un tejido de integración aislado, y nodos comunitarios están disponibles para automatización de flujos de trabajo n8n. También se admiten adaptadores de terceros como ioBroker. Advertencias Debido a que OpenWA se conecta a través de clientes ingeniería inversa en lugar de la API oficial de Meta, siempre existe un riesgo no nulo de restricción o prohibición de cuenta. Los mantenedores recomiendan usar un número dedicado que puedas permitirte perder, calentar gradualmente las cuentas nuevas, respetar los límites de velocidad y mantener SMS o correo electrónico como respaldo para flujos críticos. En entornos regulados (salud, finanzas, contextos UE/RGPD), se debe utilizar la API oficial en la nube de WhatsApp. Primeros pasos La vía más rápida es Docker Compose: clona el repositorio, ejecuta docker compose -f docker-compose.dev.yml up -d, luego accede al panel y la API en http://localhost:2785. Los despliegues en producción pueden agregar PostgreSQL, Redis y MinIO mediante perfiles de compose. Hay un endpoint interactivo Swagger disponible en /api/docs cuando está habilitado.