| #!/bin/bash |
| set -e |
|
|
| MODELS_DIR="/data/models" |
| LLAMA_PORT=8080 |
|
|
| mkdir -p "$MODELS_DIR" |
| mkdir -p /data/webui |
|
|
| |
| rm -f /tmp/launch_signal /tmp/selected_model /tmp/selected_mmproj |
|
|
| |
| |
| |
| |
| echo ">>> تشغيل واجهة إعداد النموذج على المنفذ 7860..." |
| python3 /app/model_setup.py |
|
|
| |
| |
| |
| |
| MODEL_FILE=$(cat /tmp/selected_model 2>/dev/null || echo "") |
| MMPROJ_FILE=$(cat /tmp/selected_mmproj 2>/dev/null || echo "") |
|
|
| if [ -z "$MODEL_FILE" ] || [ ! -f "$MODELS_DIR/$MODEL_FILE" ]; then |
| echo "!!! لم يتم تحديد نموذج صالح، إعادة التشغيل..." |
| exec bash /app/run.sh |
| fi |
|
|
| echo ">>> النموذج المختار: $MODEL_FILE" |
|
|
| |
| LLAMA_CMD=( |
| python3 -m llama_cpp.server |
| --model "$MODELS_DIR/$MODEL_FILE" |
| --host 0.0.0.0 |
| --port $LLAMA_PORT |
| --n_ctx 8192 |
| --n_threads 2 |
| --n_gpu_layers 0 |
| --chat_format gemma |
| --flash_attn true |
| --use_mmap true |
| --use_mlock false |
| --verbose false |
| ) |
|
|
| |
| if [ -n "$MMPROJ_FILE" ] && [ -f "$MODELS_DIR/$MMPROJ_FILE" ]; then |
| echo ">>> تفعيل دعم الرؤية (mmproj): $MMPROJ_FILE" |
| LLAMA_CMD+=(--clip_model_path "$MODELS_DIR/$MMPROJ_FILE") |
| fi |
|
|
| echo ">>> تشغيل خادم llama.cpp على المنفذ $LLAMA_PORT..." |
| "${LLAMA_CMD[@]}" & |
| LLAMA_PID=$! |
|
|
| |
| |
| |
| echo ">>> انتظار جهوزية خادم llama.cpp..." |
| MAX_WAIT=120 |
| WAITED=0 |
| until curl -sf "http://localhost:$LLAMA_PORT/health" > /dev/null 2>&1; do |
| if [ $WAITED -ge $MAX_WAIT ]; then |
| echo "!!! فشل تشغيل llama.cpp بعد ${MAX_WAIT} ثانية" |
| exit 1 |
| fi |
| |
| if ! kill -0 $LLAMA_PID 2>/dev/null; then |
| echo "!!! توقف خادم llama.cpp بشكل غير متوقع" |
| exit 1 |
| fi |
| sleep 2 |
| WAITED=$((WAITED + 2)) |
| done |
| echo ">>> llama.cpp جاهز (استغرق ${WAITED} ثانية)" |
|
|
| |
| |
| |
| export OPENAI_API_BASE_URL="http://localhost:$LLAMA_PORT/v1" |
| export OPENAI_API_KEY="sk-llama-cpp-local" |
| export ENABLE_OLLAMA_API=false |
| export ENABLE_OPENAI_API=true |
| export DATA_DIR=/data/webui |
| export PORT=7860 |
| export HOST=0.0.0.0 |
|
|
| echo ">>> تشغيل Open WebUI على المنفذ 7860..." |
| cd /app/backend |
| exec bash start.sh |