Files
tongxunruanjian/scripts/deploy.sh
T
KIMI 33fa2339e2 OpenIM + LiveKit 内网测试环境一键部署包
- docker-compose: openim-server v3.8.3-patch.12 + mongo/redis/etcd/kafka/minio + livekit v1.13.5
- 按约束移除 openim-chat(GPLv3) 及依赖它的 web/admin 前端; 监控组件收进 profile m
- scripts/deploy.sh 一键部署, scripts/selftest.sh 自测(注册/登录/文字/语音/文件/一对一通话), scripts/restart.sh 重启
- README: 部署记录(服务器要求/端口表/运维/接入参数)
2026-08-08 22:07:55 +08:00

53 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# OpenIM + LiveKit 内网测试环境一键部署
# 用法: ./scripts/deploy.sh [服务器内网IP] (不传则自动探测)
set -euo pipefail
cd "$(dirname "$0")/.."
# 1. 首次运行从模板生成 .env
if [ ! -f .env ]; then
cp .env.example .env
echo "已从 .env.example 生成 .env"
fi
# 2. 确定服务器内网 IP
IP="${1:-}"
if [ -z "$IP" ]; then
IP=$(hostname -I 2>/dev/null | awk '{print $1}')
fi
if [ -z "$IP" ]; then
echo "无法自动获取内网 IP,请手动传入: ./scripts/deploy.sh <服务器IP>"
exit 1
fi
echo "使用服务器 IP: $IP"
# 3. 把 IP 写进 .env(MinIO 外链地址必须是客户端能访问的地址)
sed -i "s|^SERVER_IP=.*|SERVER_IP=${IP}|" .env
sed -i "s|^MINIO_EXTERNAL_ADDRESS=.*|MINIO_EXTERNAL_ADDRESS=\"http://${IP}:10005\"|" .env
sed -i "s|^GRAFANA_URL=.*|GRAFANA_URL=\"http://${IP}:13000/\"|" .env
# 4. 预创建挂载目录(避免 docker 把文件路径自动建成目录)
mkdir -p components/redis/config components/mnt/data components/mongodb components/etcd components/kafka
touch components/redis/config/redis.conf
# 5. 拉镜像并启动
docker compose pull
docker compose up -d
# 6. 等待 openim-server 健康(首次启动约 30-60 秒)
echo "等待 openim-server 就绪(最长约 2 分钟)..."
status="unknown"
for _ in $(seq 1 24); do
status=$(docker inspect -f '{{.State.Health.Status}}' openim-server 2>/dev/null || echo "unknown")
[ "$status" = "healthy" ] && break
sleep 5
done
docker compose ps
echo
if [ "$status" = "healthy" ]; then
echo "部署完成。下一步运行自测: ./scripts/selftest.sh ${IP}"
else
echo "openim-server 尚未 healthy(当前: ${status})。可执行 docker compose logs -f openim-server 查看日志。"
fi