OpenIM Open Source Instant Messaging Project Docker Compose Deployment Guide
The deployment of OpenIM involves multiple components and supports various methods including source code, Docker, and Kubernetes. This requires ensuring compatibility between different deployment methods and effectively managing differences between versions. This is undoubtedly a complex task involving technical depth and precise system configuration. We are committed to simplifying the deployment process while ensuring the system's flexibility and stability, to meet the needs of various users. Currently, in version 3.5, we have simplified the deployment process and will provide long-term maintenance for this version, looking forward to your user experience.
## 1. Environment and Component Requirements
### Environmental Requirements
| Note | Detailed Explanation |
| ------------------ | ----------------------------- |
| Operating System | Linux system |
| Hardware Resources | At least 4GB available memory |
| Golang | v1.19 or higher |
| Docker | v24.0.5 or higher |
| Git | v2.17.1 or higher |
### Storage Component Requirements
| Storage Component | Recommended Version |
| ----------------- | ------------------- |
| MongoDB | v6.0.2 or higher |
| Redis | v7.0.0 or higher |
| Zookeeper | v3.8 |
| Kafka | v3.5.1 |
| MySQL | v5.7 or higher |
| MinIO | Latest version |
## 2. Docker Deployment
## 2.1 Clone Repository and Initialize
```jsx
git clone https://github.com/openimsdk/openim-docker openim-docker && cd openim-docker && make init
```
## 2.2 Set OPENIM_IP
```jsx
# If the server has an external IP
export OPENIM_IP="external IP"
# If only providing internal network services
export OPENIM_IP="internal IP"
```
## 2.3 Start Services and View Logs
```jsx
docker compose up -d
docker ps
docker compose logs -f openim-chat
docker compose logs -f openim-server
```
## 3. Quick Verification
### Open Ports
#### IM Ports
| TCP Port | Description | Action |
| --------- | ------------------------------------------------------------ | --------- |
| TCP:10001 | ws protocol, message port, for client SDK | Open Port |
| TCP:10002 | api port, such as user, friend, group, message, etc. | Open Port |
| TCP:10005 | Needed when choosing MinIO storage (OpenIM defaults to MinIO storage) | Open Port |
#### Chat Ports
| TCP Port | Description | Action |
| --------- | ----------------------------------------------------- | --------- |
| TCP:10008 | Business system, such as registration, login, etc. | Open Port |
| TCP:10009 | Management backend, such as statistics, banning, etc. | Open Port |
#### PC Web and Management Backend Frontend Resource Ports
| TCP Port | Description | Action |
| --------- | ------------------------------------- | --------- |
| TCP:11001 | PC Web frontend resources | Open Port |
| TCP:11002 | Management backend frontend resources | Open Port |
#### Grafana Port
| TCP Port | Description | Action |
| --------- | ------------ | --------- |
| TCP:13000 | grafana port | Open Port |
## 4. Verification
### PC Web Verification
**Note**: Enter `http://ip:11001` in the browser to access PC Web. This IP should be the server's `OPENIM_IP`, ensuring browser access. Please register via mobile phone for first-time use, the default verification code is `666666`.

*Image: PC Web Interface Example*
### App Verification
Scan the QR code below or click [here](https://www.pgyer.com/OpenIM-Flutter) to download.

*Image: App Download QR Code*
**Note**: Double-click on OpenIM and modify the IP to the server's `OPENIM_IP`, then restart the App. Please ensure relevant ports are open and restart the App after modification. Register via mobile phone for first-time use, the default verification code is `666666`.
*Image: Server Address Modification - Step 1*
*Image: Server Address Modification - Step 2*
## 5. About Configuration Item Modifications
This project has complex configuration items, mainly because some configurations involve **`.env`**, **`openim-chat/config/config.yaml`**, and **`openim-server/config/config.yaml`** files. The explanation for modifying configuration items is divided into two parts: modifications for shared configuration items and other configuration items.
### 5.1 Shared Configuration Items
Shared configuration items in **`.env`**, **`openim-chat/config/config.yaml`**, and **`openim-server/config/config.yaml`**:
1. Ports and passwords for mysql/mongo/redis/kafka/zookeeper/minio;
2. SECRET;
3. API_OPENIM_PORT;
4. OPENIM_IP;
5. MINIO_PORT;
6. GRAFANA_PORT.
### 5.2 Modification Methods
For the shared configuration items in 5.1, choose one of the following two methods.
Method One: Regenerate All Configurations
If a comprehensive update is needed, follow these steps:
1. Delete existing configuration files: Remove **`openim-server/config/config.yaml`** and **`openim-chat/config/config.yaml`** files.
2. Modify `.env` file: Update related configuration items in the **`.env`** file.
3. Regenerate configurations and restart services: Execute **`docker compose down ; docker compose up -d`**. This will regenerate configuration files based on the new settings in the **`.env`** file and restart the services.
Method Two: Modify Multiple Configuration Files Separately
For partial updates, follow these steps:
1. Modify `.env` file: Update related configuration items in the **`.env`** file.
2. Manually update configuration files: According to the modifications in the **`.env`** file, update the corresponding configuration items in the **`openim-server/config/config.yaml`** and **`openim-chat/config/config.yaml`** files.
3. Additional handling for special variables: If **`OPENIM_IP`**, **`API_OPENIM_PORT`**, **`MINIO_PORT`**, **`GRAFANA_PORT`** are modified, update the following configuration items in the **`openim-server/config/config.yaml`**:
```yaml
object:
apiURL: "http://$OPENIM_IP:$API_OPENIM_PORT"
minio:
endpoint: "http://$DOCKER_BRIDGE_GATEWAY:$MINIO_PORT"
signEndpoint: "http://$OPENIM_IP:$MINIO_PORT"
grafanaUrl: http://$OPENIM_IP:$GRAFANA_PORT
```
4. Restart services: Execute **`docker compose down ; docker compose up -d`** to apply changes and restart services.
### 5.3 Modifying Other Configuration Items
For non-shared variables in **`.env`**, **`openim-chat/config/config.yaml`**, and **`openim-server/config/config.yaml`**, modify these configuration items directly in the respective files. Execute **`docker compose down ; docker compose up -d`** to apply changes and restart services.
## **6. Frequently Asked Questions**
### 1. About Docker Version
Newer versions of Docker have integrated docker-compose. Older versions of Docker may not support the gateway feature. We recommend upgrading to a newer version, such as `23.0.1`.
## 7. About OpenIM
Thanks to extensive developer support, OpenIM maintains a leading position in the open-source instant messaging (IM) field, with its GitHub stars surpassing 12,000. In the current context of increasing emphasis on data and privacy security, there is growing demand for IM private deployment, aligning with the rapid development trend of China's software industry. Especially in government and enterprise sectors, with the rapid development of information technology and widespread application of innovative industries, the demand for IM solutions has surged. Furthermore, the continuous expansion of the collaborative office software market has made "security and controllability" a key attribute.
Repository address: https://github.com/openimsdk


OpenIM Open Source Instant Messaging Project Docker Compose Deployment Guide的更多相关文章
- .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行
本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...
- Docker Compose 引用环境变量
在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- Docker三剑客之Docker Compose
一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...
- 基于Docker Compose的.NET Core微服务持续发布
是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...
- Docker Compose to CoreOS
taken from https://docs.docker.com/compose/install/ the only thing is that /usr is read only, but /o ...
- Docker Compose容器编排
Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...
- Docker(四):Docker 三剑客之 Docker Compose
前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...
- Docker入门(三)使用Docker Compose
Compose介绍 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 ...
- Docker Compose 之进阶篇
笔者在前文<Docker Compose 简介>和<Dcoker Compose 原理>两篇文章中分别介绍了 docker compose 的基本概念以及实现原理.本文我们将继 ...
随机推荐
- 治理效率提升77%!揭秘基于DataLeap实时健康分的最佳实践
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景 某企业实时数仓团队通过数据收集.整合.计算和存储构建实时数据仓库,为企业提供快速.准确.可靠的实时数据分析和 ...
- 陕西旅游集团旗下景区春节期间累计接待超 200 万人次,这背后也有火山引擎 VeDI 的身影
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 春节期间累计接待游客 200.42 万人次,同比 2022 年增长 102.47%,同比 2019 年增长 19.27%, ...
- Solon Aop 特色开发(5)切面与环绕拦截
Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...
- AIGC
博客目录 本地部署modelscope-agent python 使用 Google Gemini API MetaGPT MetaGPT day01: MetaGPT作者代码走读.软件公司初始示例
- ORM执行SQL 双下划线查询 ORM外键字段创建 外键字段相关操作 ORM跨表查询 跨表查询进阶操作
目录 ORM执行SQL语句 方式1:使用pymysql模块 方式2:使用raw方法 方式3:django connection 双下划线查询 __gt(>) __lt(<) queryse ...
- linux tar解压命令总结
把常用的tar解压命令总结下,当作备忘: -c:建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可 ...
- P5730
这道题莫名其妙的在本地能过可是洛谷上却0分,把WA的点下载下来之后发现我输出的和他要输出的明明一模一样,说明洛谷的评测有一些问题.我把getchar输入换成cin输入后就AC了,说明洛谷对getcha ...
- 【MicroPython】生成Q(string)符号表文件 - py\makeqstrdefs.py
脚本使用格式 python py/makeqstrdefs.py [command] [mode] [input-file] [output-directory] [output-file] comm ...
- android应用申请加入电池优化白名单
首先,在 AndroidManifest.xml 文件中配置一下权限: 1 <uses-permission android:name="android.permission.REQU ...
- [转帖]SkyWalking告警使用
SkyWalking告警 SkyWalking提供了强大的监控告警功能,在监控到应用出现问题的时候,会调用webhook或者gRPC hook或者Wechat DingDing等工具报告警告信息 而且 ...