IMBoy 是可私有部署的即时通讯平台。本仓库包含 Erlang/OTP 后端、数据库迁移、生产部署配置和产品文档;Flutter 客户端与 React 管理后台在独立仓库中。
- 单聊、群聊、频道、朋友圈和消息推送
- HTTP API 与 WebSocket 长连接
- 可选端到端加密(E2EE)
- PostgreSQL 持久化与 Garage S3 附件直传
- Docker Compose 单节点生产部署(Helm/Kubernetes 为实验性,未经生产集群验证)
flowchart TB
APP["Flutter App<br/>iOS / Android / Desktop"]
ADMIN["React Admin<br/>管理后台"]
GATEWAY["Nginx<br/>TLS 与反向代理"]
BACKEND["IMBoy Backend<br/>Erlang/OTP + Cowboy<br/>Handler → Logic → DS → Repo"]
PG["PostgreSQL 18+"]
GARAGE["Garage S3<br/>附件存储"]
PROM["Prometheus"]
GRAFANA["Grafana"]
APP -->|"HTTPS / WSS"| GATEWAY
ADMIN -->|"HTTPS"| GATEWAY
GATEWAY --> BACKEND
BACKEND --> PG
BACKEND --> GARAGE
PROM -. "抓取 /metrics" .-> BACKEND
GRAFANA --> PROM
- Erlang/OTP 28+
- GNU Make
- Docker
bash scripts/dev_setup.sh脚本会启动 PostgreSQL 18,并创建 .env 和 config/sys.local.config。按脚本提示核对数据库密码;这两个本地配置都不会提交到 Git。
make compile
IMBOYENV=local make run启动成功后访问:
http://127.0.0.1:9800/api/v1/init
如果手机需要连接本机后端,请把配置中的 127.0.0.1 改为电脑的局域网 IP。
make compile # 编译
IMBOYENV=local make run # 启动本地服务
make eunit # 单元测试
make eunit-local # 使用本地 PostgreSQL 跑测试
make dialyze # 类型检查
make ctl ARGS="node status" # 查看节点状态
make ctl ARGS="db ping" # 检查数据库src/api/ HTTP / WebSocket 参数处理
src/adm/ 管理后台接口
src/logic/ 业务逻辑
src/ds/ 数据服务与缓存
src/repo/ PostgreSQL 访问
src/lib/ 通用基础能力
priv/ 数据库迁移与静态资源
deploy/ 生产部署
docs/ 架构、协议与运维文档
业务调用遵循 Handler → Logic → DS → Repo。新增接口通常需要修改 Handler、路由、Logic,并补测试;不要修改 vendored 的 erlang.mk。
cd deploy
bash install.sh脚本会自动生成 .env、10 个随机密钥和 RSA 登录密钥对,然后停下来让你填 3 项机器
无从知晓的信息(两个域名 + 证书通知邮箱)。填好后再跑一次同一条命令,它会完成
前置检查、拉起服务、签发 TLS 证书并自检。
⚠️ 生产编排文件deploy/docker-compose.prod.yml不随开源仓分发,需通过商务 交付渠道获取(leeyisoft@qq.com)后放入deploy/目录。install.sh会在缺失时 明确提示。仅作评估可先用下方的最小演示环境,无需该文件。
生产环境还需要域名、TLS 和强密钥,完整步骤见 部署指南。
cd deploy
docker compose -f docker-compose.demo.yml up -d
# 30 秒后访问 http://127.0.0.1:9800/api/v1/init最小两服务环境(PostgreSQL + 后端),适合产品评估和现场演示。 详细演示流程见 5 分钟 Demo 脚本。
- 在线文档站(教程 / 指南 / 参考 / 合规)
- E2EE 协议规范
- E2EE 安全简报(企业决策者)
- 后端架构
- REST API 目录
- WebSocket 协议
- 贡献指南
- 安全说明
