SSD Nodes Learn Hosting plans →
מדריכים Matt Connorמאת Matt Connor

איך להריץ את OpenCode על שרת VPS בצורה מאובטחת

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

מהו OpenCode ומה אתם מגדירים

OpenCode הוא סוכן קידוד מבוסס בינה מלאכותית בקוד פתוח המיועד לטרמינל. אתם מפעילים אותו בתוך תיקיית פרויקט, והוא קורא את הקוד שלכם, מציע שינויים, עורך קבצים ומריץ פקודות, הכל מתוך ממשק משתמש מבוסס טקסט (TUI). הוא מופץ תחת רישיון MIT, מתחבר ליותר מ-75 ספקי מודלים, ועם כ-219,000 כוכבים ב-GitHub נכון לאוקטובר 2026, הוא סוכן הקידוד בקוד פתוח הפופולרי ביותר שקיים. כדי להריץ את OpenCode על שרת VPS, עליכם להתקין אותו תחת משתמש ייעודי ללא הרשאות root, לשמור את מפתח ה-API של המודל בקובץ פרטי, ולהפעיל אותו בתוך tmux כדי שהסשן יישאר פעיל גם לאחר ניתוק החיבור. מדריך זה מבצע בדיוק את הפעולות הללו, לפי הסדר הזה.

הערה אחת בנוגע לשמות תמנע בלבול. המאגר הקנוני הוא anomalyco/opencode, המתוחזק על ידי צוות Anomaly (שנודע בעבר כ-SST), והפרויקט התארח בעבר ב-sst/opencode. קיים גם מאגר ישן ולא קשור בשם opencode-ai/opencode, שנמצא כעת בארכיון ב-GitHub, לכן ודאו שאתם קוראים את התיעוד של הפרויקט הנכון. האתר הרשמי הוא opencode.ai.

מדוע להריץ את OpenCode על גבי VPS

סשן של סוכן קידוד הוא ממושך. OpenCode עשוי להקדיש דקות ארוכות לביצוע Refactor או להרצת חבילת בדיקות, ואם הוא רץ על המחשב הנייד שלכם, סגירת המכסה או ניתוק מה־Wi-Fi יקטעו את הסשן באמצע המשימה. על גבי VPS בתוך tmux, הסוכן ממשיך לעבוד גם לאחר שתתנתקו, ותוכלו להתחבר מחדש מאוחר יותר כדי לבחון את התוצאות. זהו אותו דפוס פעולה כמו ב-הרצת Claude Code על גבי VPS עם tmux, וזהו השיפור המשמעותי ביותר באיכות החיים שנובע מהעברת סוכן מהמחשב הנייד שלכם.

הסיבה השנייה היא מיקום. שרת VPS קרוב לקוד שאתם מפיצים: המאגר (repository), כלי הבנייה, מסד הנתונים לבדיקות, ולעיתים קרובות גם סביבת ה-staging כבר נמצאים שם או בסמוך אליו. סוכן שעורך קוד ומריץ בדיקות מתפקד בצורה הטובה ביותר על המכונה שבה הבדיקות הללו רצות בפועל. ומכיוון שמדובר בשרת שבשליטתכם, באפשרותכם להעניק לסוכן סביבה מבודדת ומכוונת, כפי שמתואר בסעיף הבא.

אם אתם עדיין בשלב בחירת הכלי, הרצת סוכן AI לקידוד על גבי VPS משווה בין האפשרויות הרחבות יותר בשוק, כולל Aider ו-Goose.

הקצאת משתמש ייעודי עבור OpenCode

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

בניגוד לסוכן שרץ ברקע, OpenCode הוא אינטראקטיבי, ולכן המשתמש שלו זקוק ל-shell תקין ולתיקיית בית:

sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencode

שמרו את הפרויקטים שברצונכם שהסוכן יעבוד עליהם תחת /home/opencode, כשהם משוכפלים (cloned) על ידי אותו משתמש. אל תעניקו לחשבון זה הרשאות sudo. אם הסוכן יריץ פקודה הרסנית, הוא יוכל להרוס רק את מה שחשבון זה מחזיק בבעלותו; זהו אותו היגיון העומד בבסיס הרצת שירותים כמשתמש ללא הרשאות מיוחדות. עבדו בתוך מאגר git, ובצעו commit לפני שאתם מוסרים לסוכן משימה, שכן עריכה שגויה של עבודה שבוצע לה commit ניתנת לשחזור באמצעות git revert או git restore במקום להפוך לאובדן מידע. שינויים שלא ביצעתם להם commit אינם מוגנים.

התקנת OpenCode

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

curl -fsSL https://opencode.ai/install | bash

הנוהג המקובל של curl | bash תקף כאן כמו בכל מקום אחר: בשרת שחשוב לכם, הורידו את הסקריפט תחילה, קראו אותו, ורק אז הריצו אותו. לאחר ההתקנה, פתחו shell חדש כדי שהשינוי ב-PATH שביצע המתקין ייכנס לתוקף, ולאחר מכן בדקו שהקובץ הבינארי מגיב:

opencode --version

אם אתם מעדיפים מנהל חבילות ו-Node.js כבר מותקן על השרת, נתיב ה-npm יתקין את אותו כלי בתוך ה-prefix הגלובלי של npm:

sudo npm install -g opencode-ai

עם התקנת Node.js כלל-מערכתית, ה-prefix הזה הוא בדרך כלל /usr/local או /usr, כאשר התיקייה bin שלהם נמצאת ב-PATH של כל משתמש. מנהל גרסאות או prefix מותאם אישית יציבו את הקובץ הבינארי במקום אחר, לכן הריצו את npm prefix -g תחילה אם אתם צריכים ש-opencode יזוהה על ידי המשתמש opencode.

כך או כך, הבדיקה זהה: opencode --version מדפיס מספר גרסה. שגיאת command not found לאחר התקנה באמצעות סקריפט משמעותה שה-shell הנוכחי עדיין לא קרא את ה-PATH המעודכן, לכן התנתקו והתחברו מחדש כמשתמש opencode.

שתי הפקודות מתקינות את סדרת הגרסאות 1.x של OpenCode, שעדיין מוציאה גרסאות (1.19.3 ב-16 באוקטובר 2026), ומדריך זה מתאר סדרה זו. OpenCode 2 זמין כעת כהתקנה נפרדת, מ-https://opencode.ai/v2/install או מחבילת ה-npm @opencode/cli, והוא עובד אחרת: שרת רקע משותף לכל חשבון משתמש מנהל את הסשנים, ההרשאות והרצת הכלים, והטרמינל מתחבר אליו. מדריך ההגירה שלו ממליץ להסיר התקנת 1.x שבוצעה דרך מנהל חבילות לפני התקנת גרסה 2, כיוון ששתיהן משתמשות בפקודה opencode.

שמירת מפתח ה-API בקובץ פרטי

OpenCode זקוק למפתח עבור ספק המודל שבו אתם משתמשים, ומכיוון שמפתח זה עלול להוביל לחיובים כספיים, יש להתייחס אליו כאל סיסמה. צרו קובץ שרק המשתמש opencode יכול לקרוא, עם הרשאות 600, ושמרו בו את המפתח במקום להקליד אותו ישירות בפקודות, שם הוא עלול להישמר בהיסטוריית ה-shell שלכם:

install -m 600 /dev/null ~/opencode.env
nano ~/opencode.env

הכניסו לתוכו את המשתנה של הספק שלכם, לדוגמה ANTHROPIC_API_KEY=... או המקביל לו עבור הספק שלכם, שכן OpenCode מזהה את משתני הסביבה הסטנדרטיים של ספקי המודלים. טענו את הקובץ לתוך ה-shell לפני הפעלת הסוכן:

set -a; source ~/opencode.env; set +a

ל-OpenCode יש גם חלופה אינטראקטיבית: הפקודה /connect בתוך ה-TUI תדריך אתכם בתהליך הוספת ספק ותשמור את פרטי האימות ב-~/.local/share/opencode/auth.json בתיקיית הבית של המשתמש. אם בחרתם בדרך זו, ודאו שהקובץ פרטי באמצעות chmod 600 ~/.local/share/opencode/auth.json. שתי הדרכים מונעות מהמפתח להופיע בשורות הפקודה שלכם; בחרו באחת והקפידו על עקביות.

הפעלת OpenCode בתוך tmux

הכלי tmux הוא מה שהופך את הגדרת ה-VPS לכדאית, כיוון שסשן tmux ממשיך לרוץ גם לאחר סיום חיבור ה-SSH. הפעילו סשן, עברו לתיקיית הפרויקט שלכם, והריצו את הסוכן:

tmux new -s opencode
cd ~/my-project
opencode

אתם אמורים לראות את ה-TUI נפתח עם שורת פקודה בתחתית ושם הפרויקט שלכם בממשק. תנו לו משימה בשפה חופשית, והוא יתחיל לקרוא קבצים ולהציע שינויים. כשאתם רוצים לצאת, בצעו detach בעזרת Ctrl-b ולאחר מכן d; הסוכן ימשיך לעבוד גם כשהמחשב הנייד שלכם סגור. חזרו לסשן מאוחר יותר בעזרת:

tmux attach -t opencode

הסשן, השיחה וכל משימה שרצה יישארו בדיוק במקום שבו השארתם אותם. מצב זה שורד ניתוקים מהשרת, אך לא אתחול שלו; לכן, לאחר reboot עליכם להתחיל סשן tmux חדש באותה הדרך. שום דבר לא מונע מכם לפתוח חלון tmux שני ולהריץ סוכן נוסף לצד הראשון, אם כי סשנים של OpenCode נשארים בלתי תלויים זה בזה, בעוד ש-סשנים של Claude Code על אותו שרת יכולים לשלוח הודעות זה לזה, מה שמהווה דרך שונה לפיצול משימה לשניים.

חיבור למודל

OpenCode הוא אגנוסטי לספקי מודלים. הוא משתמש ב-AI SDK ובקטלוג Models.dev כדי לתמוך ביותר מ-75 ספקים, כך שאותו כלי עובד עם Anthropic, OpenAI, Google ועשרות אחרים, כולל שרתים מקומיים. הדרך המהירה היא פקודת /connect בתוך ה-TUI, שמציגה רשימת ספקים ומטפלת בפרטי ההתחברות. עבור הגדרה שניתן לשמור ב-commit ולשחזר, צרו קובץ opencode.json בשורש הפרויקט והגדירו את המודל כ-provider/model-id:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-5-5"
}

בחרו מודל שהספק שלכם עדיין מציע: Anthropic הוציאה משימוש את claude-sonnet-4-20250514 ב-15 ביוני 2026, לכן קובצי תצורה שעדיין מציינים אותו ייכשלו.

מודל מקומי עובד דרך אותו קובץ, כיוון שניתן להגדיר כל שרת תואם OpenAI כספק. אם אתם מריצים מודל עם Ollama על אותו שרת VPS, קובץ התצורה יצביע על ה-API המקומי שלו, ושם המודל יהיה מה ש-ollama list מציג על המכונה שלכם:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": { "baseURL": "http://127.0.0.1:11434/v1" },
      "models": { "your-model-name": { "name": "Local coding model" } }
    }
  }
}

כדאי לאמץ נוהג מובנה אחד מהיום הראשון. OpenCode כולל שני סוכנים שביניהם ניתן לעבור באמצעות מקש ה-Tab: סוכן Build, שהוא סוכן ברירת המחדל עם גישה מלאה, וסוכן Plan, סוכן מוגבל לניתוח שמסרב לערוך קבצים מחוץ לתיקיית ה-plan שלו ללא אישור. סוכן Plan אינו "לקריאה בלבד" במובן המוחלט, כיוון שהוא עדיין יכול להריץ פקודות shell, ופקודת shell יכולה לשנות קבצים. התחילו משימה חדשה ב-Plan, תנו לו לקרוא את הקוד ולהציע גישה, ועברו ל-Build רק כאשר אתם מסכימים עם התוכנית. אם אתם רוצים שהשלב הראשון יהיה באמת לקריאה בלבד, חסמו עריכות ופקודות shell עבור Plan ב-opencode.json, כיוון ש-OpenCode מתייחס ל-deny כחסימת הפעולה, בעוד ש-ask רק מבקש מכם אישור:

{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "plan": {
      "permission": { "edit": "deny", "bash": "deny" }
    }
  }
}

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

היקף הנזק הפוטנציאלי

סוכן כתיבת קוד אינו פסיבי, לכן יש להבהיר מה הגדרה זו כוללת ומה לא. היא כוללת אפשרות לנזק לקבצים: המשתמש opencode הוא הבעלים של ספריית הבית שלו בלבד, לכן עריכות ומחיקות נעצרות בגבול זה. היא כוללת חשיפת הרשאות: מפתח הגישה נמצא בקובץ אחד עם הרשאות 600, תחת חשבון אחד. היא אינה כוללת את מה שהחשבון מורשה לבצע בפועל; אם ספריית הפרויקט מכילה הרשאות פריסה (deploy) לסביבת ייצור, הסוכן יוכל להשתמש בהן. יש להרחיק הרשאות אלו לחלוטין מחשבון הסוכן.

בניגוד לסוכן שער (gateway agent) כמו OpenClaw, התוכנה OpenCode 1.x היא תוכנית טרמינל אינטראקטיבית, ולא daemon. כברירת מחדל היא אינה פותחת פורט להאזנה (רק הדגלים --port, --hostname או --mdns גורמים ל-TUI להאזין) ואין לה שירות שרץ ברקע, לכן אין צורך לכתוב יחידת systemd או להגדיר חוקי firewall עבור הסוכן עצמו. OpenCode 2 משנה זאת עם שרת רקע משותף, לכן יש לבדוק נקודה זו מחדש לפני ביצוע הגירה. ההגבלה מתבצעת ברמת חשבון המשתמש וספריית הפרויקט, וזו הסיבה שהחלק הראשון במדריך זה הוא החשוב ביותר.

השרת המארח עדיין דורש טיפול סטנדרטי, שכן VPS המשמש לכתיבת קוד הוא עדיין שרת ציבורי: גישת SSH באמצעות מפתחות בלבד עם השבתת כניסת root, כפי שמוסבר ב-הקשחת SSH ב-VPS, הגדרת firewall במדיניות default-deny, ועדכונים שוטפים. כמו כן, יש לבחון את מה שהסוכן מייצר. קראו את ה-diffs לפני שאתם מבצעים push, בדיוק כפי שהייתם קוראים pull request מתורם חדש, שכן אתם אלו שמבצעים את הפריסה בפועל.

לבסוף, שמרו על הכלי עצמו מעודכן. OpenCode משחררת גרסאות לעיתים קרובות, ועדכונים כוללים תיקונים קריטיים לתוכנית שמריצה פקודות על השרת שלכם. עדכון מתבצע באותה דרך שבה התקנתם: הריצו שוב את סקריפט ההתקנה כמשתמש opencode, או הריצו את sudo npm update -g opencode-ai אם התקנתם דרך npm, ולאחר מכן אשרו את הגרסה החדשה באמצעות opencode --version. שתי הדרכים ישאירו אתכם בקו הגרסאות 1.x; המעבר ל-OpenCode 2 הוא תהליך הגירה נפרד. דקה של תחזוקה מדי פעם זולה יותר מאשר ניפוי שגיאות בהתנהגות שכבר תוקנה בגרסה ישנה.

FAQ

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

כן. OpenCode מתייחס לכל שרת התואם ל-OpenAI כספק, לכן מודל שמוגש על ידי Ollama באותו ה-VPS יעבוד: הגדירו את הספק ב-opencode.json עם ה-baseURL המקומי ושם המודל כפי ש-Ollama מדווח עליו. המגבלה היא חומרה, כיוון שמודל ברמה מספקת לעבודה תכנותית אמיתית דורש זיכרון משמעותי; לכן, התאימו את גודל השרת למודל לפני הורדתו.

כיצד אוכל להשאיר את OpenCode פועל לאחר סגירת המחשב הנייד?

הריצו אותו בתוך tmux על ה-VPS. התחילו את הסוכן בתוך session בעל שם עם tmux new -s opencode, התנתקו ממנו באמצעות Ctrl-b ולאחר מכן d, וה-session ימשיך לרוץ על השרת גם לאחר סיום חיבור ה-SSH שלכם. התחברו מחדש בכל עת עם tmux attach -t opencode, והשיחה וכל משימה פעילה יישארו שם. אתחול של השרת יסיים את ה-session, לכן התחילו אחד חדש לאחר ה-reboot.

האם זה בטוח לתת ל-OpenCode להריץ פקודות על ה-VPS שלי?

זה ניתן לניהול אם תגבילו אותו. הקצו ל-OpenCode משתמש ייעודי ללא הרשאות sudo, שמרו את הפרויקטים שלו ב-git ובצעו commit לפני כל משימה כדי שניתן יהיה לבטל עריכה שגויה, אחסנו את ה-API key בקובץ עם הרשאות 600, והשתמשו בסוכן ה-Plan שלו למעבר ראשוני לפני שאתם מאפשרים לסוכן ה-Build לשנות משהו, כאשר עריכות ופקודות shell מוגדרות ל-deny עבור ה-Plan אם ברצונכם שהמעבר הזה יהיה לקריאה בלבד. הסוכן יוכל להזיק רק למה שנמצא בבעלות החשבון שלו, ושאר השרת יישאר מחוץ להישג ידו.

מה ההבדל בין OpenCode לבין Claude Code?

OpenCode הוא קוד פתוח (ברישיון MIT) ואגנוסטי לספקים, המתחבר ליותר מ-75 ספקי מודלים, כולל מודלים מקומיים, דרך ממשק אחד. Claude Code הוא סוכן הטרמינל של Anthropic, הבנוי סביב המודלים של Anthropic. אם אתם מחפשים כלי אחד שעובד מול ספקים רבים, או stack מאוחסן עצמית לחלוטין עם מודל מקומי, OpenCode הוא הפתרון המתאים; שניהם רצים היטב על VPS בתוך tmux עם אותה הגדרה של משתמש ללא הרשאות מיוחדות.