OpenWA:免费开源的 WhatsApp API 网关 — 自建消息基础设施,告别供应商锁定
项目介绍
OpenWA(仓库:rmyndharis/OpenWA)是一个免费、开源、可自托管的 WhatsApp API 网关,专为需要完全控制消息基础设施的开发者设计。它直接与付费的 WhatsApp Business API 提供商竞争,提供 MIT 许可证下的完整替代方案。
- Stars: 4,499(今日 +1,870)
- 语言: TypeScript(86.3%)
- 许可证: MIT
- 最新版本: v0.1.6(2026-05-17)
- 官网: https://www.open-wa.org
核心价值主张
“没有供应商锁定,没有隐藏的付费墙——完全掌控你的消息基础设施。”
OpenWA 的核心创新在于其可插拔架构——你可以通过配置切换数据库引擎(SQLite/PostgreSQL)、存储后端(本地/S3)和缓存层(内存/Redis),而无需修改任何应用代码。
功能一览
所有功能除了 Contacts API 均已实现 ✅:
| 类别 | 核心功能 |
|---|---|
| 核心 | REST API、多会话、Webhook(HMAC 签名)、完整 React 仪表盘、API Key 认证、Swagger 文档 |
| 消息 | 文本 / 媒体 / 回复、批量消息、投递与已读回执 |
| 高级 | 群组 API、WhatsApp Channel/Newsletter、标签、每会话代理、速率限制、CIDR 白名单、审计日志 |
| 基础设施 | SQLite、PostgreSQL、Redis 缓存、S3/MinIO 存储、Docker Compose、健康检查(K8s 就绪)、数据迁移 |
快速上手
开发环境(Docker 推荐)
git clone https://github.com/rmyndharis/OpenWA.git
cd OpenWA
docker compose -f docker-compose.dev.yml up -d
生产部署
使用 docker-compose.yml 的 profiles 选择性部署:
# 完整生产栈
docker compose --profile full up -d
可用 profiles:postgres(PostgreSQL 数据库)、redis(Redis 缓存)、minio(S3 兼容存储)、with-dashboard(Web UI)、with-proxy(Traefik 反向代理)、full(全部服务)
API 使用示例
创建会话并获取二维码:
# 创建会话
curl -X POST http://localhost:2785/api/sessions \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"name": "my-bot"}'
# 启动并获取二维码
curl -X POST http://localhost:2785/api/sessions/{sessionId}/start
curl http://localhost:2785/api/sessions/{sessionId}/qr
发送消息:
curl -X POST http://localhost:2785/api/sessions/{sessionId}/messages/send-text \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"chatId": "628123456789@c.us",
"text": "Hello from OpenWA!"
}'
设置 Webhook:
curl -X POST http://localhost:2785/api/sessions/{sessionId}/webhooks \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"url": "https://your-server.com/webhook",
"events": ["message.received", "session.status"],
"secret": "your-hmac-secret"
}'
技术架构
| 层级 | 技术选型 |
|---|---|
| 运行时 | Node.js 22 LTS |
| 框架 | NestJS 11.x |
| 语言 | TypeScript 5.x |
| WhatsApp 引擎 | whatsapp-web.js |
| 数据库 | SQLite / PostgreSQL(TypeORM) |
| 缓存 | Redis(可选) |
| 存储 | 本地 / S3 / MinIO |
| 容器 | Docker + Compose |
项目结构
openwa/
├── src/
│ ├── main.ts # 入口
│ ├── app.module.ts # 根模块
│ ├── config/ # 配置
│ ├── common/ # 共享工具(缓存、存储)
│ ├── core/ # 插件钩子与系统
│ ├── engine/ # WhatsApp 引擎抽象层
│ └── modules/
│ ├── session/ # 会话生命周期
│ ├── message/ # 收发消息
│ ├── webhook/ # 事件转发
│ ├── group/ # 群组管理
│ ├── auth/ # API 密钥安全
│ ├── infra/ # 基础设施管理
│ └── health/ # K8s 探针
├── dashboard/ # React UI
├── docs/
└── docker-compose.yml
类似项目对比
| 项目 | 相似点 | 差异 |
|---|---|---|
| WhatsApp Business API | 官方 WhatsApp API | 收费、需要企业认证、有调用限制;OpenWA 免费开源、完全可控 |
| Baileys | WhatsApp Web 协议实现 | Baileys 是底层库,需要自己构建完整服务;OpenWA 是开箱即用的完整网关 |
| WWebJS | whatsapp-web.js 封装 | OpenWA 底层也使用 whatsapp-web.js,但提供了完整的 REST API、Webhook、管理后台 |
结合当前技术背景的分析
WhatsApp 消息生态的开放化趋势
2026 年,WhatsApp 已经成为全球最重要的商业消息渠道之一,但官方的 Business API 存在高昂的使用成本和严格的审核流程。OpenWA 的爆发反映了开发社区对自建消息基础设施的强烈需求:
- 成本控制——免费开源替代商业 API,无需按消息数付费
- 数据主权——所有消息数据存储在自己的服务器上
- 定制化——可根据业务需求深度定制消息处理逻辑
- 隐私合规——完全控制数据流向,满足 GDPR 等合规要求
从"SaaS"到"自托管"的回归
OpenWA 的火爆也反映了 2026 年的一种技术趋势——开发者越来越倾向于可自托管的开源替代品来替代 SaaS 服务。这与 OpenHuman(替代闭源 AI 助手)、RuView(替代摄像头监控)等项目一脉相承。
更新记录(2026-05-20)
- 首次上榜,当日 Stars 增长 1,870+
- 总 Stars 达到 4,499
- 最新版本 v0.1.6 于 2026-05-17 发布