160 lines
4.5 KiB
Bash
Executable File
160 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
#====================================================================
|
|
# Qwen3.5 + Open WebUI (Ollama) 원클릭 셋업
|
|
# 환경: Mac / Docker Desktop / Homebrew
|
|
#====================================================================
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
BASE_MODEL="qwen3.5:35b"
|
|
CUSTOM_MODEL="qwen3.5-custom"
|
|
WEBUI_PORT=3000
|
|
MAX_TOKENS=8192
|
|
CONTEXT_LENGTH=8192
|
|
TEMPERATURE=0.7
|
|
TOP_P=0.9
|
|
|
|
echo "============================================"
|
|
echo " Qwen3.5 + Open WebUI (Ollama) 셋업"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
#--------------------------------------------------------------------
|
|
# 1. 사전 요구사항 확인
|
|
#--------------------------------------------------------------------
|
|
echo "[1/6] 사전 요구사항 확인..."
|
|
|
|
if ! command -v brew &>/dev/null; then
|
|
echo "❌ Homebrew가 설치되어 있지 않습니다."
|
|
echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
|
|
exit 1
|
|
fi
|
|
echo " ✓ Homebrew"
|
|
|
|
if ! command -v docker &>/dev/null; then
|
|
echo "❌ Docker가 설치되어 있지 않습니다."
|
|
exit 1
|
|
fi
|
|
if ! docker info &>/dev/null; then
|
|
echo "❌ Docker Desktop이 실행 중이 아닙니다."
|
|
exit 1
|
|
fi
|
|
echo " ✓ Docker"
|
|
|
|
echo ""
|
|
|
|
#--------------------------------------------------------------------
|
|
# 2. Ollama 설치 및 시작
|
|
#--------------------------------------------------------------------
|
|
echo "[2/6] Ollama 설치..."
|
|
|
|
if ! command -v ollama &>/dev/null; then
|
|
brew install ollama
|
|
echo " ✓ Ollama 설치 완료"
|
|
else
|
|
echo " ✓ Ollama 이미 설치됨"
|
|
fi
|
|
|
|
if ! brew services list | grep ollama | grep -q started; then
|
|
brew services start ollama
|
|
echo " Ollama 시작 대기 중..."
|
|
for i in $(seq 1 15); do
|
|
if curl -s http://localhost:11434/ > /dev/null 2>&1; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
echo " ✓ Ollama 서비스 시작"
|
|
else
|
|
echo " ✓ Ollama 서비스 실행 중"
|
|
fi
|
|
|
|
echo ""
|
|
|
|
#--------------------------------------------------------------------
|
|
# 3. 모델 다운로드
|
|
#--------------------------------------------------------------------
|
|
echo "[3/6] 모델 다운로드 ($BASE_MODEL)..."
|
|
echo " (네트워크 속도에 따라 시간이 걸릴 수 있습니다)"
|
|
|
|
ollama pull "$BASE_MODEL"
|
|
echo " ✓ 모델 다운로드 완료"
|
|
|
|
echo ""
|
|
|
|
#--------------------------------------------------------------------
|
|
# 4. 커스텀 모델 생성 (파라미터 설정)
|
|
#--------------------------------------------------------------------
|
|
echo "[4/6] 파라미터 설정..."
|
|
|
|
MODELFILE="$PROJECT_DIR/Modelfile"
|
|
cat > "$MODELFILE" << EOF
|
|
FROM $BASE_MODEL
|
|
|
|
PARAMETER num_ctx $CONTEXT_LENGTH
|
|
PARAMETER num_predict $MAX_TOKENS
|
|
PARAMETER temperature $TEMPERATURE
|
|
PARAMETER top_p $TOP_P
|
|
EOF
|
|
|
|
ollama create "$CUSTOM_MODEL" -f "$MODELFILE" 2>&1 | grep -v "^$"
|
|
|
|
echo " ✓ 커스텀 모델 생성: $CUSTOM_MODEL"
|
|
echo " 입력 컨텍스트: $CONTEXT_LENGTH 토큰"
|
|
echo " 출력 토큰: $MAX_TOKENS"
|
|
echo " temperature: $TEMPERATURE"
|
|
echo " top_p: $TOP_P"
|
|
|
|
echo ""
|
|
|
|
#--------------------------------------------------------------------
|
|
# 5. Docker Compose 설정 및 실행
|
|
#--------------------------------------------------------------------
|
|
echo "[5/6] Open WebUI 실행..."
|
|
|
|
if [ ! -f "$PROJECT_DIR/docker-compose.yml" ]; then
|
|
cat > "$PROJECT_DIR/docker-compose.yml" << EOF
|
|
services:
|
|
open-webui:
|
|
image: ghcr.io/open-webui/open-webui:main
|
|
container_name: open-webui
|
|
ports:
|
|
- "${WEBUI_PORT}:8080"
|
|
environment:
|
|
- OLLAMA_BASE_URL=http://host.docker.internal:11434
|
|
volumes:
|
|
- open-webui-data:/app/backend/data
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
open-webui-data:
|
|
EOF
|
|
echo " ✓ docker-compose.yml 생성"
|
|
fi
|
|
|
|
cd "$PROJECT_DIR"
|
|
docker compose up -d 2>&1 | grep -v "^$"
|
|
echo " ✓ Open WebUI 실행 중"
|
|
|
|
echo ""
|
|
|
|
#--------------------------------------------------------------------
|
|
# 6. 완료
|
|
#--------------------------------------------------------------------
|
|
echo "[6/6] 셋업 완료!"
|
|
echo ""
|
|
echo "============================================"
|
|
echo " 브라우저에서 http://localhost:${WEBUI_PORT} 접속"
|
|
echo " (첫 접속 시 회원가입 → 첫 계정이 admin)"
|
|
echo ""
|
|
echo " 모델 선택: $CUSTOM_MODEL"
|
|
echo " (파라미터가 적용된 커스텀 모델)"
|
|
echo " 또는: $BASE_MODEL"
|
|
echo " (기본 설정 모델)"
|
|
echo ""
|
|
echo " 종료: ./stop-ollama.sh"
|
|
echo "============================================"
|