איך להקים מודל AI פרטי על שרת משלכם עם Ollama ו־Open WebUI דרך SSH
איך להקים מודל AI פרטי על שרת משלכם עם Ollama ו־Open WebUI דרך SSH
הקדמה: למה בכלל להקים AI פרטי על שרת משלכם?
רוב האנשים משתמשים היום בכלים כמו ChatGPT, Gemini או Claude דרך שירותי ענן. זה נוח, אבל לא תמיד מתאים למי שרוצה יותר שליטה, פרטיות, התאמה אישית או מערכת AI שאפשר לחבר לאתר, לעסק, למסמכים פנימיים או למשתמשים פרטיים.
במדריך הזה נלמד איך להקים מערכת AI פרטית על שרת משלכם, עם מודל שרץ דרך Ollama וממשק משתמש גרפי דרך Open WebUI. Open WebUI תומך ב־Ollama ובספקים נוספים, וניתן להריץ אותו דרך Docker, Python או Kubernetes, כאשר Docker הוא המסלול המהיר והמומלץ לרוב המשתמשים.
בסוף המדריך תהיה לכם מערכת AI פעילה בדומיין משלכם, לדוגמה:
# Author: pablo rotem
https://ai.example.com
מה נקים במדריך הזה?
נקים מערכת שמורכבת משלושה חלקים:
- Ollama — המנוע שמריץ את מודלי ה־AI.
- Open WebUI — ממשק דמוי ChatGPT שמתחבר ל־Ollama.
- Caddy — שרת Reverse Proxy שנותן לנו דומיין ו־HTTPS אוטומטי.
Ollama יריץ את המודלים, Open WebUI יציג ממשק נוח למשתמש, ו־Caddy ידאג לכך שהמערכת תהיה נגישה דרך דומיין מאובטח עם HTTPS.
דרישות לפני שמתחילים
- שרת VPS או Dedicated Server.
- Ubuntu 22.04 או Ubuntu 24.04.
- גישת SSH לשרת.
- דומיין או סאב־דומיין, לדוגמה
ai.example.com. - לפחות 8GB RAM למודלים קטנים.
- מומלץ 16GB RAM ומעלה למודלים שימושיים יותר.
- מומלץ GPU אם רוצים ביצועים טובים, אבל אפשר להתחיל גם על CPU.
המדריך כתוב עבור Ubuntu. אם אתם משתמשים בהפצה אחרת, רוב הרעיון זהה, אבל פקודות ההתקנה עשויות להשתנות.
שלב 1: התחברות לשרת דרך SSH
במחשב שלכם פותחים Terminal / PowerShell / CMD ומתחברים לשרת:
# Author: pablo rotem
ssh root@SERVER_IP
להחליף את SERVER_IP בכתובת ה־IP האמיתית של השרת.
לדוגמה:
# Author: pablo rotem
ssh [email protected]
אם אתם משתמשים במשתמש שאינו root:
# Author: pablo rotem
ssh username@SERVER_IP
שלב 2: עדכון השרת
אחרי שהתחברתם לשרת, מריצים:
# Author: pablo rotem
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl wget nano git ca-certificates gnupg lsb-release ufw
זה מעדכן את השרת ומתקין כלים בסיסיים שנצטרך בהמשך.
שלב 3: הגדרת Firewall בסיסי
נפתח רק את הפורטים הדרושים:
- SSH — פורט 22
- HTTP — פורט 80
- HTTPS — פורט 443
# Author: pablo rotem
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
חשוב: Docker יכול לחשוף פורטים בצורה שעוקפת חלק מכללי Firewall רגילים. לכן במדריך הזה נחבר את Open WebUI רק ל־127.0.0.1, ורק Caddy יחשוף אותו החוצה דרך HTTPS.
שלב 4: התקנת Docker ו־Docker Compose
נשתמש ב־Docker כדי להריץ את Ollama ואת Open WebUI בצורה נקייה, קלה לעדכון וקלה לניהול.
# Author: pablo rotem
sudo apt remove -y docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc || true
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg –print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
בודקים ש־Docker עובד:
# Author: pablo rotem
sudo docker run hello-world
אם קיבלתם הודעת הצלחה, Docker מותקן ועובד.
שלב 5: יצירת תיקייה למערכת ה־AI
ניצור תיקייה מסודרת עבור המערכת:
# Author: pablo rotem
sudo mkdir -p /opt/pablo-ai
cd /opt/pablo-ai
שלב 6: יצירת קובץ Docker Compose
ניצור קובץ בשם docker-compose.yml:
# Author: pablo rotem
sudo nano /opt/pablo-ai/docker-compose.yml
להדביק פנימה את הקוד הבא:
# Author: pablo rotem
# File: /opt/pablo-ai/docker-compose.yml
services:
ollama:
image: ollama/ollama:latest
container_name: pablo-ollama
restart: unless-stopped
volumes:
– pablo_ollama_data:/root/.ollama
ports:
– "127.0.0.1:11434:11434"
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: pablo-open-webui
restart: unless-stopped
depends_on:
– ollama
environment:
– OLLAMA_BASE_URL=http://ollama:11434
– WEBUI_AUTH=true
– WEBUI_SECRET_KEY=CHANGE_THIS_TO_A_LONG_RANDOM_SECRET
volumes:
– pablo_open_webui_data:/app/backend/data
ports:
– "127.0.0.1:3000:8080"
volumes:
pablo_ollama_data:
pablo_open_webui_data:
עכשיו צריך להחליף את CHANGE_THIS_TO_A_LONG_RANDOM_SECRET במפתח סודי אמיתי.
אפשר ליצור אחד כך:
# Author: pablo rotem
openssl rand -hex 32
להעתיק את התוצאה ולהכניס אותה במקום CHANGE_THIS_TO_A_LONG_RANDOM_SECRET.
המשתנה WEBUI_SECRET_KEY חשוב כדי שהתחברויות וסשנים לא יתאפסו בכל פעם שהקונטיינר נוצר מחדש.
שומרים את הקובץ:
- ב־Nano לוחצים
CTRL + O - Enter
- ואז
CTRL + X
שלב 7: הפעלת Ollama ו־Open WebUI
מריצים:
# Author: pablo rotem
cd /opt/pablo-ai
sudo docker compose up -d
בודקים שהקונטיינרים רצים:
# Author: pablo rotem
sudo docker ps
אתם אמורים לראות שני קונטיינרים:
# Author: pablo rotem
pablo-ollama
pablo-open-webui
שלב 8: הורדת מודל AI ראשון
עכשיו נוריד מודל ראשון ל־Ollama. מודל קל יחסית להתחלה:
# Author: pablo rotem
sudo docker exec -it pablo-ollama ollama pull llama3.2
אפשר גם להריץ אותו לבדיקה דרך הטרמינל:
# Author: pablo rotem
sudo docker exec -it pablo-ollama ollama run llama3.2
כדי לצאת מהשיחה בטרמינל, לוחצים:
# Author: pablo rotem
CTRL + D
או כותבים:
# Author: pablo rotem
/bye
שלב 9: בדיקה שהממשק עובד מקומית
מכיוון שחיברנו את Open WebUI רק ל־127.0.0.1, הוא לא פתוח ישירות לעולם. זה מכוון.
אפשר לבדוק מתוך השרת:
# Author: pablo rotem
curl -I http://127.0.0.1:3000
אם מקבלים תגובת HTTP, הממשק עובד.
שלב 10: הכנת הדומיין
במערכת ניהול ה־DNS של הדומיין שלכם, צרו רשומת A:
# Author: pablo rotem
Type: A
Name: ai
Value: SERVER_IP
Proxy: DNS Only אם אתם משתמשים ב־Cloudflare
לדוגמה:
# Author: pablo rotem
ai.example.com → 123.123.123.123
אם הדומיין שלכם נמצא ב־Cloudflare, מומלץ בהתחלה לשים את הרשומה על DNS Only עד שה־HTTPS עובד תקין.
שלב 11: התקנת Caddy עבור HTTPS ודומיין
Caddy הוא Reverse Proxy פשוט ונוח שמסוגל להוציא SSL אוטומטי לדומיין שמצביע לשרת.
# Author: pablo rotem
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg –dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy
שלב 12: חיבור הדומיין ל־Open WebUI
פותחים את קובץ ההגדרות של Caddy:
# Author: pablo rotem
sudo nano /etc/caddy/Caddyfile
מוחקים את התוכן הקיים, ומדביקים:
# Author: pablo rotem
# File: /etc/caddy/Caddyfile
ai.example.com {
reverse_proxy 127.0.0.1:3000
}
להחליף את ai.example.com בדומיין האמיתי שלכם.
לדוגמה:
# Author: pablo rotem
# File: /etc/caddy/Caddyfile
ai.yourdomain.com {
reverse_proxy 127.0.0.1:3000
}
בודקים שההגדרה תקינה:
# Author: pablo rotem
sudo caddy validate –config /etc/caddy/Caddyfile
אם אין שגיאות, טוענים מחדש את Caddy:
# Author: pablo rotem
sudo systemctl reload caddy
בודקים סטטוס:
# Author: pablo rotem
sudo systemctl status caddy
חשוב: אם Caddy לא מצליח להוציא SSL, בדקו שהדומיין מצביע נכון לשרת ושהפורטים 80 ו־443 פתוחים.
שלב 13: כניסה ראשונה למערכת
עכשיו פותחים בדפדפן:
# Author: pablo rotem
https://ai.example.com
בכניסה הראשונה תתבקשו ליצור משתמש. המשתמש הראשון בדרך כלל הופך למנהל המערכת.
המלצות:
- השתמשו בסיסמה חזקה.
- אל תפתחו הרשמה חופשית אם המערכת מיועדת רק לכם או לצוות.
- בדקו באזור ההגדרות ש־Ollama מחובר.
- בחרו את המודל שהורדתם, לדוגמה
llama3.2.
שלב 14: הוספת מודלים נוספים
אפשר להוסיף עוד מודלים דרך SSH.
לדוגמה:
# Author: pablo rotem
sudo docker exec -it pablo-ollama ollama pull mistral
או:
# Author: pablo rotem
sudo docker exec -it pablo-ollama ollama pull qwen2.5
או מודל קטן יותר אם השרת חלש:
# Author: pablo rotem
sudo docker exec -it pablo-ollama ollama pull gemma3:1b
את רשימת המודלים העדכנית כדאי לבחור מתוך ספריית המודלים של Ollama, כי שמות, גרסאות וגדלים משתנים עם הזמן.
שלב 15: פקודות ניהול חשובות
בדיקת קונטיינרים רצים
# Author: pablo rotem
sudo docker ps
צפייה בלוגים של Open WebUI
# Author: pablo rotem
sudo docker logs -f pablo-open-webui
צפייה בלוגים של Ollama
# Author: pablo rotem
sudo docker logs -f pablo-ollama
הפעלה מחדש של המערכת
# Author: pablo rotem
cd /opt/pablo-ai
sudo docker compose restart
עצירת המערכת
# Author: pablo rotem
cd /opt/pablo-ai
sudo docker compose down
הפעלה מחדש אחרי עצירה
# Author: pablo rotem
cd /opt/pablo-ai
sudo docker compose up -d
שלב 16: עדכון Open WebUI ו־Ollama
כדי לעדכן את הקונטיינרים:
# Author: pablo rotem
cd /opt/pablo-ai
sudo docker compose pull
sudo docker compose up -d
לאחר מכן בודקים שהכול עובד:
# Author: pablo rotem
sudo docker ps
שלב 17: גיבוי הנתונים
הנתונים נשמרים בשני Docker volumes:
pablo_ollama_data— המודלים של Ollama.pablo_open_webui_data— המשתמשים, ההגדרות והיסטוריית הממשק של Open WebUI.
ניצור תיקיית גיבויים:
# Author: pablo rotem
sudo mkdir -p /opt/pablo-ai-backups
גיבוי Open WebUI:
# Author: pablo rotem
sudo docker run –rm -v pablo-ai_pablo_open_webui_data:/data -v /opt/pablo-ai-backups:/backup alpine tar czf /backup/open-webui-data-$(date +%F).tar.gz -C /data .
גיבוי Ollama:
# Author: pablo rotem
sudo docker run –rm -v pablo-ai_pablo_ollama_data:/data -v /opt/pablo-ai-backups:/backup alpine tar czf /backup/ollama-data-$(date +%F).tar.gz -C /data .
בודקים שהקבצים נוצרו:
# Author: pablo rotem
ls -lh /opt/pablo-ai-backups
אם שם הפרויקט של Docker Compose שונה, ייתכן שגם שם ה־volume יהיה שונה. אפשר לבדוק את שמות ה־volumes כך:
# Author: pablo rotem
sudo docker volume ls
שלב 18: אבטחה בסיסית למערכת AI פרטית
מערכת AI פרטית עדיין צריכה אבטחה. אל תניחו שהיא בטוחה רק בגלל שהיא “על השרת שלכם”.
המלצות חשובות:
- אל תחשפו את פורט
11434של Ollama ישירות לאינטרנט. - אל תחשפו את פורט
3000ישירות לאינטרנט. - השתמשו ב־HTTPS בלבד.
- הגדירו סיסמאות חזקות.
- בטלו הרשמה חופשית אם אין צורך.
- שמרו את השרת מעודכן.
- אל תעלו למסמכים מידע רגיש בלי להבין מי יכול לגשת אליו.
- בצעו גיבויים.
- אל תתנו למשתמשים לא מוכרים גישה חופשית למודלים כבדים, כי הם יכולים לצרוך הרבה CPU/RAM/GPU.
שלב 19: איך לחבר את המערכת לאתר או לעסק?
אחרי שהמערכת עובדת, אפשר להשתמש בה בכמה דרכים.
שימוש אישי
פשוט נכנסים ל־Open WebUI ומשתמשים בו כמו ChatGPT פרטי.
שימוש לצוות
יוצרים משתמשים נוספים ונותנים להם לעבוד דרך הדומיין.
שימוש עם מסמכים
אפשר להשתמש ביכולות ידע / מסמכים של Open WebUI כדי להעלות קבצים ולשאול שאלות על תוכן פנימי.
שימוש באתר WordPress
אפשר בעתיד לבנות תוסף WordPress שמדבר עם Ollama API או עם שכבת API פנימית, למשל:
- צ׳אט תמיכה באתר.
- סיכום פניות לקוחות.
- יצירת מאמרים.
- ניתוח מסמכים.
- בוט פנימי לעובדים.
- עוזר לעורכי דין, רופאים, טכנאים או בעלי עסקים.
במקרה כזה חשוב לא לחבר את האתר ישירות ל־Ollama פתוח לאינטרנט, אלא דרך API מאובטח עם הרשאות, Rate Limit ולוגים.
פתרון תקלות נפוצות
הכתובת לא נפתחת בדפדפן
בדקו DNS:
# Author: pablo rotem
ping ai.example.com
בדקו ש־Caddy עובד:
# Author: pablo rotem
sudo systemctl status caddy
בדקו שהקונטיינרים רצים:
# Author: pablo rotem
sudo docker ps
Caddy לא מצליח להוציא SSL
ודאו:
- הדומיין מצביע ל־IP של השרת.
- פורטים 80 ו־443 פתוחים.
- אין Apache/Nginx שתופס את אותם פורטים.
- אם אתם עם Cloudflare, נסו קודם DNS Only.
בדיקת פורטים:
# Author: pablo rotem
sudo ss -tulpn | grep -E ':80|:443'
Open WebUI לא מזהה את Ollama
בדקו שהקונטיינר של Ollama פעיל:
# Author: pablo rotem
sudo docker logs pablo-ollama –tail=100
בדקו שה־Compose כולל:
# Author: pablo rotem
OLLAMA_BASE_URL=http://ollama:11434
ואז הפעילו מחדש:
# Author: pablo rotem
cd /opt/pablo-ai
sudo docker compose restart
המודל איטי מאוד
זה נורמלי בשרת בלי GPU. אפשר לנסות:
- מודל קטן יותר.
- שרת עם יותר RAM.
- שרת עם GPU.
- פחות משתמשים במקביל.
- מודל Quantized קטן יותר.
אין מספיק מקום בדיסק
בדקו מקום:
# Author: pablo rotem
df -h
בדקו גודל Docker:
# Author: pablo rotem
sudo docker system df
מחיקת images לא בשימוש:
# Author: pablo rotem
sudo docker system prune -a
זהירות: לא למחוק Docker volumes אם אינכם בטוחים, כי שם נמצאים הנתונים.
מקורות רשמיים להמשך קריאה
סיכום
במדריך הזה הקמנו מערכת AI פרטית על שרת משלנו בעזרת:
- SSH לניהול השרת.
- Docker להרצת השירותים.
- Ollama להרצת מודלי AI.
- Open WebUI כממשק משתמש נוח.
- Caddy לחיבור דומיין ו־HTTPS.
התוצאה היא מערכת AI עצמאית שאפשר להפעיל על שרת פרטי, להשתמש בה לצוות, למסמכים, לאתר, או כבסיס לשירות AI מתקדם יותר.
היתרון הגדול הוא שליטה: אתם בוחרים איפה המודל רץ, איזה מודלים מותקנים, מי מקבל גישה, איך שומרים את הנתונים, ואיך מחברים את המערכת לעסק שלכם.
טיפ אחרון: למערכת אמיתית שמיועדת למשתמשים חיצוניים, כדאי להוסיף שכבת אבטחה נוספת, ניטור משאבים, גיבוי אוטומטי ו־Rate Limit כדי למנוע עומס או שימוש לא רצוי.
