Paano i-setup ang OpenCode sa VPS gamit ang tmux
Alamin ang tamang pag-install ng OpenCode sa iyong VPS. Sundin ang steps para sa unprivileged user setup, secure API key management, at paggamit ng tmux para sa tuloy-tuloy na session.
Ano ang OpenCode at kung ano ang iyong ise-set up
Ang OpenCode ay isang open source AI coding agent na binuo para sa terminal. Sinisimulan mo ito sa loob ng isang project directory, at binabasa nito ang iyong code, nagmumungkahi ng mga pagbabago, nag-e-edit ng mga file, at nagpapatakbo ng mga command, lahat mula sa isang terminal user interface (TUI). Ito ay lisensyado sa ilalim ng MIT, kumokonekta ito sa mahigit 75 model provider, at sa humigit-kumulang 165,000 GitHub stars noong kalagitnaan ng 2026, ito ang pinaka-starred na open source coding agent na umiiral. Para patakbuhin ang OpenCode sa isang VPS, i-install mo ito sa ilalim ng isang dedicated na unprivileged user, ilagay ang iyong model API key sa isang private file, at simulan ito sa loob ng tmux para manatiling buhay ang session kapag naputol ang iyong koneksyon. Ang gabay na ito ay eksaktong gagawin iyon, sa pagkakasunod-sunod na iyon.
Isang paalala sa pagpapangalan para maiwasan ang kalituhan. Ang canonical repository ay anomalyco/opencode, na pinapanatili ng Anomaly team (dating kilala bilang SST), at ang proyekto ay dating matatagpuan sa sst/opencode. Mayroon ding mas lumang repository na walang kaugnayan na pinangalanang opencode-ai/opencode sa GitHub, kaya tiyaking binabasa mo ang dokumentasyon ng tamang proyekto. Ang opisyal na site ay opencode.ai.
Bakit patatakbuhin ang OpenCode sa isang VPS
Ang session ng isang coding agent ay matagal. Maaaring gumugol ang OpenCode ng maraming minuto sa pag-refactor o pagtakbo ng test suite, at kung tatakbo ito sa iyong laptop, ang pagsasara ng takip o pagkaputol ng Wi-Fi ay magpapatigil sa session sa gitna ng gawain. Sa isang VPS sa loob ng tmux, patuloy na gagana ang agent kahit mag-disconnect ka, at maaari kang mag-reattach mamaya para basahin ang ginawa nito. Ito ang parehong pattern gaya ng pagtakbo ng Claude Code sa isang VPS gamit ang tmux, at ito ang pinakamalaking ginhawa sa paglipat ng isang agent mula sa iyong laptop.
Ang pangalawang dahilan ay ang lokasyon. Ang isang VPS ay malapit sa code na iyong dine-deploy: ang repository, ang build tools, ang test database, at madalas ay ang staging environment na naroon na o nasa tabi lang nito. Ang isang agent na nag-e-edit ng code at nagpapatakbo ng mga test ay pinakamahusay na gumagana sa machine kung saan talaga tumatakbo ang mga test na iyon. At dahil ang box ay isang server na kontrolado mo, maaari mong bigyan ang agent ng isang contained environment nang sadya, na siyang gagawin sa susunod na section.
Kung pinipili mo pa ang tool, ang pagtakbo ng coding AI agent sa isang VPS ay naghahambing sa mas malawak na field, kabilang ang Aider at Goose.
Bigyan ang OpenCode ng sarili nitong user
Narito ang tapat na panimulang punto: ang isang coding agent ay nag-e-edit ng mga file at nagpapatakbo ng mga command. Iyan ang trabaho nito, at iyan din ang panganib. Ang OpenCode ay magpapatakbo ng mga build, test, at anumang shell command na kailangan ng task, at ang paghuhusga ng model ay mahusay ngunit hindi perpekto. Ang account kung saan tumatakbo ang agent ang nagsisilbing limitasyon sa kung ano ang maaabot ng isang maling command, kaya huwag itong patakbuhin bilang root, at huwag itong patakbuhin gamit ang parehong user na nag-a-administer ng server.
Hindi tulad ng isang background agent, ang OpenCode ay interactive, kaya ang user nito ay nangangailangan ng totoong shell at home directory:
sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencodePanatilihin ang mga project na gusto mong pagtrabahuhan nito sa ilalim ng /home/opencode, na naka-clone ng user na iyon. Huwag bigyan ang account ng anumang sudo rights. Kung magpatakbo ang agent ng isang mapanirang command, ang kaya lang nitong sirain ay ang pagmamay-ari ng account na ito, na parehong lohika sa pagpapatakbo ng mga service bilang unprivileged user. Magtrabaho rin sa loob ng isang git repository, dahil ginagawang git revert ng isang repository ang anumang maling edit sa halip na mawala ang file.
Pag-install ng OpenCode
Ang proyekto ay may dalawang paraan ng pag-install. Ang install script ang pinakamabilis, at ang pagtakbo nito bilang opencode user ay pinapanatili ang lahat ng file sa loob ng home directory ng user na iyon:
curl -fsSL https://opencode.ai/install | bashAng nakasanayang curl | bash na gawi ay dapat sundin dito gaya ng kahit saan: sa server na mahalaga sa iyo, i-download muna ang script, basahin ito, at saka patakbuhin. Pagkatapos ng install, magbukas ng bagong shell para gumana ang pagbabago sa PATH na ginawa ng installer, pagkatapos ay i-check ang binary:
opencode --versionKung mas gusto mo ang package manager at may Node.js na sa server, ang npm route ang nag-i-install ng parehong tool nang system-wide, na naglalagay sa opencode binary sa PATH para sa lahat ng user:
sudo npm install -g opencode-aiSa alinmang paraan, pareho lang ang check: ang opencode --version ay naglalabas ng version number. Ang command not found pagkatapos ng script install ay nangangahulugang hindi pa nababasa ng kasalukuyang shell ang updated na PATH, kaya mag-log out at mag-log in muli bilang opencode user.
Ilagay ang API key sa isang pribadong file
Kailangan ng OpenCode ng key para sa anumang model provider na ginagamit mo, at ang key na ito ay maaaring magbawas ng iyong pera, kaya ituring itong parang password. Gumawa ng file na ang opencode user lang ang makakabasa, gamit ang mode 600, at ilagay ang key doon sa halip na i-type ito sa mga command kung saan mapupunta ito sa iyong shell history:
install -m 600 /dev/null ~/opencode.env
nano ~/opencode.envIlagay ang variable ng iyong provider sa loob nito, halimbawa ay ANTHROPIC_API_KEY=... o ang katumbas nito para sa iyong provider, dahil binabasa ng OpenCode ang mga standard environment variable ng provider. I-load ang file sa iyong shell bago mo simulan ang agent:
set -a; source ~/opencode.env; set +aMayroon ding interactive na alternatibo ang OpenCode: ang /connect command sa loob ng TUI ay gagabay sa iyo sa pagdaragdag ng provider at ise-save ang credential sa ~/.local/share/opencode/auth.json sa home directory ng user. Kung pipiliin mo ang paraang ito, kumpirmahin na pribado ang file gamit ang chmod 600 ~/.local/share/opencode/auth.json. Parehong paraan ang nagpapanatili sa key na wala sa iyong mga command line; pumili ng isa at manatiling consistent dito.
Simulan ang OpenCode sa loob ng tmux
Ang tmux ang dahilan kung bakit sulit ang pag-set up ng VPS, dahil nananatiling tumatakbo ang tmux session kahit maputol ang iyong SSH connection. Mag-start ng isa, pumunta sa iyong project, at ilunsad ang agent:
tmux new -s opencode
cd ~/my-project
opencodeDapat mong makita ang pagbukas ng TUI na may prompt sa ibaba at ang pangalan ng iyong project sa interface. Bigyan ito ng task gamit ang simpleng pananalita, at magsisimula na itong magbasa ng mga file at magmungkahi ng mga pagbabago. Kapag gusto mo nang umalis, mag-detach gamit ang Ctrl-b pagkatapos ay d, at patuloy na gagana ang agent kahit nakasara ang iyong laptop. Mag-reattach mamaya gamit ang:
tmux attach -t opencodeAng session, ang usapan, at anumang tumatakbong task ay nasa eksaktong lugar kung saan mo sila iniwan. Hindi ito naaapektuhan ng iyong mga disconnection, pero hindi ito nakakaligtas sa server reboot, kaya pagkatapos ng reboot ay magsisimula ka ng bagong tmux session sa parehong paraan. Walang pumipigil sa iyo na magbukas ng pangalawang tmux window at magpatakbo ng isa pang agent sa tabi ng una, bagama't ang mga OpenCode session ay nananatiling independent sa isa't isa, samantalang ang mga Claude Code session sa parehong box ay maaaring magpadalahan ng mensahe sa isa't isa, na isang ibang paraan ng paghahati ng trabaho sa dalawa.
Ituro ito sa isang model
Ang OpenCode ay provider agnostic. Ginagamit nito ang AI SDK at ang catalog ng Models.dev para suportahan ang mahigit 75 providers, kaya ang parehong tool ay gumagana sa Anthropic, OpenAI, Google, at dose-dosenang iba pa, kabilang ang mga local server. Ang mabilis na paraan ay ang /connect command sa loob ng TUI, na naglilista ng mga provider at humahawak sa credential. Para sa setup na maaari mong i-commit at i-reproduce, maglagay ng opencode.json sa project root at i-set ang model bilang provider/model-id:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}Ang isang local model ay gumagana gamit ang parehong file, dahil ang anumang OpenAI-compatible server ay maaaring ideklara bilang provider. Kung magpapatakbo ka ng model gamit ang Ollama sa parehong VPS, ituturo ng config ang local API nito, at ang pangalan ng model ay kung ano ang ipinapakita ng ollama list sa iyong box:
{
"$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" } }
}
}
}May isang built-in na habit na sulit i-adopt mula sa unang araw. Ang OpenCode ay may dalawang agent na pagpipilian mo gamit ang Tab key: Build, ang default agent na may full access, at Plan, na nagdi-disable sa kakayahang gumawa ng mga pagbabago. Magsimula ng bagong task sa Plan, hayaan itong basahin ang code at magmungkahi ng approach, at lumipat lamang sa Build kapag sumasang-ayon ka na sa plano. Sa isang server, ang read-only na unang pass ay murang insurance. Itinuturing ng Claude Code ang parehong desisyon bilang permission modes sa halip na mga agent, at ang paglipat nito sa auto mode bilang default ay sulit basahin kung ginagamit mo ang parehong tool, dahil ang mode kung saan nagsisimula ang session ang nagtatakda kung gaano karaming pagbabago ang maaaring gawin ng isang agent na hindi binabantayan.
Ang blast radius, sa totoo lang
Ang isang coding agent ay hindi passive, kaya sabihin nang malinaw kung ano ang sakop at hindi sakop ng setup na ito. Naglalaman ito ng panganib sa file damage: ang user na opencode ay nagmamay-ari lamang ng sarili nitong home directory at wala nang iba, kaya ang mga edit at deletion ay limitado sa boundary na iyon. Naglalaman ito ng panganib sa credential exposure: ang key ay nakatago sa isang file na may mode 600, sa loob ng isang account. Hindi nito sakop ang mga lehitimong kayang gawin ng account, kaya kung ang project directory ay naglalaman ng production deploy credentials, magagamit ang mga ito ng agent; panatilihing wala ang mga ito sa account ng agent.
Hindi tulad ng isang gateway agent gaya ng OpenClaw, ang OpenCode ay isang interactive terminal program at hindi isang daemon. Wala itong binubuksan na listening port at walang long-running service, kaya walang systemd unit na kailangang isulat at walang port na kailangang i-firewall para sa mismong agent. Ang containment ay nakadepende sa user account at sa project directory, kaya ang unang bahagi ng gabay na ito ang pinakamahalaga.
Kailangan pa rin ng standard na pag-iingat sa box, dahil ang isang coding VPS ay isa pa ring public server: key-only SSH na may disabled na root login, gaya ng nasa SSH hardening sa isang VPS, isang default-deny firewall, at regular na updates. Suriin din ang output ng agent. Basahin ang mga diff nito bago mo i-push, gaya ng pagbabasa mo sa isang pull request mula sa isang bagong contributor, dahil ikaw ang magde-deploy ng resulta.
Panghuli, panatilihing updated ang tool mismo. Madalas mag-release ang OpenCode, at ang mga update ay may dalang mga fix na mahalaga para sa isang program na nagpapatakbo ng mga command sa iyong server. Ang pag-update ay ginagawa sa parehong paraan ng pag-install: patakbuhin muli ang install script bilang user na opencode, o patakbuhin ang sudo npm update -g opencode-ai kung nag-install ka sa pamamagitan ng npm, pagkatapos ay kumpirmahin ang bagong bersyon gamit ang opencode --version. Ang isang minutong maintenance ngayon ay mas mura kaysa sa pag-debug ng behavior na naayos na ng build na ilang buwan na ang nakalilipas.
FAQ
Maaari bang gumamit ang OpenCode ng local model sa halip na paid API?
Oo. Itinuturing ng OpenCode ang anumang OpenAI-compatible server bilang provider, kaya gagana ang model na pinapatakbo ng Ollama sa parehong VPS: i-declare ang provider sa opencode.json gamit ang local baseURL at ang pangalan ng model na ini-report ng Ollama. Ang hamon dito ay ang hardware, dahil ang model na sapat ang galing para sa totoong coding work ay nangangailangan ng malaking memory, kaya i-size ang server para sa model bago ito i-download.
Paano ko pananatilihing tumatakbo ang OpenCode pagkatapos kong isara ang aking laptop?
Patakbuhin ito sa loob ng tmux sa VPS. Simulan ang agent sa isang named session gamit ang tmux new -s opencode, i-detach ito gamit ang Ctrl-b pagkatapos ay d, at mananatiling tumatakbo ang session sa server kahit matapos ang iyong SSH connection. Mag-reattach anumang oras gamit ang tmux attach -t opencode at naroon pa rin ang usapan at anumang tumatakbong task. Ang pag-reboot ng server ay magtatapos sa session, kaya magsimula ng bago pagkatapos ng reboot.
Ligtas bang hayaan ang OpenCode na magpatakbo ng mga command sa aking VPS?
Mapapamahalaan ito kung ikukulong mo ang access nito. Bigyan ang OpenCode ng nakalaang unprivileged user na walang sudo, panatilihin ang mga project nito sa git para ma-revert ang bawat edit, itago ang API key sa isang file na may mode 600, at gamitin ang Plan agent nito para sa read-only na unang pass bago mo hayaang magbago ng anuman ang Build agent. Ang agent ay makakasira lamang sa mga file na pagmamay-ari ng account nito, at ang natitirang bahagi ng server ay mananatiling ligtas.
Ano ang pagkakaiba ng OpenCode at Claude Code?
Ang OpenCode ay open source (MIT) at provider agnostic, na kumokonekta sa mahigit 75 model provider, kabilang ang mga local, sa pamamagitan ng iisang interface. Ang Claude Code ay sariling terminal agent ng Anthropic, na binuo sa paligid ng mga model ng Anthropic. Kung gusto mo ng iisang tool para sa maraming provider, o isang fully self-hosted stack na may local model, ang OpenCode ang angkop; parehong mahusay tumakbo ang mga ito sa isang VPS sa loob ng tmux gamit ang parehong unprivileged-user setup.