内网部署
📌 内网部署指南
内网部署主流程:在联网构建机执行 mage export 导出部署包,再拷贝到内网目标机运行。
一、版本与分支策略
main:开发版分支,仅用于跟进未发布变更。vX.Y.Z...:稳定版发布版本。- 内网生产环境建议统一使用 GitHub Releases 页面绿色 Latest 对应 的最新正式发布版。
二、总体流程
- 在联网构建机拉取 OpenIMServer / ChatServer 稳定版代码。
- 在联网构建机执行
mage export,生成可直接带走的部署归档。 - 将部署归档、配置文件、外部组件安装包拷贝到内网目标机。
- 在内网目标机解压部署归档,直接使用归档内自带的
./mage启动和检查服务。
三、外部组件准备方式
OpenIMServer / ChatServer 的内网部署包只负责业务服务本身。外部组件(MongoDB、Redis、Kafka、Etcd、MinIO)有两种准备方式。
方案 A:目标机使用 Docker
如果目标机尚未安装 Docker,建议在联网机器提前下载与目标机发行版、架构匹配的 Docker 离线安装包,再拷贝到内网目标机安装。
- Debian / Ubuntu:准备
docker-ce、docker-ce-cli、containerd.io、docker-buildx-plugin、docker-compose-plugin对应的.deb包 - RHEL / CentOS:准备上述组件对应的
.rpm包
安装完成后,再通过 docker load 导入你提前保存好的外部组件镜像。
方案 B:目标机不使用 Docker
可以直接将 MongoDB、Redis、Kafka、Etcd、MinIO 的官方二进制包或内部制品包拷贝到内网目标机,按各组件自己的 systemd / supervisor / 脚本方式启动。
这种模式下,OpenIMServer / ChatServer 只需要正确指向这些组件的地址与账号信息,不要求目标机安装 Docker。
四、联网构建机导出 OpenIMServer
git clone https://github.com/openimsdk/open-im-server && cd open-im-server
git fetch --tags
LATEST_STABLE_TAG=$(basename "$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/openimsdk/open-im-server/releases/latest)")
git checkout "$LATEST_STABLE_TAG"
bash bootstrap.sh
PLATFORMS="linux_amd64" mage export
执行成功后,部署归档默认生成在:
_output/export/
典型文件名示例:
exported_open-im-server_v3.8.3-patch.12_linux_amd64.tar.gz
五、联网构建机导出 ChatServer
git clone https://github.com/openimsdk/chat && cd chat
git fetch --tags
LATEST_STABLE_TAG=$(basename "$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/openimsdk/chat/releases/latest)")
git checkout "$LATEST_STABLE_TAG"
bash bootstrap.sh
PLATFORMS="linux_amd64" mage export
典型文件名示例:
exported_chat_v1.8.4-patch.3_linux_amd64.tar.gz
六、部署包内容说明
mage export 生成的归档会包含:
- 已编译好的业务二进制
start-config.yml- 运行所需配置文件
- 可直接在目标机执行的
mage启动器
因此,内网目标机不需要再安装 Go,也不需要重新编译源码。
七、拷贝到内网目标机
将以下内容拷贝到内网目标机:
- OpenIMServer 导出归档
- ChatServer 导出归档
- 外部组件镜像包或二进制安装包
- 你的实际配置文件(如域名、外部组件地址、
secret、MinIOexternalAddress)
八、在内网目标机部署外部组件
1. Docker 方式
如果目标机使用 Docker:
docker load -i image-name.tar
导入完所有外部组件镜像后,再按你的组件编排文件启动。
2. 非 Docker 方式
如果目标机不用 Docker:
- 启动 MongoDB
- 启动 Redis
- 启动 Kafka
- 启动 Etcd
- 启动 MinIO
然后把这些组件的地址、账号、密码写入 OpenIMServer / ChatServer 的配置文件。
九、在内网目标机解压并启动 OpenIMServer
mkdir -p /opt/openim/open-im-server
tar -xzf exported_open-im-server_v*.tar.gz -C /opt/openim/open-im-server
cd /opt/openim/open-im-server
修改配置文件中的外部组件地址、secret、MinIO externalAddress 后,执行:
./mage check
./mage start
./mage check
十、在内网目标机解压并启动 ChatServer
mkdir -p /opt/openim/chat
tar -xzf exported_chat_v*.tar.gz -C /opt/openim/chat
cd /opt/openim/chat
修改 ChatServer 配置文件中的 Redis、MongoDB、Etcd、OpenIMServer secret 后,执行:
./mage check
./mage start
./mage check
十一、运行时常用命令
OpenIMServer:
cd /opt/openim/open-im-server
./mage check
./mage stop
./mage start
ChatServer:
cd /opt/openim/chat
./mage check
./mage stop
./mage start
十二、内网部署注意事项
main是开发版,不要拿main做内网生产包。mage export的目标机侧运行依赖已经随归档带出,因此不要再在目标机重新执行源码编译流程。- 如果目标机与构建机架构不同,请在联网构建机通过
PLATFORMS指定目标平台,例如PLATFORMS="linux_amd64" mage export或PLATFORMS="linux_arm64" mage export。 - 外部组件无论使用 Docker 还是二进制拷贝方式,都需要先保证地址和鉴权信息与 OpenIMServer / ChatServer 配置一致。