openwebui/setup-ollama.sh
MyeonghoeLee 5f5435cec7 셸 스크립트 안정성 개선 (실행 흐름 변경 없음)
- stop.sh/stop-mlx.sh: kill -9 → SIGTERM 후 2초 대기, 미종료 시 SIGKILL fallback
- stop-mlx.sh/stop-ollama.sh: docker ps에 2>/dev/null 추가 (Docker 미실행 시 에러 억제)
- stop-ollama.sh: brew 명령어 존재 여부 체크 추가
- setup.sh: VRAM_MB 빈 값 방어 코드 추가 (set -e 크래시 방지)
- setup-ollama.sh: sleep 3 → 최대 15초 readiness 체크 루프로 교체

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 11:17:09 +09:00

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 "============================================"