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 的基本概念以及实现原理.本文我们将继 ...
随机推荐
- 火山引擎DataLeap数据质量解决方案和最佳实践(二):解决方案
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap流批数据质量解决方案 产品功能架构 火山引擎DataLeap流批数据质量解决方案有 4 个大的功能 ...
- 一文了解 DataLeap 中的 Notebook
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 概述 Notebook 是一种支持 REPL 模式的开发环境.所谓「REPL」,即「读取-求值-输出」循环:输入一 ...
- 火山引擎智能外呼联合火山引擎VeDI升级服务,让企业精准营销不再难
企业营销模式正在经历一场巨变.数字化营销早已替代传统的营销方式,成为企业营销的主流方式和发展战略中不可或缺的部分.然而随着数字化营销的普及,市场迈入存量竞争时代,获客成本也逐年攀升.面对营销过程中不断 ...
- 火山引擎 DataTester:5 个优化思路,构建高性能 A/B 实验平台
导读:DataTester 是由火山引擎推出的 A/B 测试平台,覆盖推荐.广告.搜索.UI.产品功能等业务应用场景,提供从 A/B 实验设计.实验创建.指标计算.统计分析到最终评估上线等贯穿整个 A ...
- PPT 放映电脑Office版本低怎么办
转换成全图形PPT 转成图片,无法放动画 转换成全视频 转成视频,无法控制节奏 PPT VIEWEB 本地PPT播放工具
- CodeForces -337A:Puzzles(水)
The end of the school year is near and Ms. Manana, the teacher, will soon have to say goodbye to a y ...
- 这才是你应该了解的Redis数据结构!
深入了解Redis数据结构 Redis,作为一种高性能的内存数据库,支持多种数据结构,从简单的字符串到复杂的哈希表.在这篇博文中,我们将深入探讨Redis的一些主要数据结构,并通过详细的例子展示它们的 ...
- 全流程机器视觉工程开发(二)PaddleDetection:拉框,然后开始训练模型
前言 我现在在准备做一个全流程的机器视觉的工程,之前做了很多理论相关的工作.大概理解了机器视觉的原理,然后大概了解了一下,我发现现在的库其实已经很发展了,完全不需要用到非常多的理论,只需要知道开发过程 ...
- sql语句内变量的使用
0.原始表格如下: 1.定义变量,并在sql语句内查询: set @user_name = "成龙";SELECT * FROM `tb_user` where userName ...
- Gradle 出现 Could not resolve gradle
Gradle 在进行 sync 的时候会出现 Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could n ...