SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor

VPS पर OpenCode कैसे इंस्टॉल और सेटअप करें

OpenCode को VPS पर सुरक्षित रूप से चलाने का तरीका जानें। इस गाइड में unprivileged user के तहत इंस्टॉलेशन, tmux का उपयोग और API key को सुरक्षित रखने की पूरी प्रक्रिया दी गई है।

OpenCode क्या है, और आप क्या सेटअप कर रहे हैं

OpenCode टर्मिनल के लिए बनाया गया एक ओपन सोर्स AI कोडिंग एजेंट है। आप इसे किसी प्रोजेक्ट डायरेक्टरी के अंदर शुरू करते हैं, और यह आपके कोड को पढ़ता है, बदलावों का सुझाव देता है, फाइलों को एडिट करता है, और कमांड्स चलाता है, यह सब एक टर्मिनल यूजर इंटरफेस (TUI) से होता है। यह MIT लाइसेंस प्राप्त है, यह 75 से अधिक मॉडल प्रोवाइडर्स से जुड़ता है, और अक्टूबर 2026 तक लगभग 219,000 GitHub स्टार्स के साथ यह सबसे अधिक स्टार वाला ओपन सोर्स कोडिंग एजेंट है। VPS पर OpenCode चलाने के लिए, आप इसे एक समर्पित unprivileged यूजर के तहत इंस्टॉल करते हैं, अपनी मॉडल API key को एक प्राइवेट फाइल में रखते हैं, और इसे tmux के अंदर शुरू करते हैं ताकि आपका कनेक्शन कटने पर भी सेशन बना रहे। यह गाइड ठीक इसी क्रम में यही काम करती है।

नाम को लेकर एक बात भ्रम से बचाती है। कैनोनिकल रिपॉजिटरी anomalyco/opencode है, जिसे Anomaly टीम (जिसे पहले SST के नाम से जाना जाता था) द्वारा मेंटेन किया जाता है, और यह प्रोजेक्ट पहले sst/opencode पर स्थित था। opencode-ai/opencode नाम की एक पुरानी, असंबंधित रिपॉजिटरी भी GitHub पर मौजूद है, जिसे अब आर्काइव कर दिया गया है, इसलिए सुनिश्चित करें कि आप सही प्रोजेक्ट के डॉक्स पढ़ रहे हैं। आधिकारिक साइट opencode.ai है।

OpenCode को VPS पर क्यों चलाएं

Coding agent का session लंबा होता है। OpenCode किसी refactor या test suite पर काम करने में कई मिनट लगा सकता है, और यदि यह आपके laptop पर चलता है, तो ढक्कन बंद होने या Wi-Fi कनेक्शन टूटने से session बीच में ही खत्म हो जाता है। tmux के अंदर VPS पर, आपके disconnect होने के बाद भी agent काम करता रहता है, और आप बाद में reattach करके देख सकते हैं कि उसने क्या किया। यह tmux के साथ VPS पर Claude Code चलाने जैसा ही पैटर्न है, और किसी agent को laptop से हटाकर कहीं और ले जाने का यह सबसे बड़ा फायदा है।

दूसरा कारण placement है। एक VPS आपके द्वारा deploy किए गए code के करीब होता है: repository, build tools, test database, और अक्सर staging environment पहले से ही वहीं या उसके पास मौजूद होते हैं। जो agent code edit करता है और tests चलाता है, वह उस machine पर सबसे अच्छा काम करता है जहाँ वे tests वास्तव में चलते हैं। और चूंकि यह server आपके नियंत्रण में है, आप agent को जानबूझकर एक सीमित (contained) environment दे सकते हैं, जैसा कि अगले section में बताया गया है।

यदि आप अभी भी किसी tool का चुनाव कर रहे हैं, तो VPS पर coding AI agent चलाना Aider और Goose सहित व्यापक क्षेत्र की तुलना करता है।

OpenCode को अपना अलग user दें

यहाँ से शुरुआत करना सबसे उचित है: एक कोडिंग एजेंट फाइलों को एडिट करता है और कमांड्स चलाता है। यही उसका काम है और यही जोखिम भी। OpenCode बिल्ड्स, टेस्ट्स और वे सभी शेल कमांड्स चलाएगा जिनकी कार्य के लिए आवश्यकता होगी, और मॉडल का निर्णय अच्छा है लेकिन पूर्ण नहीं है। जिस अकाउंट से एजेंट चलता है, वही उस सीमा को निर्धारित करता है जहाँ तक कोई गलत कमांड पहुँच सकती है, इसलिए इसे root के रूप में न चलाएं, और इसे उस यूजर के रूप में भी न चलाएं जो सर्वर को एडमिनिस्टर करता है।

बैकग्राउंड एजेंट के विपरीत, OpenCode इंटरैक्टिव है, इसलिए इसके यूजर को एक वास्तविक शेल और एक होम डायरेक्टरी की आवश्यकता होती है:

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

जिन प्रोजेक्ट्स पर आप चाहते हैं कि यह काम करे, उन्हें /home/opencode के अंतर्गत रखें और उस यूजर द्वारा क्लोन करवाएं। इस अकाउंट को कोई sudo अधिकार न दें। यदि एजेंट कोई विनाशकारी कमांड चलाता है, तो वह केवल उसी को नष्ट कर सकता है जिसका स्वामित्व इस अकाउंट के पास है, जो कि unprivileged user के रूप में सर्विसेज चलाने के समान तर्क है। एक git रिपॉजिटरी के भीतर भी काम करें, और एजेंट को कोई कार्य सौंपने से पहले कमिट करें, क्योंकि कमिट किए गए काम में गलत बदलाव होने पर उसे git revert या git restore के जरिए ठीक किया जा सकता है, न कि वह हमेशा के लिए खो जाएगा। जो बदलाव आपने कभी कमिट नहीं किए, वे सुरक्षित नहीं हैं।

OpenCode इंस्टॉल करें

यह प्रोजेक्ट कई इंस्टॉलेशन विधियों का दस्तावेजीकरण करता है, जिनमें से दो सर्वर के लिए उपयुक्त हैं। इंस्टॉलेशन स्क्रिप्ट सबसे तेज़ तरीका है, और इसे opencode यूजर के रूप में चलाने से सब कुछ उस यूजर की होम डायरेक्टरी के भीतर ही रहता है:

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

सर्वर पर हमेशा की तरह curl | bash की सामान्य आदत अपनाएं: जिस सर्वर की आपको परवाह है, उस पर पहले स्क्रिप्ट डाउनलोड करें, उसे पढ़ें, और फिर चलाएं। इंस्टॉलेशन के बाद, एक नया शेल शुरू करें ताकि इंस्टॉलर द्वारा किए गए PATH बदलाव प्रभावी हो सकें, फिर बाइनरी की प्रतिक्रिया जांचें:

opencode --version

यदि आप पैकेज मैनेजर को प्राथमिकता देते हैं और Node.js पहले से ही सिस्टम पर मौजूद है, तो npm के माध्यम से इंस्टॉलेशन उसी टूल को npm के ग्लोबल प्रीफिक्स में इंस्टॉल कर देता है:

sudo npm install -g opencode-ai

सिस्टम-वाइड Node.js के साथ, वह प्रीफिक्स आमतौर पर /usr/local या /usr होता है, जिसकी bin डायरेक्टरी हर यूजर के PATH में होती है। वर्जन मैनेजर या कस्टम प्रीफिक्स बाइनरी को कहीं और रखता है, इसलिए यदि आप चाहते हैं कि opencode को opencode यूजर द्वारा खोजा जा सके, तो पहले npm prefix -g चलाएं।

दोनों ही स्थितियों में, जांच समान है: opencode --version एक वर्जन नंबर प्रिंट करता है। स्क्रिप्ट इंस्टॉलेशन के बाद command not found का मतलब है कि वर्तमान शेल ने अभी तक अपडेटेड PATH को नहीं पढ़ा है, इसलिए लॉग आउट करें और opencode यूजर के रूप में फिर से लॉग इन करें।

दोनों कमांड OpenCode 1.x लाइन को इंस्टॉल करते हैं, जो अभी भी रिलीज जारी करती है (16 अक्टूबर 2026 को 1.19.3), और यह गाइड उसी लाइन का वर्णन करती है। OpenCode 2 अब एक अलग इंस्टॉलेशन के रूप में उपलब्ध है, जिसे https://opencode.ai/v2/install या npm पैकेज @opencode/cli से प्राप्त किया जा सकता है, और यह अलग तरह से काम करता है: प्रति यूजर अकाउंट एक साझा बैकग्राउंड सर्वर सत्रों, अनुमतियों और टूल निष्पादन को नियंत्रित करता है, और टर्मिनल उससे जुड़ता है। इसका माइग्रेशन गाइड कहता है कि 2 इंस्टॉल करने से पहले पैकेज-मैनेज्ड 1.x इंस्टॉलेशन को हटा दें, क्योंकि दोनों opencode कमांड का उपयोग करते हैं।

API key को एक private file में रखें

OpenCode को आपके द्वारा उपयोग किए जाने वाले किसी भी model provider के लिए एक key की आवश्यकता होती है, और वह key आपके पैसे खर्च कर सकती है, इसलिए इसे password की तरह सुरक्षित रखें। एक ऐसी file बनाएँ जिसे केवल opencode user ही पढ़ सके, जिसका mode 600 हो, और key को वहाँ रखें। इसे commands में टाइप न करें, अन्यथा यह आपकी shell history में save हो जाएगी:

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

इसमें अपने provider का variable रखें, उदाहरण के लिए ANTHROPIC_API_KEY=... या आपके provider के लिए समकक्ष, क्योंकि OpenCode मानक provider environment variables को ही लेता है। agent शुरू करने से पहले file को अपनी shell में load करें:

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

OpenCode में एक interactive विकल्प भी है: TUI के अंदर /connect command आपको provider जोड़ने की प्रक्रिया समझाती है और credential को user के home में ~/.local/share/opencode/auth.json पर save कर देती है। यदि आप उस तरीके का उपयोग करते हैं, तो chmod 600 ~/.local/share/opencode/auth.json के साथ पुष्टि करें कि file private है। दोनों तरीके key को आपकी command lines से दूर रखते हैं; एक चुनें और उसी का पालन करें।

tmux के अंदर OpenCode शुरू करें

tmux ही वह टूल है जो VPS सेटअप को उपयोगी बनाता है, क्योंकि SSH कनेक्शन समाप्त होने पर भी tmux सेशन चलता रहता है। एक सेशन शुरू करें, अपने प्रोजेक्ट में जाएँ और एजेंट लॉन्च करें:

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

आपको TUI खुलती हुई दिखाई देगी, जिसमें नीचे एक प्रॉम्प्ट और इंटरफ़ेस में आपके प्रोजेक्ट का नाम होगा। इसे सामान्य भाषा में कोई कार्य दें, और यह फ़ाइलों को पढ़ना और बदलाव प्रस्तावित करना शुरू कर देगा। जब आप बाहर निकलना चाहें, तो Ctrl-b और फिर d दबाकर detach करें; आपका लैपटॉप बंद होने पर भी एजेंट काम करता रहेगा। बाद में फिर से जुड़ने के लिए इसका उपयोग करें:

tmux attach -t opencode

सेशन, बातचीत और कोई भी चल रहा कार्य बिल्कुल वहीं होगा जहाँ आपने उन्हें छोड़ा था। यह आपके डिस्कनेक्शन के बाद भी बना रहता है, लेकिन सर्वर रीबूट होने पर नहीं, इसलिए रीबूट के बाद आप उसी तरह एक नया tmux सेशन शुरू करें। आप एक दूसरी tmux विंडो खोलकर पहले वाले के साथ एक और एजेंट चलाने के लिए स्वतंत्र हैं, हालाँकि OpenCode सेशन एक-दूसरे से स्वतंत्र रहते हैं, जबकि एक ही मशीन पर Claude Code सेशन एक-दूसरे को संदेश भेज सकते हैं, जो काम को दो भागों में विभाजित करने का एक अलग तरीका है।

मॉडल को पॉइंट करें

OpenCode प्रदाता-अज्ञेयवादी (provider agnostic) है। यह 75 से अधिक प्रदाताओं का समर्थन करने के लिए AI SDK और Models.dev कैटलॉग का उपयोग करता है, इसलिए वही टूल Anthropic, OpenAI, Google और दर्जनों अन्य के साथ काम करता है, जिसमें स्थानीय सर्वर भी शामिल हैं। सबसे तेज़ तरीका TUI के अंदर /connect कमांड है, जो प्रदाताओं को सूचीबद्ध करता है और क्रेडेंशियल को संभालता है। ऐसे सेटअप के लिए जिसे आप कमिट और पुनरुत्पादित (reproduce) कर सकें, प्रोजेक्ट रूट में एक opencode.json रखें और मॉडल को provider/model-id के रूप में सेट करें:

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

ऐसा मॉडल चुनें जिसे आपका प्रदाता अभी भी सर्व कर रहा हो: Anthropic ने 15 June 2026 को claude-sonnet-4-20250514 को रिटायर कर दिया है, इसलिए जो कॉन्फ़िगरेशन अभी भी इसका नाम लेते हैं, वे विफल हो जाते हैं।

एक स्थानीय मॉडल उसी फ़ाइल के माध्यम से काम करता है, क्योंकि किसी भी OpenAI-संगत सर्वर को प्रदाता के रूप में घोषित किया जा सकता है। यदि आप उसी VPS पर Ollama के साथ कोई मॉडल सर्व करते हैं, तो कॉन्फ़िगरेशन इसके स्थानीय 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 directory) के बाहर फ़ाइल संपादन से इनकार करता है। हालाँकि, Plan पूरी तरह से read-only नहीं है, क्योंकि यह अभी भी शेल कमांड चला सकता है, और एक शेल कमांड फ़ाइलों को बदल सकता है। Plan में एक नया कार्य शुरू करें, इसे कोड पढ़ने दें और एक दृष्टिकोण प्रस्तावित करने दें, और जब आप योजना से सहमत हों तभी Build पर स्विच करें। यदि आप चाहते हैं कि वह पहला पास वास्तव में read-only हो, तो opencode.json में Plan के लिए संपादन और शेल कमांड को अस्वीकार करें, क्योंकि OpenCode deny को कार्रवाई को अवरुद्ध करने के रूप में मानता है, जबकि ask केवल आपसे अनुमोदन के लिए संकेत देता है:

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

सर्वर पर, एक पहला पास जो कुछ भी बदल नहीं सकता, वह एक सस्ता बीमा है। Claude Code उसी निर्णय को एजेंटों के बजाय अनुमति मोड (permission modes) के रूप में तैयार करता है, और डिफ़ॉल्ट के रूप में ऑटो मोड में इसका बदलाव पढ़ने योग्य है यदि आप दोनों टूल चलाते हैं, क्योंकि जिस मोड में सत्र शुरू होता है वह यह तय करता है कि एक बिना निगरानी वाला एजेंट कितना कुछ बदल सकता है।

ब्लास्ट रेडियस, स्पष्ट रूप से

एक कोडिंग एजेंट निष्क्रिय नहीं होता है, इसलिए स्पष्ट रूप से बताएं कि यह सेटअप क्या करता है और क्या नहीं। इसमें फाइल डैमेज शामिल है: opencode यूजर केवल अपनी होम डायरेक्टरी का मालिक है और उसके बाहर कुछ भी नहीं, इसलिए संपादन और विलोपन उसी सीमा पर रुक जाते हैं। इसमें क्रेडेंशियल एक्सपोजर शामिल है: की (key) मोड 600 के साथ एक फाइल में, एक ही अकाउंट में रहती है। इसमें यह शामिल नहीं है कि अकाउंट वैध रूप से क्या कर सकता है, इसलिए यदि प्रोजेक्ट डायरेक्टरी में प्रोडक्शन डिप्लॉय क्रेडेंशियल्स मौजूद हैं, तो एजेंट उनका उपयोग कर सकता है; उन्हें एजेंट के अकाउंट से पूरी तरह बाहर रखें।

OpenClaw जैसे गेटवे एजेंट के विपरीत, OpenCode 1.x एक इंटरैक्टिव टर्मिनल प्रोग्राम है, न कि डेमन। डिफ़ॉल्ट रूप से यह कोई लिसनिंग पोर्ट नहीं खोलता है (केवल --port, --hostname, या --mdns फ्लैग्स TUI को लिसन करने के लिए मजबूर करते हैं) और इसमें कोई लॉन्ग-रनिंग सर्विस नहीं होती है, इसलिए एजेंट के लिए कोई systemd यूनिट लिखने या पोर्ट को फायरवॉल करने की आवश्यकता नहीं है। OpenCode 2 अपने शेयर्ड बैकग्राउंड सर्वर के साथ इसे बदल देता है, इसलिए माइग्रेट करने से पहले इस बिंदु की दोबारा जांच करें। कंटेनमेंट (नियंत्रण) यूजर अकाउंट और प्रोजेक्ट डायरेक्टरी तक सीमित है, यही कारण है कि इस गाइड का पहला सेक्शन सबसे महत्वपूर्ण है।

इसके चारों ओर के घेरे को अभी भी मानक देखभाल की आवश्यकता है, क्योंकि एक कोडिंग VPS अभी भी एक पब्लिक सर्वर है: SSH hardening on a VPS के अनुसार रूट लॉगिन डिसेबल के साथ केवल-की (key-only) SSH, एक डिफ़ॉल्ट-डिनाई फायरवॉल, और नियमित अपडेट। और एजेंट जो प्रोड्यूस करता है उसकी समीक्षा करें। पुश करने से पहले इसके diffs को पढ़ें, ठीक वैसे ही जैसे आप किसी नए योगदानकर्ता (contributor) के पुल रिक्वेस्ट को पढ़ते हैं, क्योंकि परिणाम को डिप्लॉय आप ही करते हैं।

अंत में, टूल को अपडेट रखें। OpenCode अक्सर रिलीज होता है, और अपडेट में ऐसे फिक्स होते हैं जो आपके सर्वर पर कमांड चलाने वाले प्रोग्राम के लिए मायने रखते हैं। अपडेट करने के लिए उसी तरीके का उपयोग करें जिससे आपने इंस्टॉल किया था: opencode यूजर के रूप में इंस्टॉल स्क्रिप्ट को दोबारा चलाएं, या यदि आपने npm के माध्यम से इंस्टॉल किया है तो sudo npm update -g opencode-ai चलाएं, फिर opencode --version के साथ नए वर्जन की पुष्टि करें। दोनों आपको 1.x लाइन पर रखते हैं; OpenCode 2 पर जाना एक अलग माइग्रेशन है। समय-समय पर एक मिनट का रखरखाव, महीनों पुराने बिल्ड में पहले से ठीक की गई समस्याओं को डीबग करने से सस्ता है।

FAQ

क्या OpenCode भुगतान वाले API के बजाय स्थानीय मॉडल (local model) का उपयोग कर सकता है?

हाँ। OpenCode किसी भी OpenAI-compatible सर्वर को प्रदाता के रूप में स्वीकार करता है, इसलिए उसी VPS पर Ollama द्वारा संचालित मॉडल काम करता है: opencode.json में प्रदाता को स्थानीय baseURL और Ollama द्वारा रिपोर्ट किए गए मॉडल नाम के साथ घोषित करें। मुख्य चुनौती हार्डवेयर की है, क्योंकि वास्तविक कोडिंग कार्य के लिए सक्षम मॉडल को पर्याप्त मेमोरी की आवश्यकता होती है, इसलिए मॉडल डाउनलोड करने से पहले सर्वर का आकार मॉडल के अनुसार निर्धारित करें।

लैपटॉप बंद करने के बाद मैं OpenCode को कैसे चालू रखूँ?

इसे VPS पर tmux के अंदर चलाएँ। एजेंट को tmux new -s opencode के साथ एक नामित सत्र (named session) में शुरू करें, Ctrl-b और फिर d दबाकर detach करें, और आपका SSH कनेक्शन समाप्त होने के बाद भी सत्र सर्वर पर चलता रहेगा। किसी भी समय tmux attach -t opencode के साथ पुनः जुड़ें (reattach), और बातचीत तथा चल रहे कार्य वहीं मौजूद रहेंगे। सर्वर रीबूट होने पर सत्र समाप्त हो जाता है, इसलिए रीबूट के बाद एक नया सत्र शुरू करें।

क्या OpenCode को मेरे VPS पर कमांड चलाने देना सुरक्षित है?

यदि आप इसे नियंत्रित (contain) रखते हैं, तो यह प्रबंधनीय है। OpenCode को एक समर्पित unprivileged user दें जिसके पास sudo न हो, इसके प्रोजेक्ट्स को git में रखें और प्रत्येक कार्य से पहले commit करें ताकि गलत बदलाव को वापस (rollback) किया जा सके, API key को 600 मोड वाली फाइल में स्टोर करें, और किसी भी बदलाव से पहले इसके Plan एजेंट का उपयोग करें। यदि आप चाहते हैं कि पहला चरण केवल read-only हो, तो edits और shell commands को Plan के लिए deny पर सेट करें। इसके बाद एजेंट केवल उसी को नुकसान पहुँचा सकता है जिसका स्वामी उसका अपना अकाउंट है, और बाकी सर्वर सुरक्षित रहता है।

OpenCode और Claude Code में क्या अंतर है?

OpenCode ओपन सोर्स (MIT) है और प्रदाता-अज्ञेयवादी (provider agnostic) है, जो एक इंटरफ़ेस के माध्यम से 75 से अधिक मॉडल प्रदाताओं (स्थानीय सहित) से जुड़ता है। Claude Code एंथ्रोपिक का अपना टर्मिनल एजेंट है, जो एंथ्रोपिक के मॉडलों के इर्द-गिर्द बना है। यदि आप कई प्रदाताओं के लिए एक ही टूल चाहते हैं, या स्थानीय मॉडल के साथ पूरी तरह से self-hosted स्टैक चाहते हैं, तो OpenCode उपयुक्त है; दोनों ही VPS पर tmux के अंदर समान unprivileged-user सेटअप के साथ अच्छी तरह चलते हैं।