מדריך קלוד קוד בעברית

תיעוד 138

סביבות באירוח עצמי

הרצת סשנים של Claude Code בענן על תשתית שבשליטתכם: הגדרת סביבה באירוח עצמי, פריסת runners, וניתוב סשנים אל המחשוב שלכם.

[!NOTE]

סביבות באירוח עצמי נמצאות בבטא ציבורית בתוכניות Team ו-Enterprise, והן כבויות כברירת מחדל. ראו זמינות ומגבלות למסלול ההפעלה ולמה שלא כלול.

סביבה באירוח עצמי מריצה סשנים של Claude Code בענן על תשתית שהארגון שלכם מפעיל. סשן בענן הוא כל סשן שרץ במקום שאינו המחשב של המפתח. מפתחים מתחילים אותם מ-claude.ai, מאפליקציות המובייל והדסקטופ, מהטרמינל עם claude --cloud, וממשימות מתוזמנות בענן. כברירת מחדל, סשנים בענן רצים על התשתית של Anthropic.

בסביבה באירוח עצמי, אותם סשנים רצים בתוך הרשת שלכם. חוויית המפתח זהה בכל השאר, חוץ מההבדלים בזמינות ומגבלות ובבעיות הידועות בדף הפריסה.

  • אם הצוות שלכם לא משתמש בסשנים בענן, אין כאן מה להגדיר: סשנים בטרמינל או ב-IDE תמיד רצים על המחשב של המפתח עצמו
  • כדי להריץ את Claude Code על מחשב משלכם שפועל תמיד ולהפעיל אותו ממכשירים אחרים, השתמשו ב-Remote Control, שזמין גם בתוכניות Pro, Max ו-Ultra
  • כשאתם מוכנים להגדיר, עברו ישר אל ההתחלה המהירה. כדי לעבור קודם על מצב האבטחה, התחילו בפריסה לייצור

כדי ללמוד איך אירוח עצמי עובד ומתי לבחור בו, קראו את איך סביבות באירוח עצמי עובדות ואת למה לארח בעצמכם.

#איך סביבות באירוח עצמי עובדות

לאירוח עצמי יש שלושה חלקים:

  • סביבה: יעד עם שם, שאפשר לשלוח אליו סשנים בענן. הארגון שלכם יוצר סביבות בהגדרות הניהול של claude.ai, וכל סביבה מקבצת קבוצה של runners.
  • Runner: תוכנית שרצה על מארחים בתוך הרשת שלכם. Runners מריצים את הסשנים. הרעיון זהה ל-runner של CI באירוח עצמי.
  • סשן: משימת Claude Code אחת שמפתח התחיל.

כשמפתח מתחיל סשן בענן, ממשק התחלת הסשן מציג בורר סביבות שמפרט סביבות באירוח של Anthropic לצד סביבות שהארגון שלכם יצר. אם הם בוחרים בסביבה שלכם, מישור הבקרה של Anthropic ממקם את הסשן בתור של הסביבה שלכם, שם runner תופס אותו, משכפל את המאגר שהמפתח בחר, ומתחיל תהליך Claude Code על המארח שלכם כדי להריץ אותו. ה-runner מאמת מול מארח ה-git שלכם עם אישורי גישה שאתם מגדירים. הגדרת git מכסה את האפשרויות. סשנים מגיעים לשירותים הפנימיים שלכם מתוך הרשת שלכם, ואל מארח ה-git שלכם באותו אופן כשהוא פנימי. התעבורה אל Anthropic, תשאול התור, זרם האירועים של הסשן, וכברירת מחדל היסק המודל, היא HTTPS יוצא אל api.anthropic.com, עם הרשימה הקצרה של מארחים נוספים שסשנים יכולים להגיע אליהם בדרישות רשת. Anthropic אף פעם לא מתחברת אל תוך הרשת שלכם.

תרשים ארכיטקטורה של סביבה באירוח עצמי: גבול הרשת שלכם מכיל runner, שני תהליכי סשן של Claude Code בתוכו, ואת מארח ה-git שלכם, ו-api.anthropic.com נמצא בחוץ ומחזיק את התור, את זרם הסשן ואת ההיסק. ה-runner מתשאל את התור ומגיע למארח ה-git, כל תהליך סשן פותח חיבורי זרם, היסק ו-git משלו, וכל חיבור יוצא מהרשת שלכם, בלי חיבורים נכנסים.

שתי תיבות Claude Code בתרשים הן תהליכי סשן: runner אחד שמריץ שני סשנים בבת אחת, עד לקיבולת שהוגדרה לו. runner משרת בעלים אחד בכל רגע, וננעל לבעלים הזה כשהוא תופס את הסשן הראשון שלו, כך שקוד שעבר checkout לא מתערבב בין בעלים. מחזור החיים של runner מכסה את הכלל.

אפשר להפעיל runners בעצמכם ולהשאיר אותם רצים, או להריץ את מתזמר ההרחבה האוטומטית, תהליך שני שאתם מארחים, והוא מפעיל runners כשסשנים נכנסים לתור. בכל אחת מהאפשרויות, מגדירים את הסביבה פעם אחת, והיא מופיעה בבורר בכל משטח נתמך.

#זמינות ומגבלות

בדקו את אלה לפני תכנון פריסה:

#למה לארח בעצמכם

רוב הצוותים מקבלים מענה טוב יותר מסביבות באירוח של Anthropic, שלא דורשות תשתית להרצה או לתחזוקה. אירוח עצמי מיועד לצוותים שדרישות הרשת, הכלים או התאימות שלהם מחייבות להשאיר את הרצת הסשנים על תשתית שבשליטתם. אם זה המצב שלכם, תכננו לבעלות התפעולית שזה כרוך בה: אתם בונים ומתחזקים את תמונת ה-runner, מפעילים את הצי, ושולטים ברשת שלו.

בתמורה, אירוח עצמי נותן לכם גישת רשת, כלים מותאמים, ושליטה בתאימות:

  • גישת רשת: סשנים רצים בתוך הרשת שלכם ויכולים להגיע לשירותים פנימיים, למסדי נתונים ולרגיסטרי בלי לחשוף אותם לאינטרנט הציבורי
  • כלים מותאמים: התקינו מראש מהדרים, SDK ו-CLI פנימיים בתמונת ה-runner, כדי שכל סשן יתחיל מוכן לבנייה
  • תאימות: פעולות checkout של מאגרים ותוצרי בנייה נשארים על תשתית שבשליטתכם. תוכן הסשן עדיין עובר אל api.anthropic.com.

#סביבות, ראנרים וסשנים

סביבות מנוהלות בדף Cloud environments בהגדרות הניהול של claude.ai. ראנרים הם תהליכים שאתם מפעילים ומנהלים בתשתית שלכם.

#מושגי מפתח

המונחים האלה מופיעים לאורך דפי הסביבות המתארחות עצמית:

מונחמה זה
Environmentקבוצה בעלת שם של הראנרים שלכם, שנוצרת בהגדרות claude.ai. סשנים מנותבים לסביבה, לא לראנר בודד.
Environment secretאישור הגישה המשותף היחיד שהראנרים משתמשים בו כדי לאמת ולהירשם מול הסביבה. מוצג פעם אחת ביצירת הסביבה, ומסומן environment key בממשק הניהול.
Runnerהתהליך ארוך החיים שאתם פורסים. ראנר נרשם מול הסביבה, מקבל runner token, וסוקר אחר סשנים.
Sessionמשימת Claude Code אחת, שמתחילה מ-claude.ai, מהאפליקציה לנייד, או ממשטח Anthropic אחר כמו משימה מתוזמנת או סוכן. כל סשן רץ כתהליך Claude Code בן שהראנר מפעיל.

בשדות API, בטענות של טוקנים ובשמות מדדים, הסביבה מופיעה כ-pool, ומזהה הסביבה הוא pool_id. ה-reference ממפה את שתי הצורות, כולל שמות דגלי pool שהוצאו משימוש.

ראנר משרת בעלים אחד בכל פעם. הסשן הראשון שהראנר קולט נועל את הראנר לבעלים של אותו סשן, ואז הראנר מריץ סשנים רק עבור אותו בעלים, עד לקיבולת שהוגדרה. מי הבעלים תלוי באופן שבו הסשן התחיל:

  • סשנים שמשתמש מתחיל: הבעלים הוא החשבון של אותו משתמש.
  • סשני ערוץ Claude Tag: Claude מריץ אותם בלי חשבון משתמש מחובר, ולכן הבעלים הוא סוכן Claude Tag שהתחיל את הסשן. לכל סשן ערוץ שהסוכן הזה מתחיל יש אותו בעלים, בלי קשר למי ששלח את הודעת Slack, ולכן ראנר שננעל אליו משרת סשנים שאנשים שונים התחילו כשמריצים אותו עם --capacity מעל אחד או עם --drain-grace-sec חיובי.

גודל הצי המינימלי הוא אפוא מספר הבעלים שאתם מצפים שיהיו פעילים בו זמנית, בספירה של משתמשים ושל סוכני Claude Tag.

#מחזור חיים של סשן

כשמפתח מתחיל סשן ובוחר את הסביבה שלכם, מישור הבקרה של Anthropic מציב את הסשן בתור של הסביבה. משם:

  1. ראנר עם קיבולת פנויה תובע את הסשן ומחזיק עליו lease.
  2. הראנר משכפל את המאגר לתיקיית העבודה שלו ומפעיל תהליך Claude Code בן.
  3. הבן מזרים אירועים בחזרה דרך HTTPS בזמן שהראנר ממשיך לסרוק. כל סריקה מרעננת את ה-lease ומשמשת גם כ-heartbeat.
  4. אם הראנר מפסיק לסרוק, ה-lease שלו פוקע אחרי כ-60 שניות. השרת יכול אז לקחת כמה דקות, ולפעמים יותר, כדי להחזיר את הסשן לתור עבור ראנר אחר.

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

#מחזור חיים של ראנר

הסשן הראשון שהראנר קולט נועל את הראנר לבעלים של אותו סשן, והראנר מריץ עד --capacity סשנים במקביל עבור אותו בעלים. כל עוד לראנר יש סשנים פעילים והוא לא קיבל אות כיבוי ולא הגיע לזמן הפרישה שלו, הראנר ממשיך לתבוע את העבודה בתור של הבעלים הנעול. מה שקורה אחרי שהם מסתיימים תלוי ב---drain-grace-sec:

  • ברירת המחדל 0: הראנר יוצא ברגע שהסשנים הפעילים שלו מסתיימים, בלי לסרוק לעוד עבודה, כדי שהאורקסטרטור שתחתיו אתם פורסים אותו, כמו Kubernetes, יוכל להפעיל אותו מחדש עם דיסק נקי, מוכן לשרת כל בעלים.
  • בערך חיובי: הראנר ממשיך לסרוק את התור של הבעלים הנעול במשך אותו מספר שניות לפני שהוא יוצא.

מחזור החיים הזה מבודד את הקוד שנמשך לכל בעלים בלי לדרוש מהראנר למחוק מצב דיסק בין בעלים.

האופן שבו התשתית שלכם עוצרת ראנר קובע אם אתם צריכים --retire-at. הריגה שמעבירה SIGTERM לא צריכה דגל: הראנר מנקז כפי שמתואר ב-Shutdown timing, או ממשיך לשרת את הסשנים שהוא כבר מחזיק כשמגדירים --defer-shutdown-max-min. אם התשתית שלכם במקום זאת משמידה מארחים בזמן שעון קיר ידוע בלי אות, או עם תקופת חסד קצרה מדי לניקוז, כמו תקרת אורך חיים של sandbox או החזרת spot instance, העבירו --retire-at <epoch-seconds> שמוגדר לכמה דקות לפני הזמן הזה. בזמן הפרישה:

  1. הראנר מפסיק לקחת עבודה חדשה.
  2. הראנר משחרר כל סשן פעיל דרך אותו נתיב שחרור שהדגל --release-idle-session-min משתמש בו, כך שהסשן ממשיך על ראנר חדש כשהמשתמש שולח את ההודעה הבאה. מתי הראנר משחרר כל סשן תלוי במצב שלו:
    • הראנר משחרר סשן שנמצא באמצע תור אחרי שהתור הזה מסתיים. קודם הוא מחכה שתהליך הסשן ידווח ל-Anthropic על סיום התור, לא יותר מ-SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS. לפני v2.1.280, הראנר שחרר את הסשן ברגע שהתור הסתיים.
    • כשתור מסתיים ומשאיר משימות רקע רצות, הראנר מחכה להן עד 60 שניות, ואז משחרר את הסשן גם אם הן עדיין רצות. אם המשימות הסתיימו אבל תור ההמשך שקורא את התוצאות שלהן עדיין לא רץ, הראנר שומר את הסשן עד שהתור הזה מסתיים, ומחכה לא יותר מ-SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS עד שהתור הזה מתחיל.
  3. הראנר יוצא עם 0 אחרי שכל הסשנים שלו שוחררו.

תור שמאריך מעבר להריגה עדיין אובד. Shutdown timing מכסה את קביעת גודל השוליים. בלי --retire-at, הריגת מארח בלי אות אינה ניתנת להבחנה מקריסה: מישור הבקרה רושם worker שאבד במקום שחרור נקי, והסשן חוזר לתור אצל ראנר אחר.

#נתיבי רשת

הראנר והסשנים שלו יוצרים כמה סוגים של חיבור יוצא, ולא נדרשת קישוריות נכנסת מ-Anthropic:

  • מישור בקרה: הראנר סורק את api.anthropic.com אחר עבודה ושולח אירועי התקדמות הגדרה וכשל, כולם ב-HTTPS יוצא. הסריקה משמשת גם כ-heartbeat של הראנר.
  • Git: הראנר משכפל אל מארח ה-git שלכם ודוחף אליו דרך HTTPS או SSH, עם אימות באמצעות אישורי גישה שהפריסה שלכם מספקת. ראו Configure git לאפשרויות, כולל אישורי גישה שמונפקים לכל סשן. עם פרוקסי git של Anthropic, תעבורת git למאגרים ב-github.com עוברת דרך api.anthropic.com.
  • תהליך בן של הסשן: תהליך Claude Code הבן מחזיק את זרם האירועים של הסשן אל api.anthropic.com, ומבצע קריאות יוצאות משלו להסקה של מודל ולפקודות git שרצות במהלך הסשן. בסשן שמשתמש ב-git מנוהל על ידי Anthropic, הבן פותח חיבור WebSocket אל api.anthropic.com שנושא תעבורת github.com מ-git ומ-gh.
  • מחבר SCM: מחבר SCM האופציונלי של האורקסטרטור אינו זמין, ולכן המנהרה שלו לא נפתחת. המנהרה היא חיבור WebSocket אל api.anthropic.com.

ראו Network requirements לרשימת היציאה המלאה. התרשים למעלה מציג את הנתיבים האלה, מלבד מחבר SCM האופציונלי וחיבור ה-git המנוהל על ידי Anthropic.

כברירת מחדל, הסקת מודל משתמשת ב-API של Anthropic. מישור הבקרה מעביר את נקודת הקצה של ה-API לכל סשן, והסשן מאמת עם טוקן OAuth ש-Anthropic הנפיקה ושההיקף שלו הוא הסשן. כדי לשלוח בקשות מודל לחשבון הענן שלכם, ראו Send model requests to Bedrock or Agent Platform.

פרוקסי יציאה ארגוניים נתמכים. הראנר ואורקסטרטור ההרחבה האוטומטית האופציונלי מכבדים את משתני הסביבה של פרוקסי ו-mTLS שמתוארים ב-Network configuration, כמו HTTPS_PROXY ו-NO_PROXY. הגדירו אותם בסביבה של כל תהליך. המשתנים מכסים קריאות למישור הבקרה, את ה-WebSocket של מחבר SCM של האורקסטרטור, ואת השכפול המובנה ל-remote ב-HTTPS, והסשנים יורשים אותם מהראנר. הזרמת סשן משתמשת ב-server-sent events דרך HTTPS, ולכן פרוקסי בנתיב לא יכול לאגור תשובות במאגר.

  • אימות פרוקסי: אם הפרוקסי שלכם דורש גם כותרת Proxy-Authorization, הראנר יכול להוסיף אותה לכל חיבור שהוא פותח אל הפרוקסי. ראו Authenticate to an egress proxy.
  • תשובות ארוכות חיים: אם ראנר קולט סשן אבל Claude אף פעם לא עונה להודעה הראשונה שלו, הפרוקסי שלכם עשוי להיות הסיבה. ראו A session is picked up, but Claude never answers its first message.

#מה נשאר בתשתית שלכם

משיכות מאגר, תוצרי בנייה, סודות, וכל קובץ שסשן יוצר או משנה נשארים במכונות שאתם מספקים. השיחה עצמה, כולל הנחיות, תשובות ותוצאות כלים, הולכת אל api.anthropic.com, ו-Anthropic שומרת את תמליל הסשן כדי שתוכלו לחדש את הסשן ממשטח נתמך אחר. כשראנר שולח בקשות מודל אל Amazon Bedrock או אל Agent Platform של Google Cloud, השיחה עדיין הולכת אל api.anthropic.com בזרם האירועים של הסשן.

סביבה מתארחת עצמית מעבירה את ביצוע הסשן לרשת שלכם. מישור הבקרה נשאר מתארח אצל Anthropic: תזמור סשנים, תורים וממשק claude.ai ממשיכים לרוץ על התשתית של Anthropic.

#התחלה

דפי הסביבות המתארחות עצמית מאורגנים לפי מה שאתם עושים:

  • Quickstart: התקנת Claude Code, יצירת סביבה, הפעלת ראנר, וניתוב הסשן הראשון שלכם
  • Deploy to production: הקשחת אבטחה, יציאת רשת, אישורי גישה ל-git, מתכוני Kubernetes ו-Compose, בעיות ידועות ופתרון תקלות
  • Customize sessions: סקריפטי מעטפת לאישורי גישה לכל סשן, lifecycle hooks, ראנרים לפי דרישה, שרתי MCP והרשאות
  • Test end to end: בדיקת עשן ב-CI שמאמתת תמונת ראנר לפני שאתם מקדמים אותה
  • Reference: כל דגל CLI, משתנה סביבה, מדד ונקודת הקצה של הבריאות
  • Verify session identity: אימות טוקן הסשן מהשירותים שלכם לפני מתן גישה