#!/bin/bash
# ============================================
# Vexplor 온프레미스 서버 초기 설정 스크립트
# 스피폭스 공장 서버용
# ============================================
# 사용법: sudo bash server-setup.sh

set -e

# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo ""
echo "=========================================="
echo "  Vexplor 서버 초기 설정"
echo "=========================================="
echo ""

# root 권한 확인
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}이 스크립트는 root 권한이 필요합니다.${NC}"
    echo "다음 명령어로 실행하세요: sudo bash server-setup.sh"
    exit 1
fi

# ============================================
# 1. Docker 설치
# ============================================
echo -e "${YELLOW}[1/5] Docker 설치 중...${NC}"

# 기존 Docker 제거
apt-get remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true

# 필수 패키지 설치
apt-get update
apt-get install -y ca-certificates curl gnupg

# Docker GPG 키 추가
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

# Docker 저장소 추가
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 설치
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

echo -e "${GREEN}Docker 설치 완료!${NC}"
docker --version
docker compose version

# ============================================
# 2. 사용자를 docker 그룹에 추가
# ============================================
echo ""
echo -e "${YELLOW}[2/5] 사용자 권한 설정...${NC}"

# wace 사용자를 docker 그룹에 추가
usermod -aG docker wace

echo -e "${GREEN}wace 사용자를 docker 그룹에 추가했습니다.${NC}"

# ============================================
# 3. Vexplor 디렉토리 생성
# ============================================
echo ""
echo -e "${YELLOW}[3/5] Vexplor 디렉토리 생성...${NC}"

mkdir -p /opt/vexplor
chown wace:wace /opt/vexplor

echo -e "${GREEN}/opt/vexplor 디렉토리 생성 완료!${NC}"

# ============================================
# 4. Docker 서비스 시작 및 자동 시작 설정
# ============================================
echo ""
echo -e "${YELLOW}[4/5] Docker 서비스 설정...${NC}"

systemctl start docker
systemctl enable docker

echo -e "${GREEN}Docker 서비스 활성화 완료!${NC}"

# ============================================
# 5. 방화벽 설정 (필요시)
# ============================================
echo ""
echo -e "${YELLOW}[5/5] 방화벽 설정 확인...${NC}"

if command -v ufw &> /dev/null; then
    ufw status
    echo ""
    echo "필요시 다음 포트를 개방하세요:"
    echo "  sudo ufw allow 80/tcp   # 웹 서비스"
    echo "  sudo ufw allow 3001/tcp # 백엔드 API"
else
    echo "ufw가 설치되어 있지 않습니다. (방화벽 설정 스킵)"
fi

# ============================================
# 완료
# ============================================
echo ""
echo "=========================================="
echo -e "${GREEN}  서버 초기 설정 완료!${NC}"
echo "=========================================="
echo ""
echo "다음 단계:"
echo "  1. 로그아웃 후 다시 로그인 (docker 그룹 적용)"
echo "     exit"
echo "     ssh -p 22 wace@112.168.212.142"
echo ""
echo "  2. Docker 동작 확인"
echo "     docker ps"
echo ""
echo "  3. Vexplor 배포 진행"
echo "     cd /opt/vexplor"
echo "     # docker-compose.yml 및 .env 파일 복사 후"
echo "     docker compose up -d"
echo ""

