VPS-এ OpenCode সেটআপ করার নিয়ম
একটি VPS-এ OpenCode চালানোর জন্য unprivileged user ব্যবহার করা এবং tmux-এর মাধ্যমে session সচল রাখা জরুরি। আপনার API key সুরক্ষিত রাখতে এই গাইডটি দেখুন।
OpenCode কী এবং আপনি কী সেটআপ করছেন
OpenCode হলো টার্মিনালের জন্য তৈরি একটি open source AI coding agent। আপনি এটি একটি project directory-র ভেতরে চালু করেন। এটি আপনার code পড়তে পারে, পরিবর্তনের প্রস্তাব দিতে পারে, file এডিট করতে পারে এবং command চালাতে পারে—সবকিছুই একটি terminal user interface (TUI)-এর মাধ্যমে। এটি MIT licensed এবং এটি 75-এর বেশি model provider-এর সাথে কানেক্ট করা যায়। ২০২৬ সালের মাঝামাঝি সময়ে প্রায় 165,000 GitHub star সহ এটি বর্তমানে সবচেয়ে জনপ্রিয় open source coding agent। একটি VPS-এ OpenCode চালানোর জন্য, আপনাকে এটি একটি dedicated unprivileged user-এর অধীনে ইনস্টল করতে হবে, একটি private file-এ আপনার model API key রাখতে হবে এবং tmux-এর ভেতরে এটি চালু করতে হবে যাতে connection বিচ্ছিন্ন হয়ে গেলেও session সচল থাকে। এই গাইডটি ঠিক এই ধাপগুলোই অনুসরণ করবে।
নামকরণ সংক্রান্ত একটি বিষয় বিভ্রান্তি এড়াতে সাহায্য করবে। এর মূল repository হলো anomalyco/opencode, যা Anomaly team (আগে SST নামে পরিচিত ছিল) দ্বারা রক্ষণাবেক্ষণ করা হয়। আগে এই project-টি sst/opencode-এ ছিল। GitHub-এ opencode-ai/opencode নামে একটি পুরনো এবং সম্পর্কহীন repository রয়েছে, তাই আপনি সঠিক project-এর ডকুমেন্টেশন পড়ছেন কিনা তা নিশ্চিত করে নিন। অফিসিয়াল সাইট হলো opencode.ai।
কেন VPS-এ OpenCode চালানো উচিত
একটি coding agent session দীর্ঘ সময় ধরে চলতে পারে। OpenCode কোনো refactor বা test suite সম্পন্ন করতে অনেক মিনিট সময় নিতে পারে। আপনি যদি আপনার laptop-এ এটি চালান, তবে lid বন্ধ হয়ে গেলে বা Wi-Fi সংযোগ বিচ্ছিন্ন হয়ে গেলে মাঝপথে session-টি বন্ধ হয়ে যাবে। একটি VPS-এর ভেতরে tmux ব্যবহার করলে, আপনি disconnect করার পরেও agent-টি কাজ চালিয়ে যাবে। পরে আপনি পুনরায় reattach করে তার কাজের ফলাফল দেখতে পারবেন। এটি running Claude Code on a VPS with tmux এর মতোই একটি পদ্ধতি। আপনার laptop থেকে agent সরিয়ে নেওয়ার ক্ষেত্রে এটি সবচেয়ে বড় সুবিধা।
দ্বিতীয় কারণটি হলো placement। একটি VPS আপনার deploy করা code-এর খুব কাছাকাছি থাকে: repository, build tools, test database এবং প্রায়শই staging environment সেখানে বা তার পাশেই থাকে। যে agent code edit করে এবং test চালায়, সেটি সেই machine-এই সবচেয়ে ভালো কাজ করে যেখানে সেই test গুলো আসলে চলে। যেহেতু এই box একটি server যা আপনি নিয়ন্ত্রণ করেন, তাই আপনি ইচ্ছাকৃতভাবে agent-কে একটি contained environment দিতে পারেন, যা পরবর্তী section-এ আলোচনা করা হয়েছে।
আপনি যদি এখনও কোনো tool নির্বাচন না করে থাকেন, তবে running a coding AI agent on a VPS নিবন্ধটি Aider এবং Goose সহ অন্যান্য tool গুলোর তুলনা প্রদান করে।
OpenCode-এর জন্য আলাদা user তৈরি করুন
মূল বিষয়টি হলো: একটি coding agent ফাইল এডিট করে এবং command রান করে। এটিই তার কাজ, এবং এটিই ঝুঁকির কারণ। OpenCode বিভিন্ন build, test এবং কাজের প্রয়োজনে প্রয়োজনীয় shell command রান করবে। মডেলের সিদ্ধান্ত সঠিক হলেও তা নিখুঁত নয়। এজেন্ট যে account দিয়ে কাজ করে, একটি ভুল command সেই account-এর ক্ষমতা অনুযায়ী কাজ করতে পারে। তাই এটিকে root হিসেবে বা সার্ভার অ্যাডমিনিস্ট্রেটরের user হিসেবে রান করবেন না।
Background agent-এর মতো নয়, OpenCode হলো interactive; তাই এর user-এর জন্য একটি real shell এবং একটি home directory প্রয়োজন:
sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencodeযে project-গুলোতে এটি কাজ করবে, সেগুলো /home/opencode ডিরেক্টরিতে ওই user দিয়ে clone করে রাখুন। এই account-টিকে কোনো sudo rights দেবেন না। যদি এজেন্ট কোনো destructive command রান করে, তবে এটি শুধুমাত্র ওই নির্দিষ্ট account-এর মালিকানাধীন ফাইলগুলোকেই ক্ষতিগ্রস্ত করতে পারবে। running services as an unprivileged user এর ক্ষেত্রেও একই যুক্তি প্রযোজ্য। সবসময় একটি git repository-র ভেতরে কাজ করুন, কারণ একটি repository ভুল এডিট করা ফাইলটিকে git revert হিসেবে রূপান্তরিত করে, যা বড় কোনো ক্ষতি রোধ করে।
OpenCode ইনস্টল করুন
এই প্রজেক্টে দুটি ইনস্টলেশন পদ্ধতি রয়েছে। ইনস্টল স্ক্রিপ্ট ব্যবহার করা সবচেয়ে দ্রুততম পদ্ধতি। opencode ইউজার হিসেবে এটি চালালে সমস্ত ফাইল ওই ইউজারের home ডিরেক্টরির ভেতরেই থাকে:
curl -fsSL https://opencode.ai/install | bashঅন্যান্য সব ক্ষেত্রে যেমন প্রযোজ্য, এখানেও সেই সাধারণ curl | bash নিয়মটি প্রযোজ্য: কোনো গুরুত্বপূর্ণ সার্ভারে স্ক্রিপ্ট চালানোর আগে সেটি প্রথমে ডাউনলোড করুন এবং পড়ুন। ইনস্টল শেষ হওয়ার পর একটি নতুন shell শুরু করুন যাতে ইনস্টলারের করা PATH পরিবর্তনটি কার্যকর হয়। এরপর নিচের কমান্ড দিয়ে বাইনারিটি পরীক্ষা করুন:
opencode --versionআপনি যদি package manager পছন্দ করেন এবং সিস্টেমে Node.js আগে থেকেই ইনস্টল করা থাকে, তবে npm পদ্ধতিটি একই টুলটি system-wide ইনস্টল করবে। এর ফলে প্রতিটি ইউজারের জন্য opencode বাইনারিটি PATH-এ যুক্ত হবে:
sudo npm install -g opencode-aiউভয় ক্ষেত্রেই যাচাই করার পদ্ধতি একই: opencode --version একটি version number প্রিন্ট করবে। স্ক্রিপ্ট দিয়ে ইনস্টল করার পর যদি command not found দেখা যায়, তার মানে বর্তমান shell এখনো আপডেট করা PATH পড়তে পারেনি। সেক্ষেত্রে logout করে পুনরায় opencode ইউজার হিসেবে login করুন।
API key একটি private ফাইলে রাখুন
OpenCode-এর জন্য আপনার ব্যবহৃত model provider-এর একটি key প্রয়োজন। এই key ব্যবহার করে খরচ হতে পারে, তাই এটিকে password-এর মতো বিবেচনা করুন। শুধুমাত্র opencode user এটি পড়তে পারবে এমন একটি ফাইল তৈরি করুন যার mode হবে 600। key-টি সরাসরি command-এ টাইপ না করে এই ফাইলে রাখুন, যাতে এটি আপনার shell history-তে জমা না হয়:
install -m 600 /dev/null ~/opencode.env
nano ~/opencode.envফাইলটিতে আপনার provider-এর variable রাখুন, যেমন ANTHROPIC_API_KEY=... অথবা আপনার provider-এর সমতুল্য variable। OpenCode standard provider environment variables ব্যবহার করে। agent শুরু করার আগে ফাইলটি আপনার shell-এ load করুন:
set -a; source ~/opencode.env; set +aOpenCode-এর একটি interactive বিকল্পও আছে: TUI-এর ভেতরে /connect command ব্যবহার করে আপনি provider যোগ করতে পারেন। এটি credential-টি user-এর home ডিরেক্টরিতে ~/.local/share/opencode/auth.json ফাইলে সেভ করে। আপনি যদি এই পদ্ধতি ব্যবহার করেন, তবে chmod 600 ~/.local/share/opencode/auth.json দিয়ে নিশ্চিত করুন যে ফাইলটি private আছে। উভয় পদ্ধতিই key-টিকে command line থেকে দূরে রাখে; যেকোনো একটি পদ্ধতি বেছে নিন এবং সেটিই অনুসরণ করুন।
tmux-এর ভেতরে OpenCode শুরু করুন
tmux ব্যবহার করা VPS সেটআপের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ SSH connection বিচ্ছিন্ন হয়ে গেলেও tmux session চালু থাকে। একটি session শুরু করুন, আপনার project ফোল্ডারে প্রবেশ করুন এবং agentটি চালু করুন:
tmux new -s opencode
cd ~/my-project
opencodeআপনি নিচের দিকে একটি prompt এবং ইন্টারফেসে আপনার project name সহ TUI দেখতে পাবেন। সাধারণ ভাষায় একটি task দিন, এবং এটি ফাইল পড়া ও পরিবর্তনের প্রস্তাব দেওয়া শুরু করবে। কাজ শেষ হলে, Ctrl-b চেপে তারপর d চেপে detach করুন; এতে আপনার laptop বন্ধ থাকলেও agentটি কাজ চালিয়ে যাবে। পরে পুনরায় সংযুক্ত করতে ব্যবহার করুন:
tmux attach -t opencodeআপনার session, conversation এবং যেকোনো চলমান task ঠিক আগের মতোই থাকবে। এটি connection বিচ্ছিন্ন হওয়া সহ্য করতে পারে, কিন্তু server reboot সহ্য করতে পারে না। তাই reboot করার পর একইভাবে একটি নতুন tmux session শুরু করতে হবে।
একটি মডেল নির্দেশ করুন
OpenCode যেকোনো প্রোভাইডারের জন্য কাজ করতে পারে। এটি AI SDK এবং Models.dev catalog ব্যবহার করে যা 75-এর বেশি প্রোভাইডার সমর্থন করে। ফলে একই টুল Anthropic, OpenAI, Google এবং লোকাল সার্ভারসহ আরও ডজনখানেক প্রোভাইডারের সাথে কাজ করতে পারে। দ্রুততম পদ্ধতি হলো TUI-এর ভেতরে /connect কমান্ডটি ব্যবহার করা, যা প্রোভাইডারগুলোর তালিকা দেখায় এবং credential পরিচালনা করে। আপনি যদি একটি setup সংরক্ষণ এবং পুনরায় ব্যবহার করতে চান, তবে প্রজেক্ট রুট-এ একটি opencode.json রাখুন এবং মডেলটি provider/model-id হিসেবে সেট করুন:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}একটি লোকাল মডেল একই ফাইলের মাধ্যমে কাজ করে, কারণ যেকোনো OpenAI-compatible সার্ভারকে প্রোভাইডার হিসেবে ঘোষণা করা সম্ভব। আপনি যদি একই 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 key দিয়ে পরিবর্তন করা যায়: Build, যা ডিফল্ট এজেন্ট এবং এর পূর্ণ অ্যাক্সেস আছে, এবং Plan, যা পরিবর্তন করার ক্ষমতা বন্ধ করে দেয়। Plan মোডে একটি নতুন টাস্ক শুরু করুন, কোডটি পড়তে দিন এবং একটি পদ্ধতি প্রস্তাব করতে দিন; শুধুমাত্র যখন আপনি প্ল্যানটির সাথে একমত হবেন তখনই Build মোডে সুইচ করুন। সার্ভারের ক্ষেত্রে, প্রথমে read-only মোডে কাজ করা একটি নিরাপদ পদ্ধতি।
Blast radius সম্পর্কে স্পষ্ট ধারণা
একটি coding agent নিষ্ক্রিয় নয়, তাই এই setup কী করতে পারে বা পারে না তা স্পষ্টভাবে জানুন। এতে file damage হওয়ার ঝুঁকি আছে: opencode user শুধুমাত্র তার নিজস্ব home directory-এর মালিক, তাই সব edit এবং deletion সেই সীমার মধ্যেই সীমাবদ্ধ থাকবে। এতে credential exposure-এর ঝুঁকি আছে: key শুধুমাত্র একটি ফাইলে থাকে যার mode 600 এবং এটি একটি নির্দিষ্ট account-এ থাকে। এই setup-এর আওতাভুক্ত নয় ওই account-টি বৈধভাবে কী কী করতে পারে; তাই যদি project directory-তে production deploy credentials থাকে, তবে agent সেগুলো ব্যবহার করতে পারবে; তাই সেই credentials গুলো agent account থেকে সম্পূর্ণ আলাদা রাখুন।
OpenClaw-এর মতো gateway agent-এর বিপরীতে, OpenCode হলো একটি interactive terminal program, কোনো daemon নয়। এটি কোনো listening port খোলে না এবং কোনো long-running service হিসেবে চলে না, তাই এর জন্য কোনো systemd unit লেখার প্রয়োজন নেই এবং agent-এর জন্য কোনো port firewall করার প্রয়োজন নেই। এর containment হলো user account এবং project directory, তাই এই গাইডের প্রথম বিভাগটি সবচেয়ে গুরুত্বপূর্ণ।
এর চারপাশের সুরক্ষা ব্যবস্থায় সাধারণ সতর্কতা প্রয়োজন, কারণ একটি coding VPS একটি পাবলিক সার্ভার হিসেবেই গণ্য হয়: SSH hardening on a VPS অনুযায়ী root login বন্ধ করে শুধুমাত্র key-only SSH ব্যবহার করুন, একটি default-deny firewall ব্যবহার করুন এবং নিয়মিত update করুন। এছাড়া agent যা তৈরি করছে তা যাচাই করুন। কোড push করার আগে এর diffs গুলো পড়ুন, ঠিক যেভাবে আপনি একজন নতুন contributor-এর pull request পড়েন; কারণ আপনিই ফলাফলটি deploy করবেন।
পরিশেষে, tool টি সবসময় আপডেট রাখুন। OpenCode প্রায়ই release করা হয় এবং update-এ এমন সব fix থাকে যা আপনার সার্ভারে command run করা প্রোগ্রামের জন্য অত্যন্ত গুরুত্বপূর্ণ। আপডেট করার পদ্ধতি আপনার installation পদ্ধতির মতোই: opencode user হিসেবে install script টি পুনরায় চালান, অথবা npm দিয়ে install করে থাকলে sudo npm update -g opencode-ai চালান, তারপর opencode --version দিয়ে নতুন version নিশ্চিত করুন। মাঝে মাঝে সামান্য maintenance করা অনেক বেশি সাশ্রয়ী, যা কয়েক মাস আগের কোনো build-এ থাকা bug ফিক্স করার ঝামেলা থেকে আপনাকে বাঁচাবে।
FAQ
OpenCode কি পেইড API-এর পরিবর্তে লোকাল মডেল ব্যবহার করতে পারে?
হ্যাঁ। OpenCode যেকোনো OpenAI-compatible সার্ভারকে প্রোভাইডার হিসেবে গ্রহণ করে। তাই একই VPS-এ Ollama দ্বারা সার্ভ করা মডেল ব্যবহার করা সম্ভব: opencode.json ফাইলে লোকাল baseURL এবং Ollama দ্বারা রিপোর্ট করা মডেলের নাম দিয়ে প্রোভাইডারটি ঘোষণা করুন। এখানে প্রধান সীমাবদ্ধতা হলো হার্ডওয়্যার; কোডিং কাজের জন্য উপযুক্ত মডেলের জন্য প্রচুর মেমরি প্রয়োজন। তাই মডেলটি ডাউনলোড করার আগে সার্ভারের সক্ষমতা যাচাই করে নিন।
ল্যাপটপ বন্ধ করার পরেও কীভাবে OpenCode চালু রাখা যায়?
VPS-এ tmux ব্যবহার করে এটি চালান। tmux new -s opencode ব্যবহার করে একটি নির্দিষ্ট সেশনে এজেন্টটি শুরু করুন, তারপর Ctrl-b এবং d চেপে সেশনটি ডিটাচ (detach) করুন। আপনার SSH কানেকশন শেষ হওয়ার পরেও সার্ভারে সেশনটি চালু থাকবে। যেকোনো সময় tmux attach -t opencode দিয়ে পুনরায় কানেক্ট করতে পারবেন এবং আপনার কথোপকথন ও চলমান টাস্কগুলো আগের মতোই থাকবে। সার্ভার রিবুট করলে সেশনটি বন্ধ হয়ে যায়, তাই রিবুটের পর নতুন সেশন শুরু করুন।
OpenCode-কে আমার VPS-এ কমান্ড চালানোর অনুমতি দেওয়া কি নিরাপদ?
যদি আপনি এর পরিধি সীমাবদ্ধ রাখেন, তবে এটি নিরাপদ। OpenCode-এর জন্য sudo ক্ষমতা নেই এমন একটি ডেডিকেটেড আনপ্রিভিলেজড (unprivileged) ইউজার তৈরি করুন, প্রতিটি এডিট রিভার্সিবল রাখার জন্য প্রজেক্টগুলো git-এ রাখুন, API key-টি 600 মোড বিশিষ্ট ফাইলে সংরক্ষণ করুন এবং Build agent-কে কোনো পরিবর্তন করার অনুমতি দেওয়ার আগে Plan agent ব্যবহার করে রিড-অনলি (read-only) পাসে যাচাই করে নিন। এর ফলে এজেন্ট শুধুমাত্র তার নিজস্ব অ্যাকাউন্টের ফাইলগুলো পরিবর্তন করতে পারবে এবং সার্ভারের বাকি অংশ নিরাপদ থাকবে।
OpenCode এবং Claude Code-এর মধ্যে পার্থক্য কী?
OpenCode হলো একটি ওপেন সোর্স (MIT) এবং প্রোভাইডার অ্যাগনস্টিক (provider agnostic) টুল। এটি একটি ইন্টারফেসের মাধ্যমে লোকাল মডেলসহ ৭৫টিরও বেশি মডেল প্রোভাইডারের সাথে কানেক্ট হতে পারে। অন্যদিকে, Claude Code হলো Anthropic-এর নিজস্ব টার্মিনাল এজেন্ট, যা মূলত Anthropic-এর মডেলগুলোর জন্য তৈরি। আপনি যদি অনেক প্রোভাইডারের জন্য একটি টুল চান অথবা লোকাল মডেলসহ একটি সম্পূর্ণ সেলফ-হোস্টেড স্ট্যাক চান, তবে OpenCode উপযুক্ত; উভয়ই একই আনপ্রিভিলেজড-ইউজার সেটআপ এবং tmux ব্যবহার করে VPS-এ ভালোভাবে চালানো যায়।