gijl commited on
Commit
d33c39a
·
verified ·
1 Parent(s): 6fe9e69

Upload 2 files

Browse files
Files changed (2) hide show
  1. Dockerfile +28 -0
  2. run.sh +63 -0
Dockerfile ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # استخدام الصورة الرسمية التي تدمج Open WebUI مع Ollama
2
+ FROM ghcr.io/open-webui/open-webui:ollama
3
+
4
+ # إعداد متغيرات البيئة لتوجيه كل البيانات إلى المخزن (Persistent Volume)
5
+ # نفترض هنا أن المخزن الخاص بك مربوط على المسار /data (وهو الافتراضي في HF Spaces)
6
+ ENV OLLAMA_MODELS=/data/ollama
7
+ ENV DATA_DIR=/data/webui
8
+ ENV PORT=7860
9
+ ENV HOST=0.0.0.0
10
+
11
+ # تسريع استجابة الواجهة: تعطيل الفحوصات غير الضرورية وتخطي التحقق من الجلسة
12
+ ENV ENABLE_COMMUNITY_SHARING=false
13
+ ENV ENABLE_TELEMETRY=false
14
+ ENV ENABLE_LOGIN_FORM=false
15
+ ENV WEBUI_AUTH=false
16
+ ENV BYPASS_MODEL_ACCESS_CONTROL=true
17
+
18
+ # تثبيت أداة Hugging Face لتحميل النماذج
19
+ RUN pip install -U huggingface_hub
20
+
21
+ # نسخ سكريبت التشغيل الذي أنشأناه
22
+ COPY run.sh /app/run.sh
23
+
24
+ # إعطاء صلاحيات التشغيل للسكريبت
25
+ RUN chmod +x /app/run.sh
26
+
27
+ # تعيين السكريبت كنقطة انطلاق (Entrypoint)
28
+ CMD ["/app/run.sh"]
run.sh ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # تحديد مسارات المخزن الدائم (في مساحات HF عادة يكون /data)
4
+ MODELS_DIR="/data/models"
5
+ MODEL_FILE="gemma-4-E2B-it-UD-Q5_K_XL.gguf"
6
+ OLLAMA_MODEL_NAME="my-gemma"
7
+
8
+ # إنشاء المجلدات المطلوبة في المخزن إن لم تكن موجودة
9
+ mkdir -p $MODELS_DIR
10
+ mkdir -p /data/ollama
11
+ mkdir -p /data/webui
12
+
13
+ # تشغيل خادم Ollama في الخلفية
14
+ echo "Starting Ollama server..."
15
+ OLLAMA_MODELS=/data/ollama ollama serve &
16
+
17
+ # الانتظار حتى يصبح Ollama جاهزاً بدلاً من الانتظار مدة ثابتة
18
+ echo "Waiting for Ollama to be ready..."
19
+ until ollama list > /dev/null 2>&1; do
20
+ sleep 2
21
+ done
22
+ echo "Ollama is ready."
23
+
24
+ # التحقق من وجود النموذج في المخزن؛ إذا لم يكن موجوداً، قم بتنزيله
25
+ if [ ! -f "$MODELS_DIR/$MODEL_FILE" ]; then
26
+ echo "Model not found in storage. Downloading..."
27
+ # نستخدم local-dir-use-symlinks False لضمان تحميل الملف الفعلي وليس اختصاراً (symlink)
28
+ huggingface-cli download gijl/gemma-4-E2B-it-GGUF $MODEL_FILE \
29
+ --local-dir $MODELS_DIR \
30
+ --local-dir-use-symlinks False
31
+
32
+ # تنزيل ملف الرؤية (mmproj) إن كنت تحتاجه (انظر الملاحظة أسفل حول توافقه)
33
+ huggingface-cli download gijl/gemma-4-E2B-it-GGUF mmproj-BF16.gguf \
34
+ --local-dir $MODELS_DIR \
35
+ --local-dir-use-symlinks False
36
+ else
37
+ echo "Model already exists in storage. Skipping download."
38
+ fi
39
+
40
+ # إنشاء ملف إعدادات النموذج لـ Ollama (Modelfile)
41
+ echo "Creating Modelfile..."
42
+ cat <<EOF > $MODELS_DIR/Modelfile
43
+ FROM $MODELS_DIR/$MODEL_FILE
44
+
45
+ PARAMETER num_ctx 8192
46
+ PARAMETER num_thread 8
47
+ PARAMETER num_predict 512
48
+ EOF
49
+
50
+ # تسجيل النموذج داخل Ollama
51
+ echo "Registering model with Ollama..."
52
+ ollama create $OLLAMA_MODEL_NAME -f $MODELS_DIR/Modelfile
53
+
54
+ # تسخين النموذج مسبقاً حتى يكون جاهزاً فور فتح الواجهة
55
+ # هذا يمنع تأخر ظهور الرسالة عند الضغط على إرسال
56
+ echo "Pre-loading model into memory..."
57
+ ollama run $OLLAMA_MODEL_NAME "hi" > /dev/null 2>&1
58
+ echo "Model is warm and ready."
59
+
60
+ # تشغيل واجهة Open WebUI (الأمر الافتراضي للصورة الأساسية)
61
+ echo "Starting Open WebUI..."
62
+ cd /app/backend
63
+ exec bash start.sh