Cara Menjalankan OpenCode di VPS dengan Aman
Pelajari langkah instalasi OpenCode pada VPS menggunakan pengguna non-privilese dan tmux. Panduan ini mencakup konfigurasi kunci API agar sesi tetap aman saat Anda offline.
Apa itu OpenCode dan apa yang Anda siapkan
OpenCode adalah AI coding agent open source yang dirancang untuk terminal. Anda menjalankannya di dalam direktori proyek. OpenCode membaca kode, mengusulkan perubahan, mengedit file, dan menjalankan perintah melalui terminal user interface (TUI). OpenCode menggunakan lisensi MIT dan terhubung ke lebih dari 75 model provider. Dengan sekitar 219,000 GitHub stars per Oktober 2026, OpenCode merupakan coding agent open source dengan jumlah stars terbanyak. Untuk menjalankan OpenCode pada VPS, instal OpenCode di bawah dedicated unprivileged user, simpan model API key dalam file privat, lalu jalankan OpenCode di dalam tmux agar sesi tetap berjalan saat koneksi Anda terputus. Panduan ini melakukan semuanya dalam urutan tersebut.
Satu catatan tentang penamaan dapat mencegah kebingungan. Repository kanonisnya adalah anomalyco/opencode, yang dikelola oleh tim Anomaly (sebelumnya dikenal sebagai SST), dan proyek ini sebelumnya berada di sst/opencode. Repository lama yang tidak berkaitan, bernama opencode-ai/opencode dan kini diarsipkan, juga ada di GitHub. Jadi, pastikan Anda membaca dokumentasi proyek yang benar. Situs resminya adalah opencode.ai.
Mengapa menjalankan OpenCode di VPS
Sesi agen pemrograman berlangsung lama. OpenCode dapat menghabiskan waktu berdurasi menit untuk melakukan refactor atau menjalankan test suite. Jika dijalankan di laptop, layar yang tertutup atau koneksi Wi-Fi yang terputus akan menghentikan sesi di tengah tugas. Di VPS menggunakan tmux, agen tetap bekerja setelah Anda terputus, dan Anda dapat melakukan reattach nanti untuk melihat hasilnya. Ini adalah pola yang sama dengan menjalankan Claude Code di VPS dengan tmux, dan merupakan peningkatan kualitas hidup terbesar saat memindahkan agen dari laptop Anda.
Alasan kedua adalah penempatan. VPS berada dekat dengan kode yang Anda deploy: repositori, alat build, database pengujian, dan sering kali lingkungan staging sudah berada di sana atau di dekatnya. Agen yang mengedit kode dan menjalankan pengujian bekerja paling baik pada mesin tempat pengujian tersebut benar-benar berjalan. Karena server tersebut berada di bawah kendali Anda, Anda dapat memberikan lingkungan yang terisolasi secara sengaja kepada agen, yang akan dibahas pada bagian berikutnya.
Jika Anda masih memilih alat, menjalankan agen AI pemrograman di VPS membandingkan cakupan yang lebih luas, termasuk Aider dan Goose.
Berikan OpenCode pengguna khusus
Berikut titik awal yang sebenarnya: agen coding mengedit file dan menjalankan perintah. Itulah tugasnya, sekaligus risikonya. OpenCode akan menjalankan build, pengujian, dan perintah shell apa pun yang tampaknya diperlukan oleh tugas tersebut. Penilaian model biasanya baik, tetapi tidak sempurna. Akun yang digunakan agen menentukan batas akses yang dapat dicapai oleh perintah berbahaya. Karena itu, jangan jalankan OpenCode sebagai root dan jangan gunakan pengguna yang sama dengan pengguna yang mengelola server.
Berbeda dari agen latar belakang, OpenCode bersifat interaktif. Karena itu, penggunanya memerlukan shell nyata dan direktori home:
sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencodeSimpan project yang ingin dikerjakan oleh OpenCode di bawah /home/opencode dan clone project tersebut menggunakan pengguna itu. Jangan berikan hak sudo kepada akun tersebut. Jika agen menjalankan perintah destruktif, perintah itu hanya dapat merusak hal-hal yang dimiliki akun ini. Alasannya sama seperti menjalankan service sebagai pengguna tanpa hak istimewa. Kerjakan juga di dalam repository git dan buat commit sebelum memberikan tugas kepada agen. Dengan demikian, jika terjadi pengeditan yang buruk pada pekerjaan yang sudah di-commit, pemulihannya hanya berjarak git revert atau git restore, bukan berupa kehilangan data. Perubahan yang belum pernah di-commit tidak terlindungi.
Instal OpenCode
Proyek ini mendokumentasikan beberapa metode instalasi, dan dua di antaranya cocok untuk server. Install script adalah cara tercepat. Menjalankannya sebagai user opencode membuat semuanya tetap berada di home user tersebut:
curl -fsSL https://opencode.ai/install | bashKebiasaan curl | bash yang umum juga berlaku di sini. Pada server yang penting, download script terlebih dahulu, baca isinya, lalu jalankan. Setelah instalasi selesai, mulai shell baru agar perubahan PATH yang dibuat installer berlaku. Kemudian, periksa apakah binary memberikan respons:
opencode --versionJika Anda lebih memilih package manager dan Node.js sudah tersedia di server, metode npm menginstal tool yang sama ke global prefix milik npm:
sudo npm install -g opencode-aiDengan Node.js yang diinstal system-wide, prefix tersebut biasanya /usr/local atau /usr. Direktori bin di dalamnya berada pada PATH setiap user. Version manager atau custom prefix menempatkan binary di lokasi lain. Jadi, jalankan npm prefix -g terlebih dahulu jika Anda ingin opencode dapat ditemukan oleh user opencode.
Bagaimanapun metodenya, pemeriksaannya sama: opencode --version mencetak nomor versi. command not found setelah instalasi melalui script berarti shell saat ini belum membaca PATH yang diperbarui. Logout, lalu login kembali sebagai user opencode.
Kedua perintah tersebut menginstal lini OpenCode 1.x, yang masih merilis versi baru (1.19.3 pada 16 October 2026), dan panduan ini menjelaskan lini tersebut. OpenCode 2 kini tersedia sebagai instalasi terpisah melalui https://opencode.ai/v2/install atau package npm @opencode/cli. Cara kerjanya berbeda: satu background server bersama untuk setiap user account mengelola session, permission, dan eksekusi tool, sedangkan terminal terhubung ke server tersebut. Panduan migrasinya menyatakan bahwa instalasi 1.x yang dikelola package manager harus dihapus sebelum menginstal versi 2, karena keduanya menggunakan perintah opencode.
Simpan kunci API dalam file privat
OpenCode memerlukan kunci untuk penyedia model apa pun yang Anda gunakan, dan kunci tersebut dapat menghabiskan saldo Anda, jadi perlakukan kunci tersebut seperti kata sandi. Buat file yang hanya dapat dibaca oleh pengguna opencode, dengan mode 600, dan simpan kunci di sana alih-alih mengetikkannya ke dalam perintah yang akan tersimpan dalam riwayat shell Anda:
install -m 600 /dev/null ~/opencode.env
nano ~/opencode.envMasukkan variabel penyedia Anda ke dalamnya, contohnya ANTHROPIC_API_KEY=... atau yang setara untuk penyedia Anda, karena OpenCode mengambil variabel lingkungan penyedia standar. Muat file tersebut ke dalam shell Anda sebelum menjalankan agen:
set -a; source ~/opencode.env; set +aOpenCode juga memiliki alternatif interaktif: perintah /connect di dalam TUI akan memandu Anda menambahkan penyedia dan menyimpan kredensial ke ~/.local/share/opencode/auth.json di direktori home pengguna. Jika Anda menggunakan metode tersebut, pastikan file bersifat privat dengan chmod 600 ~/.local/share/opencode/auth.json. Kedua metode tersebut menjaga kunci agar tidak muncul di baris perintah Anda; pilih salah satu dan gunakan secara konsisten.
Menjalankan OpenCode di dalam tmux
tmux adalah alasan mengapa pengaturan VPS ini sangat berguna, karena sesi tmux tetap berjalan saat koneksi SSH Anda terputus. Mulai satu sesi, masuk ke direktori proyek Anda, dan jalankan agen tersebut:
tmux new -s opencode
cd ~/my-project
opencodeAnda akan melihat TUI terbuka dengan prompt di bagian bawah dan nama proyek Anda di antarmuka tersebut. Berikan tugas dalam bahasa yang sederhana, dan agen akan mulai membaca file serta mengusulkan perubahan. Jika Anda ingin keluar, lakukan detach dengan menekan Ctrl-b lalu d, dan agen akan tetap bekerja meskipun laptop Anda ditutup. Lakukan reattach nanti dengan:
tmux attach -t opencodeSesi, percakapan, dan tugas yang sedang berjalan akan berada tepat di tempat Anda meninggalkannya. Sesi ini bertahan dari pemutusan koneksi, tetapi tidak dari reboot server, jadi setelah reboot Anda harus memulai sesi tmux baru dengan cara yang sama. Tidak ada yang melarang Anda untuk membuka jendela tmux kedua dan menjalankan agen lain di samping yang pertama, meskipun sesi OpenCode tetap independen satu sama lain, sedangkan sesi Claude Code pada mesin yang sama dapat saling mengirim pesan, yang merupakan cara berbeda untuk membagi pekerjaan menjadi dua bagian.
Arahkan ke model
OpenCode tidak bergantung pada provider tertentu. OpenCode menggunakan AI SDK dan katalog Models.dev untuk mendukung lebih dari 75 provider. Karena itu, tool yang sama dapat digunakan dengan Anthropic, OpenAI, Google, dan puluhan provider lainnya, termasuk server lokal. Cara tercepat adalah perintah /connect di dalam TUI. Perintah ini menampilkan daftar provider dan menangani credential. Untuk konfigurasi yang dapat Anda commit dan reproduksi, buat opencode.json di root proyek dan tetapkan model sebagai provider/model-id:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-5-5"
}Pilih model yang masih disediakan oleh provider Anda. Anthropic menghentikan claude-sonnet-4-20250514 pada 15 June 2026, sehingga konfigurasi yang masih mencantumkan nama tersebut akan gagal.
Model lokal dapat digunakan melalui file yang sama, karena server apa pun yang kompatibel dengan OpenAI dapat dideklarasikan sebagai provider. Jika Anda menyediakan model dengan Ollama pada VPS yang sama, konfigurasi tersebut diarahkan ke API lokalnya. Nama modelnya adalah nama yang ditampilkan oleh ollama list pada server 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" } }
}
}
}Ada satu kebiasaan bawaan yang sebaiknya diterapkan sejak awal. OpenCode menyediakan dua agent yang dapat Anda pilih dengan tombol Tab: Build, yaitu agent default dengan akses penuh, dan Plan, yaitu agent terbatas untuk analisis yang menolak pengeditan file di luar direktori plan miliknya tanpa meminta izin. Namun, Plan tidak sepenuhnya read-only karena masih dapat menjalankan shell command, dan shell command dapat mengubah file. Mulai task baru dalam Plan. Biarkan Plan membaca kode dan mengusulkan pendekatan. Beralihlah ke Build hanya setelah Anda menyetujui rencananya. Jika Anda ingin tahap awal ini benar-benar read-only, tolak edit dan shell command untuk Plan dalam opencode.json. OpenCode menganggap deny sebagai tindakan yang memblokir aksi, sedangkan ask hanya meminta persetujuan Anda:
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"plan": {
"permission": { "edit": "deny", "bash": "deny" }
}
}
}Pada server, tahap awal yang tidak dapat mengubah apa pun merupakan langkah pencegahan yang sederhana. Claude Code membingkai keputusan yang sama sebagai permission mode, bukan agent. Peralihannya ke auto mode sebagai default layak dibaca jika Anda menjalankan kedua tool tersebut, karena mode saat sesi dimulai menentukan seberapa besar perubahan yang dapat dilakukan agent tanpa pengawasan.
Dampak kerusakan, secara realistis
Coding agent tidak pasif. Karena itu, jelaskan secara langsung apa yang dibatasi dan apa yang tidak oleh setup ini. Setup ini membatasi kerusakan file: user opencode memiliki home directory-nya sendiri dan tidak memiliki yang lain, sehingga pengeditan dan penghapusan berhenti pada batas tersebut. Setup ini juga membatasi paparan kredensial: key tersimpan dalam satu file dengan mode 600 pada satu account. Namun, setup ini tidak membatasi tindakan yang secara sah dapat dilakukan oleh account tersebut. Jika direktori project berisi kredensial untuk deploy ke production, agent dapat menggunakannya. Simpan kredensial tersebut sepenuhnya di luar account agent.
Tidak seperti gateway agent, misalnya OpenClaw, OpenCode 1.x adalah program terminal interaktif, bukan daemon. Secara default, program ini tidak membuka listening port. Hanya flag --port, --hostname, atau --mdns yang membuat TUI melakukan listening. Program ini juga tidak memiliki service yang berjalan dalam waktu lama. Jadi, tidak ada systemd unit yang perlu dibuat dan tidak ada port yang perlu dibuka atau dibatasi firewall untuk agent itu sendiri. OpenCode 2 mengubah hal ini melalui shared background server. Periksa kembali poin ini sebelum melakukan migrasi. Containment-nya adalah user account dan direktori project. Karena itu, bagian pertama panduan ini adalah bagian yang paling penting.
Server tempat agent berjalan tetap memerlukan pengamanan standar karena coding VPS tetap merupakan public server: gunakan SSH berbasis key dengan root login dinonaktifkan, seperti dijelaskan dalam Hardening SSH pada VPS, firewall dengan kebijakan default-deny, serta update rutin. Tinjau juga hasil yang dibuat agent. Baca diff sebelum melakukan push, seperti saat meninjau pull request dari kontributor baru, karena Anda yang melakukan deploy terhadap hasil tersebut.
Terakhir, selalu gunakan versi terbaru tool ini. OpenCode sering merilis versi baru, dan update-nya membawa perbaikan yang penting bagi program yang menjalankan command pada server Anda. Lakukan update melalui metode instalasi yang sama: jalankan kembali install script sebagai user opencode, atau jalankan sudo npm update -g opencode-ai jika Anda menginstalnya melalui npm. Setelah itu, pastikan versinya sudah berubah dengan opencode --version. Keduanya tetap menggunakan lini 1.x. Migrasi ke OpenCode 2 adalah proses terpisah. Pemeliharaan selama satu menit dari waktu ke waktu lebih murah daripada men-debug perilaku yang sebenarnya sudah diperbaiki oleh build berusia berbulan-bulan.
FAQ
Dapatkah OpenCode menggunakan model lokal, bukan API berbayar?
Ya. OpenCode memperlakukan server yang kompatibel dengan OpenAI sebagai provider, sehingga model yang disediakan oleh Ollama pada VPS yang sama dapat digunakan: deklarasikan provider tersebut dalam opencode.json dengan baseURL lokal dan nama model yang dilaporkan Ollama. Kendalanya adalah perangkat keras, karena model yang cukup baik untuk pekerjaan pemrograman nyata membutuhkan memori yang besar. Karena itu, sesuaikan spesifikasi server dengan model sebelum mengunduhnya.
Bagaimana cara menjaga OpenCode tetap berjalan setelah laptop ditutup?
Jalankan OpenCode di dalam tmux pada VPS. Mulai agent dalam sesi bernama dengan tmux new -s opencode, detach dengan Ctrl-b lalu d, dan sesi tersebut akan tetap berjalan di server setelah koneksi SSH berakhir. Hubungkan kembali kapan saja dengan tmux attach -t opencode. Percakapan dan task yang sedang berjalan akan tetap tersedia. Reboot server mengakhiri sesi tersebut, jadi mulai sesi baru setelah reboot.
Apakah aman membiarkan OpenCode menjalankan perintah pada VPS saya?
Hal ini dapat dikelola jika Anda membatasi ruang geraknya. Berikan OpenCode user khusus tanpa hak istimewa dan tanpa sudo. Simpan project-nya di git dan buat commit sebelum setiap task agar perubahan yang bermasalah dapat dikembalikan. Simpan API key dalam file dengan mode 600. Gunakan agent Plan untuk pemeriksaan awal sebelum mengizinkan agent Build mengubah apa pun. Atur pengeditan dan perintah shell ke deny untuk Plan jika Anda ingin pemeriksaan tersebut sepenuhnya hanya-baca. Dengan demikian, agent hanya dapat merusak hal-hal yang dimiliki account-nya sendiri, sedangkan bagian server lainnya tetap tidak dapat diakses.
Apa perbedaan antara OpenCode dan Claude Code?
OpenCode adalah software open source berlisensi MIT dan tidak bergantung pada provider tertentu. OpenCode terhubung ke lebih dari 75 provider model, termasuk provider lokal, melalui satu antarmuka. Claude Code adalah terminal agent milik Anthropic yang dibuat untuk model Anthropic. Jika Anda ingin menggunakan satu tool untuk banyak provider atau stack yang sepenuhnya dikelola sendiri dengan model lokal, OpenCode adalah pilihan yang sesuai. Keduanya dapat berjalan dengan baik pada VPS di dalam tmux menggunakan pengaturan user tanpa hak istimewa yang sama.