À propos du projet

OpenWA est une passerelle API WhatsApp gratuite et open source qui fournit des points de terminaison HTTP et des webhooks pour envoyer et recevoir des messages WhatsApp sans dépendre de l'API Cloud officielle de Meta. Elle est construite avec NestJS, TypeScript et un tableau de bord React, et est native Docker pour un déploiement facile. Architecture OpenWA utilise une architecture enfichable : le backend de base de données peut être SQLite (sans configuration) ou PostgreSQL, le stockage et la migration utilisent le système de fichiers local ou des services compatibles S3, et la mise en cache est optionnelle via Redis. Les fichiers multimédias sont renvoyés en ligne aux consommateurs d'API et de webhooks plutôt que d'être automatiquement persistés dans le stockage. Moteurs Deux moteurs WhatsApp sont disponibles, chacun avec des compromis différents : - whatsapp-web.js : pilote une véritable instance Chromium sans interface qui imite le trafic authentique de WhatsApp Web, ce qui réduit le risque de bannissement mais augmente l'utilisation de la RAM (~300–500 Mo par session). - Baileys : parle directement le protocole WebSocket multi-appareils, consommant moins de mémoire (~30–80 Mo par session) mais présentant un risque de bannissement plus élevé en raison d'une empreinte plus facile à identifier. Capacités clés - Gestion multi-sessions : exécuter plusieurs comptes WhatsApp simultanément sur une seule instance. - Messagerie : envoyer et recevoir du texte, des médias (images, vidéo, audio, documents), des réactions et des modifications de messages ; envoi en masse pris en charge. - Groupes et chaînes : créer, rejoindre, configurer des groupes ; gérer les étiquettes ; prise en charge des Chaînes/newsletters WhatsApp. - Webhooks : événements en temps réel avec vérification de signature HMAC et filtres de pré-dispatch optionnels. - Authentification API : jetons opérateur et lecteur avec contrôle d'accès limité à la session et au chat, de sorte que les intégrations peuvent être limitées à des sessions spécifiques ou à des chats individuels. - Gestion des appels : événements call.received et rejet automatique par session (Baileys uniquement). - Infrastructure : contrôles de santé pour Kubernetes, migration de données entre backends, prise en charge de proxy par session, limitation de débit configurable et liste blanche CIDR. Sécurité La pile Docker de production exécute le processus Node en tant qu'utilisateur non-root via dumb-init et gosu, abandonne les privilèges après la correction de la propriété des volumes, et achemine l'accès au socket Docker via un sidecar proxy dédié plutôt que de monter le socket directement. La documentation de sécurité est fournie dans SECURITY.md. Intégrations Des plugins officiels sont disponibles pour Chatwoot et Typebot via une structure d'intégration sandboxée, et des nœuds communautaires existent pour l'automatisation de workflows n8n. Des adaptateurs tiers tels qu'ioBroker sont également pris en charge. Avertissements Étant donné qu'OpenWA se connecte via des clients reverse-engineered plutôt que l'API officielle de Meta, il existe toujours un risque non nul de restriction ou de bannissement de compte. Les mainteneurs recommandent d'utiliser un numéro dédié que vous pouvez vous permettre de perdre, de chauffer progressivement les nouveaux comptes, de respecter les limites de débit et de conserver SMS ou e-mail comme solution de secours pour les flux critiques. Dans les environnements réglementés (santé, finance, contextes UE/RGPD), l'API Cloud officielle de WhatsApp doit être utilisée à la place. Pour commencer Le chemin le plus rapide est Docker Compose : clonez le dépôt, exécutez docker compose -f docker-compose.dev.yml up -d, puis accédez au tableau de bord et à l'API à l'adresse http://localhost:2785. Les déploiements en production peuvent ajouter PostgreSQL, Redis et MinIO via des profils compose. Un point de terminaison Swagger interactif est disponible à /api/docs lorsqu'il est activé.