SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-29

Cara Pasang OpenCode pada VPS dengan Selamat

Ketahui cara memasang ejen pengekodan OpenCode pada VPS menggunakan pengguna tanpa keistimewaan dan tmux. Lindungi kunci API anda serta pastikan sesi kekal aktif secara stabil.

Apakah OpenCode dan perkara yang anda sediakan

OpenCode ialah ejen pengekodan AI sumber terbuka yang dibina untuk terminal. Anda memulakannya di dalam direktori projek, dan ia membaca kod anda, mencadangkan perubahan, menyunting fail, serta menjalankan arahan, semuanya daripada antara muka pengguna terminal (TUI). Ia dilesenkan di bawah MIT, bersambung dengan lebih daripada 75 penyedia model, dan dengan kira-kira 165,000 bintang GitHub setakat pertengahan 2026, ia merupakan ejen pengekodan sumber terbuka yang paling banyak mendapat bintang. Untuk menjalankan OpenCode pada VPS, anda memasangnya di bawah pengguna tanpa keistimewaan yang khusus, meletakkan kunci API model anda dalam fail peribadi, dan memulakannya di dalam tmux supaya sesi tersebut kekal apabila sambungan anda terputus. Panduan ini melakukan perkara tersebut, mengikut urutan itu.

Satu nota penamaan dapat mengelakkan kekeliruan. Repositori kanonikal ialah anomalyco/opencode, yang diselenggara oleh pasukan Anomaly (dahulunya dikenali sebagai SST), dan projek tersebut pernah berada di sst/opencode. Repositori lama yang tidak berkaitan bernama opencode-ai/opencode juga wujud di GitHub, jadi pastikan anda membaca dokumentasi projek yang betul. Laman rasmi ialah opencode.ai.

Mengapa menjalankan OpenCode pada VPS

Sesi ejen pengekodan mengambil masa yang lama. OpenCode boleh menghabiskan masa beberapa minit untuk melakukan refactor atau menjalankan suite ujian, dan jika ia berjalan pada komputer riba anda, penutupan skrin atau sambungan Wi-Fi yang terputus akan mematikan sesi tersebut di tengah tugasan. Pada VPS di dalam tmux, ejen akan terus berfungsi selepas anda terputus sambungan, dan anda boleh menyambung semula kemudian untuk melihat apa yang telah dilakukannya. Ini adalah corak yang sama seperti menjalankan Claude Code pada VPS dengan tmux, dan ia merupakan peningkatan kualiti hidup yang paling ketara apabila memindahkan ejen dari komputer riba anda.

Sebab kedua ialah penempatan. VPS berada dekat dengan kod yang anda deploy: repositori, alat binaan, pangkalan data ujian, dan selalunya persekitaran staging yang sudah tersedia di sana atau bersebelahannya. Ejen yang menyunting kod dan menjalankan ujian berfungsi dengan paling baik pada mesin tempat ujian tersebut benar-benar dijalankan. Dan kerana mesin tersebut adalah pelayan yang anda kawal, anda boleh memberikan ejen persekitaran yang terkawal secara khusus, seperti yang dilakukan dalam bahagian seterusnya.

Jika anda masih memilih alat, menjalankan ejen AI pengekodan pada VPS membandingkan bidang yang lebih luas, termasuk Aider dan Goose.

Berikan OpenCode penggunanya sendiri

Berikut adalah titik permulaan yang jujur: ejen pengekodan menyunting fail dan menjalankan arahan. Itulah tugasnya, dan ia juga merupakan risikonya. OpenCode akan menjalankan binaan, ujian, dan apa sahaja arahan shell yang diperlukan oleh tugasan tersebut, dan pertimbangan model adalah baik tetapi tidak sempurna. Akaun yang digunakan oleh ejen tersebut merupakan had maksimum bagi apa yang boleh dicapai oleh arahan yang berniat jahat, jadi jangan jalankannya sebagai root, dan jangan jalankannya sebagai pengguna yang sama yang mentadbir pelayan.

Tidak seperti ejen latar belakang, OpenCode bersifat interaktif, jadi penggunanya memerlukan shell sebenar dan direktori home:

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

Simpan projek yang anda mahu ia kerjakan di bawah /home/opencode, yang diklon oleh pengguna tersebut. Jangan berikan akaun itu sebarang hak sudo. Jika ejen menjalankan arahan yang merosakkan, ia hanya boleh memusnahkan apa yang dimiliki oleh akaun ini sahaja, yang merupakan alasan yang sama seperti menjalankan servis sebagai pengguna tanpa keistimewaan. Bekerja di dalam repositori git juga, kerana repositori menukarkan sebarang suntingan yang salah menjadi git revert dan bukannya kehilangan data.

Memasang OpenCode

Projek ini mendokumentasikan dua cara pemasangan. Skrip pemasangan adalah cara terpantas, dan menjalankannya sebagai pengguna opencode memastikan segala-galanya disimpan di dalam direktori home pengguna tersebut:

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

Tabiat curl | bash yang biasa digunakan di sini sama seperti di tempat lain: pada pelayan yang anda utamakan, muat turun skrip tersebut terlebih dahulu, baca kandungannya, kemudian jalankannya. Selepas pemasangan, mulakan shell baharu supaya perubahan PATH yang dibuat oleh pemasang berkuat kuasa, kemudian semak jawapan binari tersebut:

opencode --version

Jika anda lebih gemar menggunakan pengurus pakej dan Node.js sudah tersedia pada mesin tersebut, kaedah npm akan memasang alat yang sama untuk seluruh sistem, yang meletakkan binari opencode pada PATH untuk setiap pengguna:

sudo npm install -g opencode-ai

Walau apa pun caranya, semakannya adalah sama: opencode --version akan memaparkan nombor versi. Ralat command not found selepas pemasangan skrip bermakna shell semasa belum membaca PATH yang dikemas kini, jadi log keluar dan log masuk semula sebagai pengguna opencode.

Simpan kunci API dalam fail peribadi

OpenCode memerlukan kunci untuk mana-mana penyedia model yang anda gunakan, dan kunci tersebut boleh membelanjakan wang anda, jadi layan ia seperti kata laluan. Cipta fail yang hanya boleh dibaca oleh pengguna opencode, dengan mod 600, dan simpan kunci tersebut di sana daripada menaipnya ke dalam arahan yang akan menyebabkannya tersimpan dalam sejarah shell anda:

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

Letakkan pemboleh ubah penyedia anda di dalamnya, contohnya ANTHROPIC_API_KEY=... atau yang setara untuk penyedia anda, kerana OpenCode mengambil pemboleh ubah persekitaran penyedia standard. Muatkan fail tersebut ke dalam shell anda sebelum anda memulakan ejen:

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

OpenCode juga mempunyai alternatif interaktif: arahan /connect di dalam TUI akan membimbing anda menambah penyedia dan menyimpan kelayakan tersebut ke ~/.local/share/opencode/auth.json dalam direktori home pengguna. Jika anda menggunakan laluan tersebut, sahkan fail itu adalah peribadi dengan chmod 600 ~/.local/share/opencode/auth.json. Kedua-dua laluan memastikan kunci tidak terdedah dalam baris arahan anda; pilih satu dan kekal konsisten.

Mulakan OpenCode di dalam tmux

tmux menjadikan persediaan VPS berbaloi kerana sesi tmux terus berjalan apabila sambungan SSH anda tamat. Mulakan satu sesi, masuk ke dalam direktori projek anda, dan lancarkan ejen tersebut:

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

Anda sepatutnya melihat TUI dibuka dengan prompt di bahagian bawah dan nama projek anda pada antara muka tersebut. Berikan tugasan dalam bahasa biasa, dan ia akan mula membaca fail serta mencadangkan perubahan. Apabila anda ingin keluar, detach dengan menekan Ctrl-b kemudian d, dan ejen tersebut akan terus bekerja walaupun komputer riba anda ditutup. Sambung semula kemudian dengan:

tmux attach -t opencode

Sesi, perbualan, dan sebarang tugasan yang sedang berjalan berada tepat di tempat anda meninggalkannya. Ini bertahan daripada gangguan sambungan anda, tetapi tidak daripada but semula pelayan, jadi selepas but semula anda perlu memulakan sesi tmux baharu dengan cara yang sama. Tiada apa yang menghalang anda daripada membuka tetingkap tmux kedua dan menjalankan ejen lain di samping yang pertama, walaupun sesi OpenCode kekal bebas antara satu sama lain, manakala sesi Claude Code pada mesin yang sama boleh menghantar mesej antara satu sama lain, yang merupakan cara berbeza untuk membahagikan tugasan kepada dua bahagian.

Halakan ia kepada model

OpenCode bersifat agnostik terhadap penyedia. Ia menggunakan AI SDK dan katalog Models.dev untuk menyokong lebih daripada 75 penyedia, jadi alat yang sama berfungsi dengan Anthropic, OpenAI, Google, dan berpuluh-puluh yang lain, termasuk pelayan tempatan. Laluan pantas adalah arahan /connect di dalam TUI, yang menyenaraikan penyedia dan menguruskan kelayakan. Untuk persediaan yang boleh anda komit dan hasilkan semula, letakkan opencode.json di dalam root projek dan tetapkan model sebagai provider/model-id:

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

Model tempatan berfungsi melalui fail yang sama, kerana mana-mana pelayan yang serasi dengan OpenAI boleh diisytiharkan sebagai penyedia. Jika anda menghoskan model dengan Ollama pada VPS yang sama, konfigurasi tersebut menghala ke API tempatannya, dan nama model adalah apa sahaja yang ditunjukkan oleh ollama list pada kotak anda:

{
  "$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" } }
    }
  }
}

Satu tabiat terbina dalam yang wajar diamalkan sejak hari pertama. OpenCode membekalkan dua ejen yang boleh anda tukar antara satu sama lain dengan kekunci Tab: Build, ejen lalai dengan akses penuh, dan Plan, yang melumpuhkan keupayaan untuk membuat perubahan. Mulakan tugasan baharu dalam Plan, biarkan ia membaca kod dan mencadangkan pendekatan, dan hanya tukar kepada Build apabila anda bersetuju dengan pelan tersebut. Pada pelayan, langkah pertama yang hanya membaca (read-only) adalah insurans yang murah. Claude Code membingkaikan keputusan yang sama sebagai mod kebenaran dan bukannya ejen, dan peralihannya kepada mod auto sebagai lalai wajar dibaca jika anda menjalankan kedua-dua alat tersebut, kerana mod permulaan sesi menentukan sejauh mana ejen yang tidak dipantau boleh membuat perubahan.

Radius impak, secara jujur

Ejen pengekodan bukanlah pasif, jadi nyatakan dengan jelas perkara yang dilakukan dan tidak dilakukan oleh persediaan ini. Ia melibatkan risiko kerosakan fail: pengguna opencode hanya memiliki direktori home sendiri dan tiada yang lain, jadi penyuntingan dan pemadaman terhenti pada sempadan tersebut. Ia melibatkan risiko pendedahan kelayakan: kunci disimpan dalam satu fail dengan mod 600, dalam satu akaun. Ia tidak mengehadkan perkara yang boleh dilakukan oleh akaun tersebut secara sah, jadi jika direktori projek menyimpan kelayakan deploy pengeluaran, ejen boleh menggunakannya; pastikan kelayakan tersebut tiada langsung dalam akaun ejen.

Tidak seperti ejen gerbang seperti OpenClaw, OpenCode ialah program terminal interaktif, bukan daemon. Ia tidak membuka port pendengar dan tidak mempunyai servis yang berjalan lama, jadi tiada unit systemd untuk ditulis dan tiada port untuk difirewall bagi ejen itu sendiri. Pengekangan dilakukan melalui akaun pengguna dan direktori projek, itulah sebabnya bahagian pertama panduan ini adalah yang paling penting.

Kotak yang melindunginya masih memerlukan penjagaan standard, kerana VPS pengekodan tetap merupakan pelayan awam: SSH hanya menggunakan kunci dengan log masuk root dilumpuhkan, seperti dalam pengukuhan SSH pada VPS, firewall default-deny, dan kemas kini rutin. Selain itu, semak hasil kerja ejen. Baca diff yang dihasilkan sebelum anda melakukan push, sama seperti anda membaca pull request daripada penyumbang baharu, kerana anda adalah pihak yang melakukan deploy terhadap hasil tersebut.

Akhir sekali, pastikan alat itu sendiri sentiasa terkini. OpenCode kerap mengeluarkan versi baharu, dan kemas kini membawa pembaikan yang penting bagi program yang menjalankan arahan pada pelayan anda. Kemas kini menggunakan laluan yang sama semasa anda memasangnya: jalankan semula skrip pemasangan sebagai pengguna opencode, atau jalankan sudo npm update -g opencode-ai jika anda memasang melalui npm, kemudian sahkan versi baharu dengan opencode --version. Penyelenggaraan selama seminit sekali-sekala adalah lebih murah daripada menyahpepijat gelagat yang sudah dibaiki dalam binaan beberapa bulan yang lalu.

FAQ

Bolehkah OpenCode menggunakan model tempatan dan bukannya API berbayar?

Ya. OpenCode menganggap mana-mana pelayan yang serasi dengan OpenAI sebagai pembekal, jadi model yang dihoskan oleh Ollama pada VPS yang sama boleh digunakan: isytiharkan pembekal dalam opencode.json dengan baseURL tempatan dan nama model yang dilaporkan oleh Ollama. Cabarannya ialah perkakasan, kerana model yang cukup baik untuk kerja pengekodan sebenar memerlukan memori yang besar, jadi pastikan saiz pelayan mencukupi untuk model tersebut sebelum anda memuat turunnya.

Bagaimanakah cara untuk memastikan OpenCode terus berjalan selepas saya menutup komputer riba saya?

Jalankannya di dalam tmux pada VPS. Mulakan ejen dalam sesi bernama dengan tmux new -s opencode, nyahlekat (detach) dengan menekan Ctrl-b kemudian d, dan sesi tersebut akan terus berjalan pada pelayan selepas sambungan SSH anda tamat. Sambung semula (reattach) pada bila-bila masa dengan tmux attach -t opencode dan perbualan serta sebarang tugasan yang sedang berjalan masih ada di sana. But semula pelayan akan menamatkan sesi, jadi mulakan sesi baharu selepas but semula.

Adakah selamat untuk membiarkan OpenCode menjalankan arahan pada VPS saya?

Ia boleh diuruskan jika anda mengehadkannya. Berikan OpenCode pengguna tanpa keistimewaan (unprivileged user) khusus tanpa sudo, simpan projeknya dalam git supaya setiap suntingan boleh diterbalikkan, simpan kunci API dalam fail dengan mod 600, dan gunakan ejen Plan untuk semakan baca sahaja (read-only) sebelum anda membiarkan ejen Build mengubah apa-apa. Ejen tersebut kemudiannya hanya boleh merosakkan apa yang dimiliki oleh akaunnya sendiri, dan bahagian lain pelayan kekal selamat.

Apakah perbezaan antara OpenCode dan Claude Code?

OpenCode adalah sumber terbuka (MIT) dan tidak terikat kepada mana-mana pembekal, ia bersambung dengan lebih daripada 75 pembekal model, termasuk model tempatan, melalui satu antara muka. Claude Code ialah ejen terminal milik Anthropic sendiri, yang dibina di sekitar model Anthropic. Jika anda mahukan satu alat untuk pelbagai pembekal, atau tindanan (stack) yang dihoskan sepenuhnya sendiri dengan model tempatan, OpenCode adalah pilihan yang sesuai; kedua-duanya berjalan dengan baik pada VPS di dalam tmux dengan tetapan pengguna tanpa keistimewaan yang sama.