#!/usr/bin/env bash
set -e

echo "===== OpenIM Server 一键部署 ====="

# 1. 安装 Docker（如果没有）
if ! command -v docker &>/dev/null; then
    echo ">>> 安装 Docker..."
    curl -fsSL https://get.docker.com | bash
fi

# 2. 安装 Docker Compose（如果没有）
if ! docker compose version &>/dev/null; then
    echo ">>> 安装 Docker Compose..."
    apt-get update && apt-get install -y docker-compose-plugin
fi

# 3. 克隆 OpenIM Server
if [ ! -d "open-im-server" ]; then
    echo ">>> 克隆 OpenIM Server..."
    git clone https://github.com/openimsdk/open-im-server.git
fi

cd open-im-server

# 4. 启动基础设施（MongoDB、Redis、etcd、Kafka、MinIO）
echo ">>> 启动基础设施..."
docker compose up -d mongodb redis etcd kafka minio

# 5. 拉取预构建的 OpenIM Server 镜像
echo ">>> 拉取 OpenIM Server 镜像..."
docker pull ghcr.io/openimsdk/open-im-server:release-v3.8.3

# 6. 启动 OpenIM Server
echo ">>> 启动 OpenIM Server..."
docker rm -f openim-server 2>/dev/null || true
docker run -d --name openim-server \
    --network open-im-server_openim \
    -p 10001:10001 \
    -p 10002:10002 \
    -p 10008:10008 \
    -v $(pwd)/config:/openim-server/config \
    ghcr.io/openimsdk/open-im-server:release-v3.8.3

echo ""
echo "===== 部署完成！等待服务启动... ====="
sleep 10

# 7. 验证
echo ""
echo ">>> 验证 API (10002)..."
curl -s -o /dev/null -w "HTTP %{http_code}" http://localhost:10002/ || echo "API 还未就绪"
echo ""

echo ""
echo "===== OpenIM Server 已启动 ====="
echo "API:      http://$(curl -s ifconfig.me):10002"
echo "Auth:     http://$(curl -s ifconfig.me):10008"
echo "WebSocket: ws://$(curl -s ifconfig.me):10001"
echo "MinIO:    http://$(curl -s ifconfig.me):10005 (root/openIM123)"
echo ""
