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 的基本概念以及实现原理.本文我们将继 ...
随机推荐
- 字节跳动基于ClickHouse优化实践之Upsert
更多技术交流.求职机会.试用福利,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的ClickHouse有一定的了解,它强大的数据分析性能让人印象深刻.但在字节大量生 ...
- PPT 难吗
多看 http://www.zcool.com.cn/ http://www.huaban.com
- Jenkins Pipeline 流水线 - withCredentials 使用
添加凭证 Pipeline script pipeline { agent any stages { stage('withCredentials 使用凭证') { steps { withCrede ...
- Spring的@Async使用防坑
很多人会直接只用@Async来执行异步操作.但是这里面有一个问题,如果都是用spring的默认实现,是有坑的. 当我们开启 EnableAsync 只有就使用Async来执行异步操作了. 走JDK的动 ...
- normalize.css——移动端css初始化推荐
保护了有价值的默认值 修复了浏览器bug 是模块化的 拥有详细的文档 https://www.jianshu.com/p/9d7ff89757fd
- lucene.net全文检索(二)lucene.net 的封装
查询 public class LuceneQuery : ILuceneQuery { #region Identity private Logger logger = new Logger(typ ...
- node pressure and pod eviction
0. overview There are too many guides about node pressure and pod eviction, most of them are specifi ...
- keystore 与 trust store 的区别 及 keytool 常用命令
本文为博主原创,未经允许不得转载: 1. key store 与 trust store 区别 2. java 配置 单向认证与双向认证的过程 3. key store 与 trust store 常 ...
- FileZilla 连接不上宝塔
1,修改 pureftp的配置文件 ForcePassiveIP 为服务器的ip , 并去掉 # 2,FileZilla 使用明文连接
- [转帖]L4LB for Kubernetes: Theory and Practice with Cilium+BGP+ECMP
http://arthurchiao.art/blog/k8s-l4lb/ Published at 2020-04-10 | Last Update 2020-08-22 1. Problem De ...