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.

![Download App](https://www.pgyer.com/app/qrcode/OpenIM-Flutter)

*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的更多相关文章

  1. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  2. Docker Compose 引用环境变量

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...

  3. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  4. Docker三剑客之Docker Compose

    一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...

  5. 基于Docker Compose的.NET Core微服务持续发布

    是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...

  6. Docker Compose to CoreOS

    taken from https://docs.docker.com/compose/install/ the only thing is that /usr is read only, but /o ...

  7. Docker Compose容器编排

    Compose是Docker官方的开源项目,可以实现对Docker容器集群的快速编排.Compose 中有两个重要的概念:服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实 ...

  8. Docker(四):Docker 三剑客之 Docker Compose

    前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...

  9. Docker入门(三)使用Docker Compose

    Compose介绍   Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 ...

  10. Docker Compose 之进阶篇

    笔者在前文<Docker Compose 简介>和<Dcoker Compose 原理>两篇文章中分别介绍了 docker compose 的基本概念以及实现原理.本文我们将继 ...

随机推荐

  1. CS01 BOM客制化屏幕增强

    一.BOM行项目新增定制字段 效果如下 二.前台增强实现步骤 1.行项目表新增字段 2.CMOD,增强项目PCSD0002:在行项目中增强(PCSD0003:在抬头增强) 3.双击创建定制化屏幕 4. ...

  2. 销售订单BAPI增强

    一.需求背景 在销售订单批导时,需要调用BAPI:BAPI_SALESORDER_CREATEFROMDAT2维护成本中心字段, 二.增强实现 BAPI中没有该字段,需要通过增强的方式导入.通过BAP ...

  3. WPF 组织机构摄像机树 全量加载 大数据量 分页加载摄像机节点

    WPF 组织机构摄像机树 全量加载 大数据量 分页加载摄像机节点 完整代码: https://gitee.com/s0611163/WpfTreeDemo 性能: 8000组织机构20万摄像机,全量加 ...

  4. Windows 端使用 C++ 服务操作类

    #pragma once #include <windows.h> #include <string> // #include <iostream> class S ...

  5. 安装vue脚手架@vue/cli 4.5.13(稳定版)

    若 NPM 下载过慢,请参考本处改换镜像源:Here 首先新建一个 vue 测试项目,还记得以前自己是用 vue-cli 2.0的版本 去构建的,毕竟里面有默认配置好的webpack配置,但现在很多小 ...

  6. 小微信小程序开发相关网站

    微信公众平台 https://mp.weixin.qq.com/ 开发者官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/

  7. idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql

    本文为博主原创,未经允许不得转载: mybatis plus 使用过程中已经很大程度提升了我们开发的效率,因为它内部已经对单表的操作进行了完美的封装,但是关联表操作时, 这时就需要自己定义sql,自定 ...

  8. js - 元素 scrollTop 设置无效的原因 及 解决办法

    原因 :  元素 display : flex ; 解决方法 : display : block;

  9. 面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?

    写在开头 面试官:"小伙子,用过final关键字吗?" 我:"必须用过呀" 面试官:"好,那来说一说你对这个关键字的理解吧,再说一说它与finally ...

  10. 单元测试中如何Mock HttpContext

    最近团队有小伙伴问在单元测试中如何Mock HttpContext. 这是一个好问题,整理了一个实现方案分享给大家. 在C#中,尤其是在单元测试场景下,模拟(Mocking)HttpContext 是 ...