OpenIM的部署涉及多个组件,并支持多种方式,包括源码、Docker和Kubernetes等。这要求在确保不同部署方式之间的兼容性同时,还需有效管理各版本之间的差异。确实,这些都是复杂的问题,涉及到深入的技术细节和精准的系统配置。我们的目标是简化部署流程,同时保持系统的灵活性和稳定性,以适应不同用户的需求。目前3.5版本已经简化了部署流程,而且这个版本会长期维护,欢迎大家使用。
1. 环境及组件要求
环境要求
注意事项 | 详细说明 |
操作系统 | Linux 系统 |
硬件资源 | 至少 4G 可用内存 |
Golang | v1.19 或更高 |
Docker | v24.0.5 或更高 |
Git | v2.17.1 或更高 |
存储组件要求
存储组件 | 建议版本 |
MongoDB | v6.0.2 或更高 |
Redis | v7.0.0 或更高 |
Zookeeper | v3.8 |
Kafka | v3.5.1 |
MySQL | v5.7 或更高 |
MinIO | 最新版本 |
2. 部署 OpenIM Server (IM)
2.1 设置 OPENIM_IP
# 如果服务器有外网IP
export OPENIM_IP="外网IP"
# 如果仅提供内网服务
export OPENIM_IP="内网IP"
2.2 ️ 部署组件 (mongodb/redis/zookeeper/kafka/MinIO等)
git clone https://github.com/OpenIMSDK/open-im-server && cd open-im-server
# 建议切换到release-v3.5及以后的release分支
make init && docker compose up -d
2.3 ️ 编译
make build
2.4 启动/停止/检测
# 启动
make start
# 停止
make stop
# 检测
make check
3. 部署 App Server (Chat)
3.1 ️ 部署组件(mysql)
# 返回上一级目录
cd ..
# 克隆仓库 建议切换到release-v1.5及以后的release分支
git clone https://github.com/OpenIMSDK/chat chat && cd chat
# 部署mysql
docker run -d --name mysql2 -p 13306:3306 -p 33306:33060 -v "$(pwd)/components/mysql/data:/var/lib/mysql" -v "/etc/localtime:/etc/localtime" -e MYSQL_ROOT_PASSWORD="openIM123" --restart always mysql:5.7
3.2 ️ 编译
make init
make build
3.3 启动/停止/检测
# 启动
make start
# 停止
make stop
# 检测
make check
4. 快速验证
开放端口
IM 端口
TCP 端口 | 说明 | 操作 |
TCP:10001 | ws 协议,消息端口,用于客户端 SDK | 端口放行 |
TCP:10002 | api 端口,如用户、好友、群组、消息等接口 | 端口放行 |
TCP:10005 | 选择 MinIO 存储时需要(OpenIM 默认使用 MinIO 存储) | 端口放行 |
Chat 端口
TCP 端口 | 说明 | 操作 |
TCP:10008 | 业务系统,如注册、登录等 | 端口放行 |
TCP:10009 | 管理后台,如统计、封号等 | 端口放行 |
PC Web 及管理后台前端资源端口
TCP 端口 | 说明 | 操作 |
TCP:11001 | PC Web 前端资源 | 端口放行 |
TCP:11002 | 管理后台前端资源 | 端口放行 |
Grafana 端口
TCP 端口 | 说明 | 操作 |
TCP:13000 | grafana端口 | 端口放行 |
三、验证
PC Web 验证
提示: 在浏览器中输入 http://ip:11001
来访问 PC Web。此 IP 应为服务端 OPENIM_IP
,确保浏览器能访问。首次使用请通过手机号注册,验证码默认为 666666
。
图:PC Web 接口示例
App 验证
扫描以下二维码或点击 这里 进行下载。
图:App 下载二维码
提示: 双击 OpenIM 后修改 IP 为服务端 OPENIM_IP
再重启 App。请确保开放相关端口,并在修改后重启 App。首次使用请先通过手机号注册,验证码默认为 666666
。
图:服务器地址修改 - 步骤 1
图:服务器地址修改 - 步骤 2
管理后台验证
在浏览器中输入 http://ip:11002
来访问管理后台。此 IP 应为服务端 OPENIM_IP
,确保您的浏览器能访问。默认账号和密码均为 chatAdmin
。
图:管理后台界面
5. 配置项修改
5.1 ️ 共用配置项的修改
配置项 | 需要修改的文件 | 操作 |
mongo/kafka/minio 相关 | .env, openim-server/config/config.yaml | 需重启组件和 IM |
redis/zookeeper 相关 | .env, openim-server/config/config.yaml, chat/config/config.yaml | 需重启组件、IM 和 Chat |
SECRET | openim-server/config/config.yaml, chat/config/config.yaml | 需重启 IM 和 Chat |
5.2 特殊配置项的修改
特殊配置项: API_OPENIM_PORT/MINIO_PORT/OPENIM_IP/GRAFANA_PORT
- 修改
.env
文件中的特殊配置项 - 在
openim-server/config/config.yaml
中按照规则修改配置 - 在
chat/config/config.yaml
中按照规则修改配置 - 重启 IM 和 Chat
5.3 ️ 其他配置项的修改
对于 .env
、chat/config/config.yaml
和 openim-server/config/config.yaml
中的其他配置项,可以单独修改相应文件中的这些配置项。
5.4 端口的修改
特别注意,对于IM相关任何端口的修改,都需要同步修改 open-im-server/scripts/install/environment.sh
中的端口。
6. 常见问题
6.1 日志查看
- 运行时日志:
logs/OpenIM.log.all.*
- 启动日志:
_output/logs/openim_*.log
6.2 启动顺序
启动顺序如下:
- IM 依赖的组件:mongo/redis/kafka/zookeeper/minio等
- IM
- Chat 依赖的组件:mysql
- Chat
6.3 Docker 版本
- 新版 Docker 已经整合了 docker-compose.
- 老版本的 Docker 可能不支持 gateway 功能。建议升级到较新的版本,如
23.0.1
。
7. 关于OpenIM
得益于广泛的开发者支持,OpenIM在开源即时通讯(IM)领域保持着领先地位,在Github上的星标数量已经超过12,000。在当前对数据和隐私安全日益重视的背景下,IM私有部署的需求不断增长,这与中国软件产业的快速发展趋势相契合。特别是在政府和企业领域,随着信息技术的飞速发展和创新产业的广泛应用,对IM解决方案的需求急剧上升。进一步来看,协同办公软件市场的持续扩张使得“安全可控”成为了一个关键属性。