איך להריץ את OpenCode על שרת VPS בצורה מאובטחת
למדו כיצד להתקין את סוכן הקידוד OpenCode על שרת VPS מרוחק. המדריך מפרט הגדרת משתמש ללא הרשאות root, שימוש ב-tmux לשמירת סשנים, ואבטחת ה-API key למניעת גישה לא מורשית.
מהו OpenCode ומה אתם מגדירים
OpenCode הוא סוכן בינה מלאכותית לכתיבת קוד בקוד פתוח, המיועד לשימוש בטרמינל. אתם מפעילים אותו בתוך תיקיית פרויקט, והוא קורא את הקוד שלכם, מציע שינויים, עורך קבצים ומריץ פקודות, והכל מתוך ממשק משתמש מבוסס טקסט (TUI). הכלי מופץ תחת רישיון MIT, הוא מתחבר ליותר מ-75 ספקי מודלים, ועם כ-165,000 כוכבים ב-GitHub נכון לאמצע שנת 2026, הוא סוכן כתיבת הקוד בקוד פתוח הפופולרי ביותר שקיים. כדי להריץ את OpenCode על שרת VPS, מתקינים אותו תחת משתמש ייעודי ללא הרשאות root, מציבים את ה-API key של המודל בקובץ פרטי, ומפעילים אותו בתוך 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, שכן מאגר הופך כל עריכה שגויה ל-git revert במקום לאובדן מידע.
התקנת OpenCode
הפרויקט מתעד שתי דרכי התקנה. סקריפט ההתקנה הוא הדרך המהירה ביותר, והרצתו כמשתמש opencode שומרת את כל הקבצים בתוך תיקיית הבית של אותו משתמש:
curl -fsSL https://opencode.ai/install | bashהנוהג המקובל של curl | bash תקף כאן כמו בכל מקום אחר: בשרת שחשוב לכם, הורידו את הסקריפט תחילה, קראו אותו, ורק אז הריצו אותו. לאחר ההתקנה, פתחו shell חדש כדי שהשינוי ב-PATH שביצע המתקין ייכנס לתוקף, ולאחר מכן בדקו את התגובה של הקובץ הבינארי:
opencode --versionאם אתם מעדיפים מנהל חבילות ו-Node.js כבר מותקן על השרת, נתיב ה-npm יתקין את אותו כלי ברמת המערכת כולה, מה שיציב את הקובץ הבינארי opencode ב-PATH עבור כל המשתמשים:
sudo npm install -g opencode-aiכך או כך, הבדיקה זהה: opencode --version מדפיס את מספר הגרסה. שגיאת command not found לאחר הרצת סקריפט ההתקנה משמעותה שה-shell הנוכחי עדיין לא קרא את ה-PATH המעודכן, לכן יש להתנתק ולהתחבר מחדש כמשתמש 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-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 מספק שני סוכנים שביניהם ניתן לעבור באמצעות מקש ה-Tab: הסוכן Build, שהוא ברירת המחדל עם גישה מלאה, והסוכן Plan, שמנטרל את היכולת לבצע שינויים. התחילו משימה חדשה ב-Plan, תנו לו לקרוא את הקוד ולהציע גישה, ועברו ל-Build רק לאחר שתסכימו עם התוכנית. על שרת, מעבר ראשוני במצב קריאה בלבד הוא ביטוח זול. Claude Code מציג את אותה החלטה כ"מצבי הרשאה" (permission modes) במקום כסוכנים, והמעבר שלו למצב אוטומטי כברירת מחדל הוא קריאת חובה אם אתם מריצים את שני הכלים, כיוון שהמצב שבו סשן מתחיל קובע כמה סוכן ללא השגחה רשאי לשנות.
רדיוס הפגיעה, בכנות
סוכן קידוד אינו פסיבי, לכן יש להבהיר מה הגדרה זו כוללת ומה לא. היא כוללת אפשרות לנזק לקבצים: המשתמש opencode הוא בעל ספריית הבית שלו בלבד, לכן עריכות ומחיקות נעצרות בגבול זה. היא כוללת חשיפת פרטי הזדהות: המפתח נמצא בקובץ אחד עם הרשאות 600, בחשבון אחד בלבד. היא אינה כוללת הגבלה על מה שהחשבון יכול לבצע באופן לגיטימי; אם ספריית הפרויקט מכילה פרטי הזדהות לפריסה (deploy) של סביבת ייצור, הסוכן יוכל להשתמש בהם. יש להרחיק פרטים אלו לחלוטין מחשבון הסוכן.
בניגוד לסוכן שער (gateway) כמו OpenClaw, OpenCode הוא תוכנית טרמינל אינטראקטיבית ולא daemon. הוא אינו פותח פורט להאזנה ואין לו שירות שרץ ברקע, לכן אין צורך לכתוב יחידת systemd או להגדיר חוקי firewall עבור הסוכן עצמו. ההכלה מתבצעת באמצעות חשבון המשתמש וספריית הפרויקט, וזו הסיבה שהחלק הראשון במדריך זה הוא החשוב ביותר.
השרת עצמו עדיין דורש תחזוקה סטנדרטית, שכן VPS המיועד לקידוד הוא עדיין שרת ציבורי: יש להשתמש בגישת SSH מבוססת מפתחות בלבד עם השבתת כניסת root, כפי שמוסבר ב-הקשחת SSH ב-VPS, להגדיר firewall במדיניות default-deny, ולבצע עדכונים שוטפים. כמו כן, יש לבחון את התוצרים של הסוכן. קראו את ה-diffs לפני ביצוע push, בדיוק כפי שהייתם קוראים pull request מתורם חדש, שכן אתם אלו שמבצעים את הפריסה בפועל.
לבסוף, הקפידו על עדכניות הכלי עצמו. OpenCode משחרר גרסאות לעיתים קרובות, ועדכונים כוללים תיקונים קריטיים עבור תוכנית שמריצה פקודות על השרת שלכם. עדכון מתבצע באותה דרך שבה התקנתם: הריצו שוב את סקריפט ההתקנה כמשתמש opencode, או הריצו את sudo npm update -g opencode-ai אם ההתקנה בוצעה דרך npm, ולאחר מכן אשרו את הגרסה החדשה באמצעות opencode --version. דקה של תחזוקה מדי פעם זולה יותר מאשר ניפוי שגיאות בהתנהגות שכבר תוקנה בגרסה בת חודשים.
FAQ
האם OpenCode יכול להשתמש במודל מקומי במקום ב-API בתשלום?
כן. OpenCode מתייחס לכל שרת התואם ל-OpenAI כאל ספק, לכן מודל שמופעל באמצעות Ollama על אותו ה-VPS יעבוד: הגדירו את הספק ב-opencode.json עם ה-baseURL המקומי ושם המודל כפי שהוא מדווח ב-Ollama. המגבלה היא חומרתית, שכן מודל ברמה מספקת לעבודה תכנותית דורש זיכרון משמעותי; לכן, התאימו את גודל השרת למודל לפני הורדתו.
כיצד אוכל להשאיר את OpenCode פעיל לאחר סגירת המחשב הנייד?
הריצו אותו בתוך tmux על ה-VPS. התחילו את הסוכן בסשן בעל שם באמצעות tmux new -s opencode, התנתקו ממנו בעזרת הצירוף Ctrl-b ולאחריו d, והסשן ימשיך לרוץ על השרת גם לאחר סיום חיבור ה-SSH שלכם. התחברו מחדש בכל עת בעזרת tmux attach -t opencode, והשיחה וכל משימה פעילה יישארו זמינים. אתחול של השרת יסיים את הסשן, לכן יש להתחיל סשן חדש לאחר reboot.
האם זה בטוח לאפשר ל-OpenCode להריץ פקודות על ה-VPS שלי?
זה ניתן לניהול אם תגבילו אותו. הקצו ל-OpenCode משתמש ייעודי ללא הרשאות sudo, שמרו את הפרויקטים שלו ב-git כך שכל עריכה תהיה הפיכה, אחסנו את ה-API key בקובץ עם הרשאות 600, והשתמשו בסוכן ה-Plan שלו למעבר ראשוני לקריאה בלבד לפני שתאפשרו לסוכן ה-Build לבצע שינויים. כך הסוכן יוכל להזיק רק למה שנמצא בבעלות החשבון שלו, ושאר השרת יישאר מוגן.
מה ההבדל בין OpenCode לבין Claude Code?
OpenCode הוא קוד פתוח (ברישיון MIT) ואגנוסטי לספקים, המתחבר ליותר מ-75 ספקי מודלים, כולל מודלים מקומיים, דרך ממשק אחד. Claude Code הוא סוכן הטרמינל של Anthropic, הבנוי סביב המודלים של Anthropic. אם אתם מחפשים כלי אחד שעובד מול ספקים רבים, או מחסנית (stack) מאוחסנת עצמית לחלוטין עם מודל מקומי, OpenCode הוא הפתרון המתאים; שניהם רצים היטב על VPS בתוך tmux עם אותה הגדרה של משתמש ללא הרשאות מיוחדות.