SSD Nodes Learn
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-07-24

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

מדריך להתקנת OpenCode על VPS באמצעות tmux ומשתמש unprivileged. למד איך לשמור על ה-API key מאובטח ולהבטיח שסשני העבודה לא ייقطعם בניתוק.

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

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

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

למה להריץ את OpenCode על VPS

סשן של סוכן קוד הוא ממושך. OpenCode עשוי להקדיש דקות רבות לביצוע refactor או להרצת סדרת בדיקות. אם הוא רץ על הלפטופ שלך, סגירת המכסה או ניתוק ה-Wi-Fi יקטעו את הסשן באמצע המשימה. ב-VPS בתוך tmux, הסוכן ממשיך לעבוד גם לאחר הניתוק, וניתן להתחבר מחדש (reattach) מאוחר יותר כדי לקרוא את התוצאות. זהו אותו דפוס כמו running Claude Code on a VPS with tmux, וזהו השיפור המשמעותי ביותר באיכות העבודה (quality-of-life) בעת מעבר של סוכן מהלפטופ.

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

אם אתה עדיין בוחר כלי, running a coding AI agent on a VPS משווה בין מגוון רחב של אפשרויות, כולל Aider ו-Goose.

הקצה ל-OpenCode משתמש ייעודי

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

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

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

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

Install OpenCode

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

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

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

opencode --version

אם אתם מעדיפים להשתמש במנהל חבילות (package manager) ו-Node.js כבר מותקן במערכת, נתיב ה-npm מתקין את אותה כלי ברמה המערכת (system-wide), מה שמוסיף את ה-binary של opencode ל-PATH עבור כל המשתמשים:

sudo npm install -g opencode-ai

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

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

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

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

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

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

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

Start OpenCode inside tmux

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

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

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

tmux attach -t opencode

הסשן, השיחה וכל משימה פעילה יישארו בדיוק במקום שבהם השארת אותם. המצב נשמר גם לאחר ניתוקים, אך לא לאחר הפעלה מחדש של השרת. לכן, לאחר reboot, יש להפעיל סשן tmux חדש באותו אופן.

הפנה אותו למודל

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

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

מודל מקומי עובד דרך אותו קובץ, מכיוון שניתן להגדיר כל שרת תואם 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 כולל שני סוכנים (agents) שניתן לעבור ביניהם באמצעות מקש ה-Tab: Build, הסוכן ברירת המחדל עם גישה מלאה, ו-Plan, שמבטל את היכולת לבצע שינויים. התחל משימה חדשה ב-Plan, אפשר לו לקרוא את הקוד ולהציע גישה, ועבור ל-Build רק לאחר שתסכים עם התוכנית. בשרת, שלב ראשון במצב Read-only מהווה ביטוח זול.

טווח הנזק (blast radius), בכנות

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

בניגוד לסוכן שמשמש כ-gateway כמו OpenClaw, ה-OpenCode הוא תוכנית terminal אינטראקטיבית ולא daemon. הוא אינו פותח פורט להאזנה (listening port) ואין לו שירות רץ לאורך זמן, לכן אין צורך בכתיבת unit של systemd ואין צורך לחסום פורט עבור הסוכן עצמו. ההגבלה מתבצעת באמצעות חשבון המשתמש וספריית הפרויקט, וזו הסיבה שהחלק הראשון של מדריך זה הוא החשוב ביותר.

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

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

FAQ

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

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

איך אני שומר על OpenCode פועל לאחר סגירת הלפטופ?

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

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

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

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

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