SSD Nodes Learn Hosting plans →
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-08-31

התקנת OpenHands על שרת VPS: מדריך אבטחה מלא

למדו כיצד להריץ את סוכן ה-AI OpenHands על שרת VPS באמצעות Docker. המדריך מסביר כיצד להגדיר את הסביבה בצורה מאובטחת ולמנוע גישה לא מורשית ל-Docker socket ולמפתחות ה-API שלכם.

מהו OpenHands, והסיכון האחד שיש להבין תחילה

OpenHands, שנקרא בעבר OpenDevin, הוא סוכן הנדסת תוכנה אוטונומי. אתם מזינים לו משימה בשפה טבעית, והוא מתכנן את העבודה, כותב קוד, מריץ פקודות, קורא את הפלט ומבצע איטרציות עד להשלמת המשימה. אתם מריצים אותו על השרת שלכם באמצעות Docker ומפנים אותו למודל שפה. בשרת VPS הוא הופך לסוכן תכנות שעובד בזמן שאתם לא נמצאים.

עובדה אחת צריכה לעצב את כל תצורת העבודה שלכם. OpenHands לא רק מציע קוד, הוא מריץ אותו. כדי לעשות זאת, מכולת הבקרה שלו מבצעת mount ל-socket של ה-Docker המארח ב-/var/run/docker.sock, כך שהוא יכול להפעיל מכולות ארגז חול (sandbox) עבור כל משימה. כל גורם שיכול לתקשר עם ה-socket של Docker יכול להפעיל מכולה חדשה שמבצעת mount לכל מערכת הקבצים של המארח, מה שאומר שגישה ל-socket שקולה להרשאות root על המכונה. לכן, התייחסו לשרת של OpenHands כאל שרת שמריץ קוד לא מהימן, כי זה בדיוק מה שהוא עושה. כל בחירה של הקשחת אבטחה המפורטת להלן נובעת מכך.

דרישות קדם

עליך להחזיק בשרת VPS המריץ Ubuntu 24.04 עם גרסה עדכנית של Docker Engine, לפחות 4 GB של זיכרון RAM, ומפתח API עבור מודל שפה (OpenAI, Anthropic או Google), או לחלופין מודל מקומי המוגש באמצעות Ollama על גבי אותו שרת VPS. OpenHands תומך בעשרות מנועי מודלים, כך שהבחירה נתונה בידך. אם מעולם לא הגדרת מכולות (containers) בעבר, המדריך יסודות Docker על שרת VPS מכסה את הרקע הנדרש למדריך זה.

התקנה באמצעות Docker

OpenHands מופץ כשתי תמונות: תמונת היישום שאתם מריצים, ותמונת agent-server שהיישום מושך כדי להריץ את ה-sandbox של כל משימה. הריצו את הפקודה הבאה, תוך החלפת התגיות הנוכחיות באלו המופיעות בתיעוד הפרויקט:

docker run -it --rm --pull=always \
  -e AGENT_SERVER_IMAGE_REPOSITORY=ghcr.io/openhands/agent-server \
  -e AGENT_SERVER_IMAGE_TAG=1.26.0-python \
  -e LOG_ALL_EVENTS=true \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/.openhands:/.openhands \
  -p 127.0.0.1:3000:3000 \
  --add-host host.docker.internal:host-gateway \
  --name openhands \
  docker.openhands.dev/openhands/openhands:1.8

שני פרטים יחסכו לכם שעה של בלבול. תמונת היישום ותמונת ה-agent-server נושאות מספרי גרסה שונים בכוונה, לכן אל תנסו להתאים ביניהן: השתמשו בתגית ה-agent-server שהתיעוד מצמיד לגרסת היישום שלכם. שימו לב לשימוש ב--p 127.0.0.1:3000:3000 במקום ב--p 3000:3000. שינוי בודד זה הוא ההבדל בין ממשק אינטרנט שרק אתם יכולים לגשת אליו לבין ממשק שכל האינטרנט יכול להגיע אליו, נושא שבו עוסק הסעיף הבא.

שמירה על ממשק ה-Web UI מחוץ לאינטרנט הציבורי

OpenHands מגיש את הממשק שלו בפורט 3000. ממשק זה מפעיל סוכן שמריץ קוד, לכן חשיפתו לאינטרנט מעניקה לכל מי שמוצא אותו נתיב מרוחק לתהליך שמבצע פקודות. בצעו Bind לכתובת ה-loopback, כפי שעושה פקודת ההרצה לעיל, וגשו אליו מהמחשב האישי שלכם באמצעות מנהרת SSH:

ssh -L 3000:127.0.0.1:3000 you@your-vps

לאחר מכן פתחו את http://127.0.0.1:3000 במחשב שלכם. התעבורה עוברת דרך סשן ה-SSH הקיים שלכם, ושום דבר חדש לא מאזין באינטרנט הציבורי. לא כל סוכן זקוק לפורט כלל: סשנים של Claude Code על אותו VPS מתקשרים זה עם זה דרך הטרמינל, כך שהדבר היחיד שאתם חושפים הוא ה-SSH עצמו. כדאי לאמץ את הרגל ה-loopback והמנהרה לכל לוח בקרה של סוכן שאתם מארחים; גישה לממשק הסריקה של open-kritt דרך מנהרה עובדת באותו אופן, רק בפורט 5173. להגדרה קבועה יותר, הציבו אותו מאחורי VPN. כך או כך, הציבו firewall עם מדיניות default-deny לפני השרת כדי ששום דבר לא ייחשף בטעות, וזכרו ש-firewall המכסה רק IPv4 משאיר את אותו פורט פתוח ב-IPv6, וזהו פער ה-IPv6 ב-firewall שתופס אנשים רבים.

בידוד מפתח המודל ואישורי הגישה למאגר

OpenHands זקוק למפתח API עבור המודל שלו, ולעיתים קרובות גם לאסימון (token) לצורך שכפול (clone) ודחיפה (push) של קוד למאגרים שלכם. שני אלו עלולים לעלות כסף ולפעול בשמכם, לכן יש להתייחס אליהם כאל סיסמאות. שמרו אותם בקובץ סביבה שרק החשבון המתאים יכול לקרוא; לעולם אל תכניסו אותם לפקודת ההרצה, שכן הם יופיעו בהיסטוריית ה-shell וברשימת התהליכים, ואל תשמרו אותם לעולם בקובץ בתוך מאגר git. אם אתם שומרים את המקורות במנהל סיסמאות בניהול עצמי, הקשיחו גם את השרת הזה, כיוון שנקודות התורפה של כספת הן אסימון הניהול וקובץ הגיבוי שלה, ולא הפריטים המוצפנים עצמם, כפי שמפורט ב-מדריך הקשחת Vaultwarden.

הריצו זאת על שרת שניתן להשליך

מכיוון שהבקר (controller) חייב להחזיק בגישה ל-Docker socket, לא ניתן לבודד את OpenHands באופן מלא מהמארח שלו. דרך ההתמודדות הכנה היא בידוד באמצעות מיקום: הריצו את OpenHands על שרת VPS ייעודי שאינו מכיל שום דבר אחר שחשוב לכם, ולא על השרת שמריץ את מסד הנתונים או את אתר האינטרנט שלכם. בצעו snapshot לפני שתתחילו, ובצעו שחזור מאותו snapshot במקום לסמוך על שרת שהריץ קוד שנכתב על ידי סוכן במשך שבוע. שרת VPS זול, חד-פעמי ובעל מטרה אחת הוא הבית הנכון עבורו. המיקום הוא הכלי היחיד ש-OpenHands באמת מעניק לכם כאן, לכן אם אתם מעדיפים לשלוט גם בכמות הפעולות שהסוכן רשאי לבצע לפני שהוא עוצר לבקש אישור, מצבי ההרשאות של Claude Code מדגימים כיצד נראה מנגנון הבקרה השני הזה בשרת שאף אחד לא משגיח עליו.

הקשחת השרת סביב היישום

שאר הפעולות הן היגיינת שרת סטנדרטית, והן חשובות כאן יותר מהרגיל כיוון שעומס העבודה מסוכן יותר מהרגיל. צרו משתמש מנהל ללא הרשאות root במקום לעבוד כמשתמש root, בהתאם למדריך הרצת שירותים כמשתמש ללא הרשאות. העבירו את ה-SSH לאימות מבוסס מפתחות בלבד. לאחר מכן, בצעו את רשימת התיוג שלהלן ושמרו אותה במקום נגיש לעיון חוזר.

ToolVPS hardening checklist

כדי להבין את הרכיבים הפועלים במקום רק להריץ אותם, עיינו במדריך בניית סוכן AI עצמאי על גבי VPS; עבור פלטפורמה עם פחות כתיבת קוד, אירוח עצמי של Dify מהווה נקודת כניסה נוחה יותר.

FAQ

האם בטוח להריץ את OpenHands על שרת?

זה יכול להיות בטוח, בזהירות הנדרשת, אך מדובר בסיכון גבוה יותר מאשר יישום אינטרנט רגיל. OpenHands כותב ומריץ קוד, והבקר שלו מחזיק בגישה ל-Docker socket של המארח, מה שמעניק לו למעשה הרשאות root על המכונה. הריצו אותו על שרת VPS ייעודי וחד-פעמי שאינו מכיל מידע רגיש אחר, שמרו את ממשק ה-Web שלו ב-loopback מאחורי מנהרת SSH או VPN, בצעו בידוד ל-keys שלו, והקשיחו את אבטחת השרת. אל תריצו אותו לצד שירותים חשובים שלכם.

מדוע OpenHands זקוק ל-Docker socket?

OpenHands מריץ כל משימה בתוך מכולת sandbox נקייה, והוא מבקש מ-daemon של ה-Docker המארח ליצור את המכולות הללו על ידי מיפוי (mounting) של /var/run/docker.sock לתוך הבקר שלו. פעולה זו מעניקה למכולת הבקר שליטה על Docker במכונה המארחת. מדובר ביכולת עוצמתית אך מסוכנת, ולכן יש להתייחס למכונה המארחת ככזו שמריצה קוד שאינו מהימן.

האם OpenHands יכול להשתמש במודל מקומי במקום ב-API בתשלום?

כן. OpenHands תומך במודלים מקומיים המוגשים על ידי Ollama או vLLM, כך שניתן להריץ אותו באופן עצמאי לחלוטין ללא עלות לפי token וללא זליגת נתונים מהשרת שלכם. אתם זקוקים למכונה עם זיכרון מספיק עבור מודל תכנות בעל יכולות, בהתאם לדרישות המשאבים המפורטות במדריך של Ollama.

האם כדאי לי להריץ את OpenHands על השרת הראשי שלי?

לא. מכיוון שהוא מריץ קוד שנכתב על ידי סוכן (agent) ומחזיק בגישה ל-Docker socket, שמרו אותו על שרת VPS נפרד וייעודי שאתם מוכנים לאתחל מחדש במידת הצורך. הרצה שלו לצד מסד נתונים, אתר אינטרנט או שירותים אחרים שלכם משמעותה ששגיאה של הסוכן, או באג בו, עלולים להגיע למקומות שאליהם הוא מעולם לא היה אמור לגשת.