WhatsApp-Integration ohne RAM-Hunger: Ein Blick auf Evolution Go
Wenn du WhatsApp schon einmal mit einem CRM verknüpft oder einen Benachrichtigungsdienst aufgebaut hast, kennst du wahrscheinlich das Ressourcenproblem. Die meisten fertigen Open-Source-Lösungen sind vollgepackt mit JavaScript-Bibliotheken wie Baileys oder betreiben einen headless Puppeteer-Browser. Ein paar hundert aktive Instanzen können in diesem Szenario leicht mehrere Gigabyte RAM verbrauchen.
Die Entwickler der Evolution Foundation stießen direkt darauf. Ihr Hauptprojekt, die Evolution API, ist in Node.js geschrieben und funktioniert für die meisten Aufgaben hervorragend. Als jedoch Skalierung benötigt wurde, entschieden sie sich, die Kern-Engine in Go neu zu schreiben.
Daraus entstand evolution-go — ein Service, der die whatsmeow-Bibliothek in einer sauberen REST-API kapselt.

Was steckt im Projekt
Im Kern des Services liegt whatsmeow — eine der schnellsten Go-Bibliotheken für die Arbeit mit dem WhatsApp-Protokoll. Darauf sitzt das Gin-Web-Framework, das HTTP-Anfragen verarbeitet, und Swagger für die Dokumentation.
Die Hauptidee hinter dem Service ist, die gesamte Low-Level-Socket-Arbeit, Sessions, QR-Code-Autorisierung und Medienlieferung selbst zu übernehmen. Du sendest einfach eine gewöhnliche HTTP-POST-Anfrage mit JSON, und der Service kümmert sich um den Rest.
Architektonische Besonderheiten
Interessant ist, wie die Autoren die Zustellung eingehender Events angegangen sind. Oft sind solche Services auf reguläre Webhooks beschränkt. Hier ist die Auswahl größer:
- Webhooks für einfache Integrationen
- WebSockets für Echtzeit-Oberflächen
- RabbitMQ (AMQP) und NATS für zuverlässige Queues in verteilten Systemen
Wenn dein Client Bilder, Sprachnachrichten oder Dokumente sendet oder empfängt, kann evolution-go diese direkt an S3 oder MinIO weiterleiten. Der gesamte Nachrichtenverlauf und die Verbindungsstatus werden bei Bedarf über GORM in PostgreSQL gespeichert.
Wie es in der Praxis funktioniert
Der einfachste Weg, das Projekt zu betreiben, ist über Docker.
git clone https://github.com/evolution-foundation/evolution-go.git
cd evolution-go
make docker-build
make docker-run
Nach dem Start der Anwendung musst du die Konfigurationsdatei .env ausfüllen. Der minimale Einstellungssatz sieht so aus:
SERVER_PORT=8080
CLIENT_NAME=my_app
GLOBAL_API_KEY=super-secret-key
POSTGRES_AUTH_DB=postgresql://postgres:pass@localhost:5432/evogo_auth?sslmode=disable
POSTGRES_USERS_DB=postgresql://postgres:pass@localhost:5432/evogo_users?sslmode=disable
DATABASE_SAVE_MESSAGES=false
Es gibt hier eine wichtige Details, über das man beim ersten Start leicht stolpern kann. Das Projekt verwendet ein Aktivierungssystem. Direkt nach dem Start geben alle API-Endpunkte einen 403-Fehler zurück.
Um den Service zum Laufen zu bringen, musst du das eingebaute Control Panel unter der Adresse http://localhost:8080/manager/login öffnen, deine GLOBAL_API_KEY eingeben und einen kurzen Instanz-Registrierungsprozess durchlaufen. Danach wird der Status in der Datenbank gespeichert und die API verfügbar.
Deine erste Nachricht senden
Nach der Aktivierung kannst du zur Swagger-UI unter der Adresse http://localhost:8080/swagger/index.html gehen oder eine Anfrage vom Terminal aus senden.
Zuerst erstellen wir eine Instanz und erhalten einen QR-Code für die Verknüpfung mit WhatsApp:
curl -X POST http://localhost:8080/instance/create \
-H "apikey: super-secret-key" \
-H "Content-Type: application/json" \
-d '{"instanceName": "office_number"}'
Hole den QR-Code über GET /instance/office_number/qrcode, scanne ihn über die WhatsApp-App auf deinem Handy und sende einen Testtext:
curl -X POST http://localhost:8080/message/sendText \
-H "apikey: super-secret-key" \
-H "Content-Type: application/json" \
-d '{
"instanceName": "office_number",
"number": "79991112233",
"text": "Привет! Это сообщение отправлено через Evolution Go."
}'
Wo das nützlich ist
Vor allem wird das Projekt diejenigen interessieren, die eigene CRM-Systeme, Support-Dienste oder Benachrichtigungssysteme aufbauen.
Wenn du Dutzende von WhatsApp-Nummern gleichzeitig verbunden halten musst, wird dir die Go-Option im Vergleich zu Node.js-Alternativen eine erhebliche Menge an Serverkosten sparen. NATS und RabbitMQ serienmäßig dabei zu haben, macht die Integration in eine bestehende Microservices-Architektur viel einfacher.
Auf der Kehrseite steht der obligatorische Aktivierungsschritt über den Manager beim ersten Start. Wenn du eine vollständig automatisierte Bereitstellung in Kubernetes planst, musst du dies als separaten Schritt scripten.
Evolution Go ist eine gute Alternative zu schwergewichtigen Integrationsdiensten. Das Projekt ist noch jung, aber es steht eine aktive Community dahinter, die gleichzeitig das gesamte Ökosystem der Evolution Foundation entwickelt.
Lohnt sich auszuprobieren, wenn du einen schnellen WhatsApp-Gateway mit einer ordentlichen REST-API suchst und keine Gigabyte Speicher für jede aktive Session verbrauchen willst.
Ähnliche Projekte