SSD Nodes Learn RAM 8GB — $66/tahun
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-01

Cara Menjalankan Claude Code dari Ponsel

Pelajari cara menjalankan Claude Code di VPS dengan tmux, SSH, dan mosh. Temukan solusi untuk koneksi seluler yang tidak stabil serta masalah keyboard di ponsel.

Claude Code dari ponsel: cara kerjanya

Claude Code dari ponsel bukan aplikasi seluler. Claude Code berjalan di VPS (virtual private server), di dalam sesi tmux yang tetap terbuka. Ponsel Anda membuka koneksi SSH (secure shell) ke sesi tersebut selama sesi itu ditampilkan. Jika aplikasi ditutup, agent tetap bekerja karena prosesnya tidak pernah berjalan di ponsel.

Pemisahan ini merupakan inti desainnya. Sistem operasi ponsel menangguhkan aplikasi beberapa detik setelah Anda beralih dari aplikasi tersebut. Akibatnya, tugas lama apa pun yang dimulai di ponsel akan berhenti. Ponsel juga mendapatkan alamat jaringan baru setiap kali Anda berpindah dari wifi ke data seluler. Kedua masalah ini tidak terjadi jika proses berjalan di server dan ponsel hanya menampilkan layar.

Anda memerlukan empat hal di server: tmux untuk mempertahankan sesi, kunci SSH untuk masuk, mosh untuk menghadapi perubahan jaringan, dan Claude Code itu sendiri. Di sisi ponsel, Anda hanya memerlukan satu aplikasi terminal dengan baris tombol yang dapat diakses.

Kebutuhan VPS

Server Ubuntu 24.04 dengan spesifikasi kecil sudah cukup untuk bagian SSH dan tmux. Claude Code membutuhkan lebih banyak sumber daya. Persyaratan resmi per Juli 2026 adalah Ubuntu 20.04 atau yang lebih baru pada prosesor x64 atau ARM64, dengan RAM minimal 4 GB. Paket 1 GB dapat menginstalnya, tetapi prosesnya kemudian dihentikan oleh kernel saat beban tinggi. Claude Code juga memerlukan akun Claude berbayar (Pro, Max, Team, atau Enterprise) atau akun Console dengan akses API, karena paket Claude.ai gratis tidak menyertakan akses tersebut.

Siapkan server dengan pengguna biasa yang memiliki sudo, bukan sebagai root. Jika server masih baru, ikuti sepuluh menit pertama pada VPS baru terlebih dahulu, karena perubahan SSH di panduan ini lebih mudah dilakukan setelah pengguna dan firewall tersedia.

sudo apt update && sudo apt install -y tmux mosh
curl -fsSL https://claude.ai/install.sh | bash
claude --version

Installer menempatkan binary di ~/.local/bin/claude, dan claude --version mencetak baris seperti 2.1.211 (Claude Code). Jika yang dicetak adalah command not found, direktori tersebut belum ada di PATH Anda: logout, login kembali, lalu periksa dengan command -v claude. claude doctor mencetak diagnostik instalasi dan pengaturan tanpa memulai sesi.

Login sekali sekarang dari laptop, sebelum Anda bergantung pada ponsel. Jalankan claude di direktori proyek dan ikuti perintah login. Proses ini meminta Anda membuka URL di browser dan memasukkan kembali kode ke terminal. Menggunakan dua aplikasi pada layar ponsel untuk melakukannya lebih lambat. Lakukan sekali dengan keyboard sungguhan agar kredensial tetap tersimpan di server.

Jalankan Claude Code di dalam tmux agar koneksi yang terputus tidak menghentikannya

tmux new -s claude
cd ~/projects/api
claude

Lepaskan sesi dengan Ctrl-b, lalu tekan d. tmux menampilkan [detached (from session claude)] dan mengembalikan Anda ke shell. Sekarang tutup aplikasi, kehilangan sinyal, atau masukkan ponsel ke saku. Panel tersebut tetap berjalan.

tmux ls
tmux attach -t claude

tmux ls menampilkan satu baris untuk setiap sesi, misalnya claude: 1 windows (created Thu Jul 30 09:14:02 2026). tmux attach -t claude mengembalikan Anda tepat ke posisi terakhir, termasuk pengeditan yang belum selesai.

Ini berfungsi karena tmux menjalankan proses servernya sendiri. Shell dan Claude Code menjadi proses turunan server tersebut, bukan proses turunan sshd. Saat koneksi SSH berakhir, kernel mengirimkan sinyal hangup, SIGHUP, kepada proses yang terhubung ke koneksi tersebut. Server tmux tidak termasuk di dalamnya. Tanpa tmux, penguncian layar yang sama yang memutus koneksi juga menghentikan Claude Code di tengah pemanggilan alat. Menjalankan Claude Code di VPS dalam tmux membahas tata letak sesi secara lebih mendalam.

Jalankan tmux di server, bukan di ponsel. Mengetik tmux di dalam sesi yang sudah Anda ikuti menampilkan sessions should be nested with care, unset $TMUX to force. Jika Anda memaksakannya, Anda akan memiliki dua tombol prefix yang saling bersaing.

Masuk secara otomatis setiap kali login

Mengetik perintah attach pada keyboard sentuh lama-kelamaan merepotkan. Tambahkan ini di akhir ~/.profile pada server:

if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [ -t 1 ]; then
  exec tmux new-session -A -s claude
fi

new-session -A -s claude memasang ke sesi bernama claude jika sesi tersebut ada dan membuatnya jika belum ada, sehingga satu perintah mencakup kedua kondisi. exec menggantikan shell login dengan tmux, sehingga keluar dari tmux menutup koneksi, bukan mengembalikan Anda ke prompt kosong. Jika memerlukan shell biasa, lewati berkas tersebut: ssh you@server -t "bash --noprofile".

Letakkan di ~/.profile, bukan di ~/.bashrc. ~/.bashrc juga berjalan untuk sesi non-interaktif, sehingga transfer berkas gagal: scp dan sftp membaca keluaran yang tidak terduga sebagai data protokol dan gagal dengan Received message too long. ~/.profile hanya berjalan untuk shell login, sebagaimana sesi SSH interaktif.

~/.profile juga merupakan lokasi Ubuntu menambahkan ~/.local/bin ke PATH. Jika claude berfungsi tepat setelah login, tetapi shell di dalam tmux menampilkan command not found, urutan tersebut adalah penyebabnya. Karena itu, jalankan tmux dari shell login seperti di atas, bukan dari skrip yang melewati profile.

Kedua aplikasi mendukung SSH dan mosh serta menyimpan kunci di dalam aplikasi. Perbedaannya terletak pada antarmukanya.

Blink Shell dikendalikan melalui perintah. Pada prompt-nya, Anda mengetik ssh you@server atau mosh you@server dengan sintaks yang sama seperti pada terminal desktop. Pengaturan dibuka dengan mengetik config, dan bagian Keys dapat membuat pasangan kunci untuk Anda.

Termius dikendalikan melalui formulir. Anda mengisi entri host, lalu mengubah host tersebut dari SSH ke Mosh pada detail host. Termius menyertakan implementasi mosh sendiri dan mendukung mosh 1.3.0 atau yang lebih baru, sehingga server tetap memerlukan paket mosh yang terinstal.

Buat kunci di dalam aplikasi untuk kedua kasus tersebut. Jangan pernah menyalin kunci privat yang sudah ada ke ponsel. Aplikasi menampilkan bagian publik kunci tersebut. Bagian ini berupa satu baris yang Anda tambahkan ke ~/.ssh/authorized_keys di server. Kunci SSH per perangkat dan cara mencabutnya menjelaskan penamaan dan langkah pencabutan kunci. Hal ini lebih penting untuk ponsel daripada laptop.

Aktifkan penguncian biometrik atau kode sandi bawaan aplikasi terminal. Tanpa penguncian ini, ponsel yang tidak terkunci menjadi shell terbuka pada server Anda selama layar tetap menyala.

Android: Termux

pkg upgrade
pkg install openssh mosh
ssh-keygen -t ed25519 -C "pixel"
cat ~/.ssh/id_ed25519.pub

Termux menyediakan OpenSSH dan mosh di repositorinya sendiri. Karena itu, ssh, ssh-keygen, dan mosh berfungsi seperti pada komputer desktop. Tambahkan baris kunci publik yang ditampilkan ke ~/.ssh/authorized_keys di server, lalu sambungkan dengan mosh you@server.

Keyboard di layar Android tidak memiliki tombol Esc dan Ctrl. Claude Code memerlukan keduanya. Termux dapat menampilkan baris tombolnya sendiri. Tambahkan satu baris ke ~/.termux/termux.properties:

extra-keys = [['ESC','|','/','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]

Kemudian jalankan termux-reload-settings. Baris tersebut akan muncul di atas keyboard. Muat ulang yang sama juga akan menggunakan font TrueType monospace yang ditempatkan di ~/.termux/font.ttf.

Android dapat menghentikan Termux saat berjalan di latar belakang. Dalam kasus ini, Anda hanya perlu menyambungkan kembali. Sesi dan agent berjalan di server.

Mengapa terminal macet saat saya keluar dari jangkauan wifi, dan apa yang diperbaiki mosh?

Koneksi SSH adalah koneksi TCP (transmission control protocol), dan koneksi TCP diidentifikasi oleh kedua alamat serta kedua port. Saat Anda keluar dari jangkauan wifi, ponsel memperoleh alamat baru dari jaringan seluler. Akibatnya, koneksi lama tidak lagi cocok di kedua sisi. Tidak ada pemberitahuan tentang hal ini. Terminal hanya berhenti merespons sampai TCP menyerah, lalu ssh menampilkan client_loop: send disconnect: Broken pipe. Untuk segera menghentikan sesi yang macet, tekan Enter, lalu ~, kemudian ..

mosh (mobile shell) menghilangkan jenis kegagalan ini. mosh menggunakan SSH sekali untuk login dan memulai proses mosh-server, membaca port UDP (user datagram protocol) yang dipilih server, lalu menutup koneksi SSH. Setelah itu, kedua sisi bertukar datagram UDP yang diautentikasi dengan kunci sesi bersama. Dengan demikian, sesi diidentifikasi berdasarkan kunci tersebut, bukan berdasarkan alamat Anda. Saat alamat berubah, sesi dapat dilanjutkan. mosh juga menampilkan ketikan Anda secara lokal dan menggambar ulang tampilan saat server memberikan hasil yang berbeda. Karena itu, mosh tetap dapat digunakan pada koneksi seluler yang lambat.

mosh menggunakan port UDP antara 60000 dan 61000. Buka rentang tersebut:

sudo ufw allow 60000:61000/udp
sudo ufw status

Membuka port dengan ufw menjelaskan konfigurasi firewall lainnya. Jika penyedia Anda menyediakan firewall jaringan terpisah di panel kontrolnya, tambahkan rentang yang sama di sana. Aturan ufw tidak dapat memengaruhi filter yang berada di depan mesin.

Dua kegagalan mosh sering terjadi. Login yang berhasil lalu terhenti dan menampilkan Nothing received from server on UDP port 60001. berarti rentang UDP tersebut diblokir di suatu tempat antara ponsel dan server. Koneksi yang melaporkan mosh-server not found berarti paket tersebut tidak terpasang di server atau tidak tersedia dalam PATH login. Pasang paket tersebut, atau arahkan langsung ke paket itu dengan mosh --server=/usr/bin/mosh-server you@server.

mosh juga menolak berjalan jika locale login bukan UTF-8, dan menampilkan pesan berikut: mosh-server needs a UTF-8 native locale to run. Perbaiki locale di server, bukan di ponsel.

locale
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

Ada dua hal yang tidak dilakukan mosh. README-nya menyatakan bahwa mosh tidak mendukung penerusan X atau penggunaan SSH noninteraktif, termasuk penerusan port. Karena itu, untuk melihat pratinjau aplikasi web yang baru saja dijalankan oleh Claude Code, Anda tetap memerlukan ssh -L 8080:127.0.0.1:8080 you@server biasa. mosh juga hanya menyinkronkan layar yang terlihat, sehingga tidak memiliki riwayat gulir sendiri. Batasan kedua ini tidak menjadi masalah di sini karena tmux menyimpan riwayat gulir: Ctrl-b lalu [ masuk ke mode salin, geser atau gunakan tombol panah untuk menggulir, dan q untuk keluar.

Membuat layar ponsel nyaman digunakan

Empat baris di ~/.tmux.conf pada server menangani sebagian besar pekerjaan:

set -g mouse on
set -g status-position top
set -g default-terminal "tmux-256color"
set -g history-limit 20000

mouse on mengubah geseran sentuh menjadi pengguliran dan ketukan menjadi pemilihan panel atau jendela. Ini menggantikan sebagian besar tombol prefix yang sulit diketik. status-position top memindahkan baris status tmux dari tepi bawah, tempat keyboard di layar dan bilah sarannya menutupinya. default-terminal penting karena jika tidak, tmux mengumumkan terminal screen kepada Claude Code. Warna dan gambar kotak juga akan tampil lebih buruk dari yang seharusnya. Jika tmux kemudian gagal dimulai dengan missing or unsuitable terminal: tmux-256color, entri terminfo tidak ada: sudo apt install ncurses-term.

Pelajari empat tombol berikut agar penggunaan lainnya terasa nyaman.

  • Esc menghentikan Claude saat sedang memberikan respons dan mempertahankan pekerjaan yang sudah selesai. Karena itu, tombol ini sebaiknya berada paling dekat dengan ibu jari.
  • Ctrl+C juga menghentikan operasi yang sedang berjalan. Pada prompt yang tidak sedang digunakan, penekanan pertama menghapus input dan penekanan kedua keluar dari Claude Code. Jadi, tombol ini lebih tegas.
  • Esc dua kali menghapus prompt draf. Pada prompt kosong, tombol ini membuka menu rewind.
  • Untuk prompt beberapa baris, ketik \ lalu tekan Enter. Bentuk ini berfungsi di semua terminal. Shift+Enter hanya tersedia secara bawaan pada daftar singkat terminal desktop, dan klien seluler tidak termasuk di dalamnya.

Hindari panel terbagi. Ponsel dalam orientasi potret lebarnya sekitar 40 kolom. Jadi, pembagian vertikal menyisakan 20 kolom per panel dan setiap diff akan terlipat menjadi teks yang sulit dibaca. Gunakan jendela tmux sebagai gantinya: Ctrl-b c membuat jendela dan Ctrl-b n berpindah ke jendela berikutnya. Putar ponsel ke orientasi lanskap saat perlu membaca diff dengan benar.

Sesi panjang pada layar kecil terutama merupakan masalah konteks. Karena itu, mengelola jendela konteks Claude Code layak dibaca sebelum mencoba bekerja seharian penuh dari dalam kereta.

Perketat: hanya gunakan key, tanpa kata sandi

Ponsel sekarang menyimpan key untuk mesin yang mengedit kode dan menjalankan perintah Anda. Nonaktifkan autentikasi kata sandi. File drop-in lebih aman daripada mengedit sshd_config secara langsung, karena sshd_config Ubuntu menyertakan /etc/ssh/sshd_config.d/*.conf di bagian atas dan nilai pertama yang ditemukan untuk suatu pengaturan akan digunakan.

sudo tee /etc/ssh/sshd_config.d/99-phone.conf >/dev/null <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
EOF
sudo sshd -t && sudo systemctl reload ssh

sshd -t mengurai konfigurasi dan tidak mencetak apa pun jika konfigurasi valid. Jika langkah ini dilewati, satu kesalahan ketik akan menyebabkan sshd gagal saat memuat ulang. Biarkan sesi kerja Anda tetap terbuka dan lakukan pengujian dari koneksi kedua sebelum menutup apa pun, karena key yang salah akan menghasilkan Permission denied (publickey). dan, jika kata sandi dinonaktifkan, tidak ada jalur cadangan. Pada titik itu, jalur pemulihan adalah konsol dari penyedia Anda.

Gunakan key yang berbeda untuk setiap perangkat. Jika ponsel hilang, Anda cukup menghapus satu baris dari ~/.ssh/authorized_keys, sementara laptop tetap dapat digunakan. Dengan satu key bersama, Anda harus mengganti key tersebut di setiap perangkat yang Anda miliki.

Jika Anda memindahkan SSH ke port lain di Ubuntu 24.04, perhatikan bahwa listener terkait dengan ssh.socket, sehingga baris Port saja tidak mengubah apa pun. Jalankan sudo systemctl edit ssh.socket, kosongkan nilai default dengan ListenStream= kosong, lalu tetapkan port Anda pada baris berikutnya. Memperkuat keamanan SSH di VPS membahas hal tersebut dan permukaan serangan lainnya.

fail2ban untuk SSH hanya menambah sedikit keamanan setelah kata sandi dinonaktifkan, karena kata sandi hasil tebakan sama sekali tidak dapat diterima. Manfaat tambahannya adalah log yang lebih tenang, sehingga upaya login yang sebenarnya lebih mudah diketahui.

Pilihan yang lebih kuat adalah menonaktifkan SSH dari internet publik. Tempatkan server di balik VPN WireGuard yang Anda kelola sendiri, aktifkan tunnel dari ponsel sesuai kebutuhan, lalu berikan sshd sebuah ListenAddress yang hanya berlaku pada tunnel. mosh berfungsi melalui tunnel karena kedua sisi menggunakan UDP. Satu hal yang perlu diperhatikan: tunnel menambah overhead paket. Jika transfer berukuran besar terhenti, turunkan MTU (maximum transmission unit) di konfigurasi WireGuard pada ponsel.

Satu hal terakhir tentang cara kerja ini. Dari ponsel, Anda menyetujui permintaan izin pada layar yang hanya menampilkan beberapa baris diff setiap kali. Ini adalah alasan untuk mempertahankan pembatas pengaman, bukan menonaktifkannya. Menjalankan Claude Code dengan aman di VPS membahas batasan pengguna dan direktori yang sebaiknya ditetapkan sebelum jalur akses utama Anda menggunakan layar sentuh.

Saat Anda memasang ulang dan terjadi masalah

tmux attach yang menampilkan no server running on /tmp/tmux-1000/default berarti server tmux sudah tidak ada. Ini hampir selalu berarti mesin telah melakukan boot ulang. Periksa dengan uptime. Pembaruan kernel dari pembaruan keamanan otomatis melakukan boot ulang pada mesin. Mesin yang melakukan boot ulang tidak memiliki sesi tmux. Karena itu, perlakukan setiap proses Claude Code sebagai proses yang dapat Anda jalankan ulang.

can't find session: claude berbeda. Server tmux sedang berjalan, tetapi nama tersebut tidak ada. tmux ls menampilkan sesi yang tersedia.

Jika Anda memasang sesi dan menemukan prompt shell biasa di tempat Claude Code sebelumnya berjalan, berarti prosesnya berakhir tanpa mengakhiri sesi. Periksa dmesg -T | tail untuk baris seperti Out of memory: Killed process 4821 (claude). Baris ini muncul ketika mesin dengan RAM di bawah persyaratan 4 GB melakukan pengeditan besar. Jika baris tersebut tidak ada, Claude Code keluar sendiri. Riwayat gulir shell di atas prompt berisi alasannya.

Jika sebuah jendela kembali dalam ukuran sangat kecil dengan ruang kosong di sekelilingnya, berarti dua klien terhubung dengan ukuran berbeda. tmux menyesuaikan ukuran jendela dengan klien terhubung yang paling kecil. Laptop Anda masih mempertahankan sesi dengan lebar 200 kolom, sedangkan ponsel meminta 40 kolom. Lepaskan klien lain saat Anda terhubung: tmux attach -d -t claude.

FAQ

Dapatkah saya menjalankan Claude Code di ponsel itu sendiri, bukan di VPS?

Tidak. Platform yang didukung per Juli 2026 adalah macOS, Windows, Ubuntu 20.04 atau yang lebih baru, Debian 10 atau yang lebih baru, dan Alpine 3.19 atau yang lebih baru, dengan RAM minimal 4 GB. Android dan iOS tidak termasuk dalam daftar tersebut. Ponsel juga menidurkan aplikasinya dan terus-menerus mengubah alamat jaringan, sehingga tidak cocok untuk menjalankan agen dalam waktu lama. Jalankan Claude Code di server dan gunakan ponsel sebagai tampilan.

Apakah sesi tetap berjalan jika saya menutup aplikasi atau kehilangan sinyal?

Ya. Dua komponen terpisah menangani hal tersebut. tmux menjaga proses tetap berjalan di server, sehingga proses tidak berhenti saat koneksi berakhir. mosh menjaga koneksi tetap aktif saat alamat berubah, sehingga perpindahan dari wifi ke data seluler bahkan tidak memerlukan koneksi ulang. Dengan SSH biasa tanpa tmux, koneksi yang terputus mengirimkan SIGHUP dan Claude Code berhenti di tengah tugas.

Mengapa mosh terhubung lalu tidak menampilkan apa pun?

Login yang berhasil lalu terhenti dengan Nothing received from server on UDP port 60001. berarti UDP 60000 hingga 61000 tidak terbuka. Tambahkan rentang tersebut di ufw, lalu tambahkan lagi di firewall jaringan penyedia Anda, yang merupakan kontrol terpisah pada sebagian besar panel. Jika mosh justru melaporkan bahwa mosh-server tidak ditemukan, berarti paket tersebut belum terpasang di server: sudo apt install mosh.

Bagaimana cara menginterupsi Claude Code dari keyboard yang tidak memiliki tombol Esc?

Tambahkan baris tombol. Termux mengonfigurasi baris tersebut dengan extra-keys di ~/.termux/termux.properties, sedangkan Termius dan Blink menyediakan baris yang dapat Anda ubah di pengaturan. Esc menginterupsi respons yang sedang berjalan dan mempertahankan pekerjaan yang sudah selesai. Ctrl+C juga menginterupsi, tetapi menekannya dua kali saat prompt sedang tidak aktif akan keluar dari Claude Code. Karena itu, gunakan Esc terlebih dahulu.

Apakah membuka SSH ke internet cukup aman untuk keperluan ini?

Dengan autentikasi kata sandi dinonaktifkan, satu-satunya kredensial yang dapat berhasil adalah key yang tidak pernah meninggalkan perangkat Anda. Ini merupakan risiko yang wajar untuk mesin yang dapat Anda bangun ulang. Gunakan key terpisah untuk setiap perangkat agar ponsel yang hilang hanya mengharuskan Anda menghapus satu baris di authorized_keys. Jika Anda tidak ingin melayani koneksi pada port publik, tempatkan mesin di belakang WireGuard dan biarkan sshd mendengarkan pada alamat tunnel.