<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Gilanx Cheetz</title><description>Tutorial Termux &amp; Claude Code Android</description><link>https://gilanx.pages.dev/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.9.4</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>1 Mei 2026 pukul 14.33.17</lastBuildDate><item><title>Copy Fail: Exploit 4 byte, User biasa jadi Root di Linux</title><link>https://gilanx.pages.dev/posts/copy-fail-exploit-4-byte-bikin-user-jadi-root-di-linux/</link><guid isPermaLink="true">https://gilanx.pages.dev/posts/copy-fail-exploit-4-byte-bikin-user-jadi-root-di-linux/</guid><description>Copy Fail adalah kerentanan di Linux kernel dengan ID CVE-2026-31431. Dari laporan Cyber Security News, bug ini bisa bikin user lokal tanpa privilege naik jadi root.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Copy Fail adalah kerentanan di Linux kernel dengan ID CVE-2026-31431. Dari laporan Cyber Security News, bug ini bisa bikin user lokal tanpa privilege naik jadi root di banyak distro Linux besar yang sudah beredar sejak 2017. Kedengarannya kayak bahan obrolan panik di grup infra jam 2 pagi. Ya memang. Ini bukan jenis kabar yang enak dibaca sambil rebahan.&lt;/p&gt;
&lt;p&gt;Yang bikin kasus ini nyelekit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Targetnya Linux kernel, bukan aplikasi pinggiran.&lt;/li&gt;
&lt;li&gt;Jalurnya terkait &lt;code&gt;authencesn&lt;/code&gt;, &lt;code&gt;AF_ALG&lt;/code&gt;, dan &lt;code&gt;splice()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Dampaknya privilege escalation lokal ke root.&lt;/li&gt;
&lt;li&gt;Laporan menyebut exploit-nya berupa script Python 732 byte dengan standard library.&lt;/li&gt;
&lt;li&gt;Mekanisme bug-nya memanfaatkan controlled 4-byte write ke page cache.&lt;/li&gt;
&lt;li&gt;Korupsinya terjadi di page cache, jadi file di disk bisa tetap kelihatan normal.&lt;/li&gt;
&lt;li&gt;Tool integritas berbasis checksum bisa kelewat karena file on-disk memang tidak berubah.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Biasanya exploit kernel dibayangkan ribet: race condition yang manja, payload compiled, offset kernel, dan ritual debug yang bikin mata panas. Copy Fail dilaporkan lebih lurus. Bukan berarti risetnya gampang. Bukan. Maksudnya, setelah bug dipahami dan exploit matang, bagian operasionalnya bisa jauh lebih sederhana daripada ekspektasi banyak engineer. Nah, bagian itu yang bikin nggak nyaman.&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;Apa itu Copy Fail?&lt;a href=&quot;#apa-itu-copy-fail&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Copy Fail adalah bug logika di Linux kernel. Dari laporan yang ada, masalahnya muncul dari interaksi template kripto &lt;code&gt;authencesn&lt;/code&gt;, interface socket &lt;code&gt;AF_ALG&lt;/code&gt;, dan system call &lt;code&gt;splice()&lt;/code&gt;. Namanya Copy Fail karena inti bug-nya ada di asumsi soal copy data versus referensi langsung ke page cache. Versi warung kopinya: sistem kira lagi pegang fotokopian, ternyata yang dipegang barang asli.&lt;/p&gt;&lt;p&gt;Cyber Security News menyebut bug ini ditemukan oleh Taeyang Lee dari Theori, lalu dikembangkan menjadi exploit chain penuh oleh Xint Code Research Team dengan bantuan analisis AI. Detail ini bukan buat bikin AI kelihatan sakti. Poinnya lebih sederhana: riset security makin sering jadi kerja bareng antara manusia dan tooling analisis. Keren? Iya. Bikin merinding sedikit? Juga iya.&lt;/p&gt;&lt;p&gt;Catatan penting: ini local privilege escalation. Attacker butuh akses lokal dulu. Tapi jangan langsung santai. Banyak serangan besar mulai dari akses kecil: web shell, service account bocor, credential reuse, dependency rentan, atau akun internal yang kebanyakan izin. Begitu ada pijakan, bug lokal seperti ini bisa jadi tangga ke root. Tangga yang licin buat defender, nyaman buat attacker.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Fakta teknis dari laporan sumber&lt;a href=&quot;#fakta-teknis-dari-laporan-sumber&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Dari laporan Cyber Security News, Copy Fail punya beberapa ciri yang membuatnya beda dari banyak bug kernel lain.&lt;/p&gt;&lt;section&gt;&lt;h3&gt;Identitas kerentanan&lt;a href=&quot;#identitas-kerentanan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Nama populer: Copy Fail&lt;/li&gt;
&lt;li&gt;ID: CVE-2026-31431&lt;/li&gt;
&lt;li&gt;Komponen: Linux kernel&lt;/li&gt;
&lt;li&gt;Area teknis: &lt;code&gt;authencesn&lt;/code&gt;, &lt;code&gt;AF_ALG&lt;/code&gt;, &lt;code&gt;splice()&lt;/code&gt;, page cache&lt;/li&gt;
&lt;li&gt;Dampak: unprivileged local user bisa naik jadi root&lt;/li&gt;
&lt;li&gt;Rentang dampak: banyak distro Linux besar yang dikirim sejak 2017, berdasarkan laporan sumber&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Perbandingan dengan bug lama&lt;a href=&quot;#perbandingan-dengan-bug-lama&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Laporan sumber membandingkan Copy Fail dengan Dirty COW dan Dirty Pipe. Bedanya, Copy Fail dilaporkan bukan race condition. Ini penting. Race condition biasanya bergantung timing: kadang tembus, kadang gagal, kadang stabil di mesin A tapi ngambek di mesin B. Copy Fail disebut straight-line logic bug. Kalau kondisinya pas, jalurnya lebih deterministik.&lt;/p&gt;&lt;p&gt;Buat tim operasional, kata “deterministik” bukan kabar bagus. Exploit yang matang bisa lebih stabil, gampang direproduksi, dan cocok diotomatisasi. Kalau server belum patch, jangan berharap hoki jadi kontrol keamanan. Hoki itu bukan layer security. Itu doa yang kebetulan pakai istilah teknis.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Cara kerja tingkat tinggi&lt;a href=&quot;#cara-kerja-tingkat-tinggi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Bagian ini sengaja tetap di level tinggi. Tujuannya memahami risiko, bukan memberi resep exploit.&lt;/p&gt;&lt;p&gt;Linux memakai page cache untuk menyimpan representasi file di memori. Normalnya, kalau data file berubah, kernel menandai halaman itu sebagai dirty supaya perubahan bisa ditulis balik ke disk. Pada Copy Fail, laporan sumber menyebut exploit bisa memicu controlled 4-byte write ke page cache milik file yang bisa dibaca attacker. Jadi 4 byte di sini bukan ukuran exploit, tapi ukuran coretan kecil yang bisa ditulis ke page cache secara terkontrol.&lt;/p&gt;&lt;p&gt;Masalahnya ada di sini: kernel tidak menandai halaman yang korup itu sebagai dirty untuk writeback. File di disk tetap tidak berubah. Jadi tool integritas yang cuma menghitung checksum file di disk bisa tetap bilang bersih. Di permukaan aman. Di memori, versi file yang dieksekusi sudah beda. Ini tipe bug yang bikin orang security menatap dashboard sambil ngomong pelan, “lah, kok bisa?”&lt;/p&gt;&lt;p&gt;Laporan juga menyebut attacker mengeksekusi versi in-memory dari binary setuid seperti &lt;code&gt;/usr/bin/su&lt;/code&gt; untuk mendapatkan root shell. Ini konteks dampak, bukan instruksi. Buat defender, pelajarannya jelas: jangan cuma mengandalkan file integrity monitoring berbasis disk. Ada serangan yang main di memori dan page cache, bukan nulis malware terang-terangan ke filesystem.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Kenapa 732 byte dan 4 byte bisa bikin ribet?&lt;a href=&quot;#kenapa-732-byte-dan-4-byte-bisa-bikin-ribet&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Biar nggak ketuker: 732 byte itu ukuran script exploit yang disebut di laporan. Sedangkan 4 byte itu ukuran write primitive, yaitu coretan kecil yang bisa diarahkan ke page cache. Dua angka ini ngomongin hal yang beda.&lt;/p&gt;&lt;p&gt;Di level aplikasi, 732 byte terasa kecil. Bahkan lebih kecil dari chat “otw” yang ternyata dikirim pas orangnya masih mandi. Tapi dalam konteks exploit kernel, ukuran file kecil tidak berarti dampaknya kecil. Kalau bug logikanya pas, script mungil tetap bisa memanfaatkan jalur sistem yang sensitif.&lt;/p&gt;&lt;p&gt;Lalu 4 byte-nya apa? Itu bukan ukuran file exploit. Itu ukuran data yang ditulis tiap primitive ke page cache. Kecil banget, tapi kalau offset-nya tepat, 4 byte bisa cukup untuk mengubah instruksi, flag, atau bagian sensitif lain dari data yang sedang dipakai kernel di memori.&lt;/p&gt;&lt;p&gt;Copy Fail menarik karena laporan menyebut exploit-nya hanya 732 byte dan memakai modul standard library Python, tapi efek teknisnya datang dari controlled 4-byte write ke page cache. Ini bukan berarti semua orang mendadak bisa jadi researcher kernel. Risetnya tetap dalam. Tapi setelah exploit tersedia, hambatan operasional untuk penyalahgunaan bisa turun. Yang perlu ditakuti tim infra bukan cuma siapa yang bisa menemukan bug, tapi siapa yang bisa menjalankan hasil akhirnya.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Kenapa file integrity tool bisa kelewat?&lt;a href=&quot;#kenapa-file-integrity-tool-bisa-kelewat&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Banyak organisasi memakai checksum untuk memastikan file penting tidak berubah. Cara ini tetap berguna, tapi Copy Fail menunjukkan batasnya.&lt;/p&gt;&lt;p&gt;Kalau file di disk tidak berubah, checksum file di disk juga tidak berubah. Kalau korupsi terjadi di page cache dan tidak ditandai dirty, alat yang cuma melihat disk bisa bilang “aman” sementara eksekusi di memori sudah berbeda. Rasanya seperti ngecek KTP di meja resepsionis, padahal orangnya masuk lewat pintu belakang pakai jaket orang lain.&lt;/p&gt;&lt;p&gt;Dampaknya jelas: monitoring perlu lebih dari hash file. Defender perlu melihat perilaku proses, perubahan privilege, pemanggilan binary sensitif, aktivitas service account, dan pola eksekusi yang tidak biasa. File integrity monitoring bagus. Tapi kalau dia jadi satu-satunya penjaga malam, ya jangan kaget kalau maling lewat samping.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Dampak ke server produksi&lt;a href=&quot;#dampak-ke-server-produksi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Server produksi sering rentan bukan karena satu kesalahan besar, tapi karena tumpukan hal kecil yang dibiarkan. Kernel agak lama. Patch window mundur. VM lama tidak masuk inventaris. CI runner dianggap sementara. Node Kubernetes lupa direboot setelah update. Lalu ada user lokal yang awalnya terlihat biasa saja, sampai ada bug privilege escalation.&lt;/p&gt;&lt;p&gt;Untuk Copy Fail, risiko utama ada pada sistem tempat attacker bisa mendapat akses lokal. Jalannya bisa macam-macam:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;aplikasi web yang sudah dikompromi;&lt;/li&gt;
&lt;li&gt;akun developer atau service account bocor;&lt;/li&gt;
&lt;li&gt;container escape path yang dibantu konfigurasi lemah;&lt;/li&gt;
&lt;li&gt;shell terbatas yang ternyata cukup untuk menjalankan proses lokal;&lt;/li&gt;
&lt;li&gt;workload multi-tenant dengan isolasi kurang ketat;&lt;/li&gt;
&lt;li&gt;server lama yang tidak masuk patch management.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Kalau salah satu jalur itu terbuka, local privilege escalation bisa mengubah insiden kecil menjadi insiden root. Begitu root didapat, biasanya cerita tidak makin lucu. Biasanya mulai ada yang minta timeline insiden.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Dampak ke container dan Kubernetes&lt;a href=&quot;#dampak-ke-container-dan-kubernetes&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Container bukan jimat. Perlu diulang karena masih banyak yang memperlakukan Docker seperti pagar gaib.&lt;/p&gt;&lt;p&gt;Container berbagi kernel dengan host. Kalau bug-nya ada di kernel, container bisa ikut terdampak, tergantung konfigurasi. Risiko makin besar kalau container berjalan dengan izin terlalu luas: privileged mode, capability berlebihan, mount host yang longgar, seccomp profile lemah, atau AppArmor/SELinux tidak aktif.&lt;/p&gt;&lt;p&gt;Untuk Kubernetes, cek node kernel version, runtime configuration, Pod Security Admission, capability, hostPath mount, dan workload yang berjalan sebagai root. Kalau cluster punya banyak tenant, risikonya naik. Kalau CI runner berjalan di container dengan akses terlalu royal, risikonya juga naik. CI runner sering jadi tempat dosa kecil berkumpul: token, akses repo, cache, artifact, dan script dari macam-macam sumber. Jangan tambah dosa baru dengan memberi jalan gampang ke host.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Indikator yang perlu dipantau&lt;a href=&quot;#indikator-yang-perlu-dipantau&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Tidak ada satu indikator sakti untuk semua kasus. Untuk risiko privilege escalation lokal, defender bisa mulai dari pola ini:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;eksekusi binary setuid yang tidak biasa;&lt;/li&gt;
&lt;li&gt;proses user rendah yang tiba-tiba punya privilege tinggi;&lt;/li&gt;
&lt;li&gt;pemanggilan &lt;code&gt;AF_ALG&lt;/code&gt; atau pola crypto socket yang tidak lazim di server itu;&lt;/li&gt;
&lt;li&gt;penggunaan &lt;code&gt;splice()&lt;/code&gt; dari proses yang biasanya tidak menyentuh operasi file level rendah;&lt;/li&gt;
&lt;li&gt;shell interaktif yang muncul dari service account;&lt;/li&gt;
&lt;li&gt;proses pendek yang muncul, naik privilege, lalu hilang;&lt;/li&gt;
&lt;li&gt;anomali audit log terkait eksekusi &lt;code&gt;/usr/bin/su&lt;/code&gt;, &lt;code&gt;sudo&lt;/code&gt;, atau binary setuid lain;&lt;/li&gt;
&lt;li&gt;aktivitas aneh dari container yang seharusnya cuma menjalankan satu aplikasi.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Jangan pakai daftar ini sebagai checklist mati. Pakai sebagai titik awal. Tiap environment punya baseline sendiri. Server database, node Kubernetes, CI runner, dan bastion host punya perilaku normal yang beda. Kalau semua dipukul rata, hasilnya noise. Kalau tidak dipantau sama sekali, hasilnya doa.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah mitigasi&lt;a href=&quot;#langkah-mitigasi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. Inventaris kernel&lt;a href=&quot;#1-inventaris-kernel&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Mulai dari pertanyaan membosankan yang sering menyelamatkan: kernel versi berapa yang sedang berjalan?&lt;/p&gt;&lt;p&gt;Cek semua area:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;server produksi;&lt;/li&gt;
&lt;li&gt;staging dan development server;&lt;/li&gt;
&lt;li&gt;node Kubernetes;&lt;/li&gt;
&lt;li&gt;VM lama;&lt;/li&gt;
&lt;li&gt;image cloud;&lt;/li&gt;
&lt;li&gt;CI runner;&lt;/li&gt;
&lt;li&gt;server internal;&lt;/li&gt;
&lt;li&gt;mesin yang katanya sementara tapi sudah hidup sejak zaman kopi saset masih seribu.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Inventaris penting karena sistem yang tidak tercatat biasanya tidak ikut dipatch. Dan sistem yang tidak ikut dipatch sering senang jadi pintu masuk.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. Ikuti patch vendor&lt;a href=&quot;#2-ikuti-patch-vendor&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Kalau vendor distro sudah merilis patch, prioritaskan update kernel. Jangan cuma update package lalu lupa reboot. Untuk kernel, patch sering baru efektif setelah boot ke versi baru. Banyak server merasa sudah “diupdate” padahal masih menjalankan kernel lama. Klasik. Tetap tidak lucu.&lt;/p&gt;&lt;p&gt;Setelah patch:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;validasi kernel aktif setelah reboot;&lt;/li&gt;
&lt;li&gt;cek service penting tetap jalan;&lt;/li&gt;
&lt;li&gt;pastikan monitoring agent hidup;&lt;/li&gt;
&lt;li&gt;dokumentasikan host yang belum bisa direboot;&lt;/li&gt;
&lt;li&gt;buat jadwal maintenance untuk host yang tertunda.&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. Kurangi privilege lokal&lt;a href=&quot;#3-kurangi-privilege-lokal&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Local privilege escalation butuh pijakan awal. Jadi kecilkan pijakan itu.&lt;/p&gt;&lt;p&gt;Praktik yang masuk akal:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;jalankan service dengan user non-root;&lt;/li&gt;
&lt;li&gt;batasi sudo;&lt;/li&gt;
&lt;li&gt;hapus akun lokal yang tidak dipakai;&lt;/li&gt;
&lt;li&gt;review binary setuid;&lt;/li&gt;
&lt;li&gt;pakai filesystem read-only kalau cocok;&lt;/li&gt;
&lt;li&gt;batasi capability container;&lt;/li&gt;
&lt;li&gt;aktifkan seccomp, AppArmor, atau SELinux sesuai platform;&lt;/li&gt;
&lt;li&gt;jangan jalankan container privileged kecuali memang perlu.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Kalau semua proses punya izin luas, bug kecil bisa punya dampak besar. Least privilege bukan slogan compliance. Itu rem tangan.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. Perkuat monitoring perilaku&lt;a href=&quot;#4-perkuat-monitoring-perilaku&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Tambahkan deteksi berbasis perilaku, bukan cuma hash file. File integrity monitoring tetap dipakai, tapi lengkapi dengan audit process, privilege transition, container runtime event, dan endpoint telemetry.&lt;/p&gt;&lt;p&gt;Untuk Linux, tim bisa mengevaluasi auditd, eBPF-based monitoring, EDR Linux, atau telemetry dari runtime container. Pilih yang sanggup dirawat tim. Tool mahal yang alert-nya tidak dibaca tetap sama seperti CCTV mati lampu.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5. Review workload berisiko&lt;a href=&quot;#5-review-workload-berisiko&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Prioritaskan sistem dengan kombinasi risiko tinggi:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;exposed ke internet;&lt;/li&gt;
&lt;li&gt;menjalankan kode dari user atau pipeline;&lt;/li&gt;
&lt;li&gt;multi-tenant;&lt;/li&gt;
&lt;li&gt;punya credential sensitif;&lt;/li&gt;
&lt;li&gt;menjalankan container privileged;&lt;/li&gt;
&lt;li&gt;sulit direboot;&lt;/li&gt;
&lt;li&gt;patch cadence lambat.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Sistem seperti ini perlu masuk jalur cepat. Jangan perlakukan semua host sama kalau risikonya beda jauh.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Checklist defensif&lt;a href=&quot;#checklist-defensif&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pakai checklist ini untuk koordinasi cepat antar tim.&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Daftar semua host Linux dan versi kernel aktif.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Cocokkan versi kernel dengan advisory vendor.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Patch host rentan sesuai prioritas risiko.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Reboot host yang butuh kernel baru.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Validasi kernel aktif setelah reboot.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Review container privileged dan capability berlebihan.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Review binary setuid penting.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Pantau eksekusi &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;/usr/bin/su&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, dan perubahan UID aneh.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Tambahkan deteksi perilaku untuk proses lokal mencurigakan.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; [ ] Dokumentasikan host yang belum bisa dipatch beserta alasan dan jadwal.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Catatan untuk tim security&lt;a href=&quot;#catatan-untuk-tim-security&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Copy Fail mengingatkan satu hal: audit di atas kertas tidak selalu melihat bug yang hidup di bawah lantai. Compliance tetap perlu, tapi jangan disamakan dengan security nyata. Kalau sistem lolos checklist tapi kernel tertinggal, service account terlalu sakti, dan container berjalan privileged, itu bukan aman. Itu cuma rapi di spreadsheet.&lt;/p&gt;&lt;p&gt;Tim security perlu bicara dengan bahasa operasional. Jangan cuma bilang “segera patch.” Kasih prioritas, dampak, daftar host, owner, deadline, dan cara validasi. Tim infra juga jangan menunggu semua detail sempurna baru bergerak. Untuk bug kernel dengan potensi root, respons cepat sering lebih berguna daripada rapat panjang yang ujungnya cuma menghasilkan notulen cantik.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Catatan untuk tim infra&lt;a href=&quot;#catatan-untuk-tim-infra&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Patching kernel memang tidak selalu gampang. Ada uptime, dependency, maintenance window, aplikasi legacy, dan stakeholder yang baru peduli server ketika server mati. Tapi menunda patch tanpa mitigasi juga bukan strategi. Itu cuma berharap attacker sedang cuti.&lt;/p&gt;&lt;p&gt;Bikin jalur kerja yang jelas:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;identifikasi host rentan;&lt;/li&gt;
&lt;li&gt;kelompokkan berdasarkan risiko;&lt;/li&gt;
&lt;li&gt;patch dan reboot kelompok risiko tinggi dulu;&lt;/li&gt;
&lt;li&gt;validasi kernel aktif;&lt;/li&gt;
&lt;li&gt;catat pengecualian;&lt;/li&gt;
&lt;li&gt;pasang monitoring ekstra sampai semua host selesai.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Kalau patch harus ditunda karena alasan bisnis, tulis risikonya secara eksplisit. Jangan biarkan keputusan besar hidup sebagai “nanti dulu ya” di chat.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Kesalahan mindset yang sering muncul&lt;a href=&quot;#kesalahan-mindset-yang-sering-muncul&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;”Ini kan local exploit, aman lah”&lt;a href=&quot;#ini-kan-local-exploit-aman-lah&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Local exploit tetap bahaya kalau attacker bisa mendapat akses awal. Banyak insiden dimulai dari akses kecil. Jangan remehkan tangga cuma karena anak tangganya pendek.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;”Kami pakai container”&lt;a href=&quot;#kami-pakai-container&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Container berbagi kernel dengan host. Kalau kernel bermasalah dan container terlalu longgar, risikonya tetap nyata.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;”Checksum file aman semua”&lt;a href=&quot;#checksum-file-aman-semua&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Copy Fail main di page cache. Kalau file di disk tidak berubah, checksum bisa tetap kelihatan aman. Monitoring juga harus melihat perilaku runtime.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;”Server ini internal”&lt;a href=&quot;#server-ini-internal&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Internal bukan berarti aman. Banyak kompromi bergerak lateral dari satu host ke host lain. Sistem internal yang tidak dipatch sering jadi tempat attacker selonjoran dulu sebelum lanjut jalan-jalan.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Kesimpulan&lt;a href=&quot;#kesimpulan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Copy Fail bukan cuma cerita soal exploit 732 byte atau write primitive 4 byte. Ini cerita soal asumsi yang terlalu nyaman. Kernel dianggap aman. Container dianggap cukup. Checksum dianggap pasti melihat perubahan. Server internal dianggap tidak menarik. Lalu satu bug datang dan semua asumsi itu kena tampar.&lt;/p&gt;&lt;p&gt;Respons terbaik bukan panik. Respons terbaik itu rapi dan cepat: inventaris kernel, patch vendor, reboot, validasi, kurangi privilege, pantau perilaku, dan dokumentasikan pengecualian. Kalau ada host yang belum bisa dipatch, perlakukan sebagai risiko aktif, bukan catatan kaki.&lt;/p&gt;&lt;p&gt;Pada akhirnya, yang bahaya bukan cuma hacker hebat. Yang lebih sering bikin repot adalah sistem yang terlalu dipercaya, terlalu jarang dicek, dan terlalu lama dibiarkan karena “selama ini aman.” Kalimat itu enak didengar sampai hari ketika script sekecil 732 byte mengetuk pintu dan bertanya, “root-nya di mana, bang?”&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Referensi&lt;a href=&quot;#referensi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Cyber Security News: &lt;a href=&quot;https://cybersecuritynews.com/linux-kernel-0-day-copy-fail/&quot; target=&quot;_blank&quot;&gt;https://cybersecuritynews.com/linux-kernel-0-day-copy-fail/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>Cara Install OpenClaw di Android Tanpa proot-distro</title><link>https://gilanx.pages.dev/posts/cara-install-openclaw-di-android-tanpa-proot-distro/</link><guid isPermaLink="true">https://gilanx.pages.dev/posts/cara-install-openclaw-di-android-tanpa-proot-distro/</guid><description>Panduan install OpenClaw di Android tanpa proot-distro, lebih ringan dari distro Linux penuh dan cocok buat Termux di HP.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Pernah nggak sih mau coba OpenClaw di hp Android tapi langsung gregetan karena harus install Linux lengkap lewat proot-distro yang makan ruang storage sampe hampir 1GB? Nah, sekarang ada cara lebih ringan. Kamu bisa langsung pakai OpenClaw di Android tanpa harus install distro Linux yang berat dan ribet. Tinggal install dynamic linker glibc aja, terus langsung gaspol jalanin OpenClaw di hp kamu. Gampangnya gitu, nggak perlu modal storage besar buat distro Linux.&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;Apa Sih OpenClaw Itu?&lt;a href=&quot;#apa-sih-openclaw-itu&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;OpenClaw itu sebenarnya adalah AI agent крутой yang bisa membantu kamu dalam berbagai hal terkait coding dan pengembangan software. Dia ini semacam asisten AI yang smart dan bisa diandalkan buat ngerjain tugas-tugas teknis kayak debugging, refactoring code, atau bahkan nurunin file dari GitHub langsung dalam hitungan detik. OpenClaw ini punya kemampuan buat memahami konteks kode yang kamu kerjain, jadi dia bisa kasih suggestion yang pas dan akurat sesuai kebutuhan project kamu. Intinya, ini tools yang sangat berguna buat developer maupun yang baru belajar coding.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Fungsi-Fungsi OpenClaw yang Bisa Kamu Manfaatin&lt;a href=&quot;#fungsi-fungsi-openclaw-yang-bisa-kamu-manfaatin&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Ada banyak fungsi OpenClaw yang bikin kerjaan jadi lebih ringan dan cepat. Yang paling utama adalah kemampuannya buat jadi paired AI yang bisa collaborate bareng kamu dalam ngoding, jadi kayak punya teman kerja yang selalu available 24/7 siap tanda tangan semua task tanpa kelelahan. Dia juga bisa otomatis najah code yang bermasalah, nawalin struktur code yang ruwet jadi lebih rapih, dan yang paling asik lagi dia juga support multi-language jadi bisa bekerja dengan berbagai bahasa pemrograman populer kayak Python, JavaScript, Rust, dan masih banyak lagi. Selain itu, OpenClaw juga punya fitur interaktif yang make conversation dialogue jadi kamu bisa kasih instruksi dalam bahasa natural, nggak harus pakai syntax yang ribet.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Penjelasan Tambahan&lt;a href=&quot;#penjelasan-tambahan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Sebenarnya cara standar buat install OpenClaw di Android tuh mengharuskan install proot-distro yang sudah include Linux lengkap, dan itu bisa menghabiskan storage sampe hampir 1GB. Nah, sekarang dengan metode baru OpenClaw di Android, kamu hanya perlu install dynamic linker glibc (disebut ld.so) doang, jadi bisa langsung jalanin OpenClaw tanpa harus install distro Linux penuh. Ini lebih hemat ruang dan lebih cepat prosesnya.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah-Langkah Installasi Lengkap&lt;a href=&quot;#langkah-langkah-installasi-lengkap&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Step 1: Install Termux dari F-Droid&lt;a href=&quot;#step-1-install-termux-dari-f-droid&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ini tahap paling pertama dan wajib banget kamu lakuin. Jangan download Termux dari Google PlayStore ya, karena versi di PlayStore sudah outdated dan nggak support buat instalasi OpenClaw terbaru. Langsung saja ke website resmi F-Droid buat dapetin versi terbaru yang selalu up-to-date dan sudah dioptimasi.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;WARNING: Pastiin kamu download Termux hanya dari situs resmi F-Droid. Versi dari PlayStore sudah usang dan kemungkinan besar akan error saat installasi. Jangan sampai salah download ya!&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Buka browser di hp kamu, ketik alamat F-Droid, trus cari aplikasi Termux terus download dan install seperti biasa. Kalau diminta izin install dari sumber tidak dikenal, tinggal klik izinkan saja, nggak perlu takut.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Step 2: Update dan Upgrade Package di Termux&lt;a href=&quot;#step-2-update-dan-upgrade-package-di-termux&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Nah, setelah Termux berhasil terinstall, sekarang kamu perlu update dan upgrade package dulu biar semua komponen sistem punya versi terbaru dan compatible. Buka aplikasi Termux, terus jalankan command berikut:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Nanti bakal muncul notifikasi konfirmasi, tinggal tekan saja tombol Enter terus sampe selesai. Tunggu sampe prosesnya kelar semua, biasanya butuh beberapa menit tergantung koneksi internet kamu.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Step 3: Install Curl dan Dependencies&lt;a href=&quot;#step-3-install-curl-dan-dependencies&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Setelah update package selesai, sekarang tinggal install Curl yang merupakan perlu buat download script instalasi OpenClaw. Langsung eksekusi command ini:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Tunggu sampe ada teks “Done” atau proses selesai dengan sendiri. Nanti akan muncul indikator progress, jadi kamu bisa tau lagi jalan atau sudah berhenti.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Step 4: Jalankan Script Installasi OpenClaw&lt;a href=&quot;#step-4-jalankan-script-installasi-openclaw&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ini dia tahap yang paling ditunggu-tunggu. Langsung copas atau ketik command ini di Termux kamu:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;myopenclawhub.com/install&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;source&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bashrc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Tekan enter dan tunggu sampe proses installasi beres. Biasanya makan waktu beberapa menit, jadi sabar ya. Nanti kalau succeed akan ada notifikasi sukses dengan warna hijau atau teks yang menjelaskan apa saja yang terinstall.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Step 5: Reload Shell Environment&lt;a href=&quot;#step-5-reload-shell-environment&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Setelah installasi sukses, sekarang kamu perlu reload environment shell biar perubahan terbaru dikenali oleh sistem. Ini sebenarnya penting banget, nggak boleh skip step ini:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;source&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bashrc&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# reload shell (atau: source ~/.zshrc)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Nanti shell akan restart dan semua path ke command OpenClaw sudah bisa dipake langsung.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Step 6: Setup Pertama Kali OpenClaw&lt;a href=&quot;#step-6-setup-pertama-kali-openclaw&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Kalau ini pertama kali kamu install, pastiin buat jalankan command setup awal yang akan mengkonfigurasi OpenClaw sesuai device Android kamu. Ini tahap wajib yang harus dilewati:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;openclaw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setup&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Ikuti semua instruksi yang muncul di layar, biasanya ada beberapa pertanyaan basic yang perlu kamu jawab. Pilih opsi yang sesuai dengan kebutuhan kamu.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Step 7: Menjalankan OpenClaw Gateway&lt;a href=&quot;#step-7-menjalankan-openclaw-gateway&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ini tahap paling penting dan wajib banget dijalanin setiap kali mau pakai OpenClaw. Gateway harus tetap running terus selama kamu menggunakan OpenClaw, jadi jangan close session Termux-nya.&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;openclaw&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gateway&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Biarkan proses ini terus berjalan di foreground/open, kalau perlu kasih notifikasi stay awake di HP kamu biar proses tidak dimatikan sistem. Nanti di layar akan muncul log yang menandakan gateway sudah aktif dan siap terima perintah dari AI agent kamu.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Android mungkin akan kill background process atau throttle saat layar dalam keadaan mati. Silakan cek panduan lengkap di &lt;a href=&quot;https://github.com/AidanPark/openclaw-android/blob/main/docs/disable-phantom-process-killer.md&quot; target=&quot;_blank&quot;&gt;Keeping Processes Alive&lt;/a&gt; buat semua rekomendasi pengaturan yang dibutuhkan (Developer Options, Stay Awake, batasan charging, optimasi battery, dan Phantom Process Killer).&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Referensi Command-Line Interface (CLI)&lt;a href=&quot;#referensi-command-line-interface-cli&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Setelah installasi berhasil, kamu bakal punya akses ke command &lt;code&gt;oa&lt;/code&gt; yang gunanya buat ngatur dan mengelolainstallasi OpenClaw di Android kamu. Berikut tabel command yang tersedia:&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Option&lt;/th&gt;&lt;th&gt;Deskripsi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --update&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Update OpenClaw dan patch khusus Android&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --install&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Install tools tambahan (tmux, code-server, AI CLIs, dll)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --uninstall&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Hapus OpenClaw dari Android&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --backup&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Bikin full backup data OpenClaw&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --restore&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Restore dari backup&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --status&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Tampilkan status installasi dan semua komponen&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --version&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Tampilkan versi&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;oa --help&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Tampilkan opsi yang tersedia&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Cara Update OpenClaw&lt;a href=&quot;#cara-update-openclaw&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Untuk mengupdate versi OpenClaw ke yang terbaru, tinggal jalanin command ini:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;oa&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--update&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;source&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bashrc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Nanti proses update akan otomatis skip komponen yang sudah up-to-date, jadi nggak perlu khawatir kebanyakan proses. Komponen yang belum diinstall juga tidak akan disentuh, hanya bagian yang sudah ada di device lah yang bakal diupdate. Aman buat dijalankan berkali-kali, jadi bisa dijadwalkan rutin setiap minggu atau bulan.&lt;/p&gt;&lt;p&gt;Untuk instalasi versi lama yang belum ada command &lt;code&gt;oa&lt;/code&gt;, bisa pakai ini:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;myopenclawhub.com/update&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;source&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bashrc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Fitur Backup dan Restore&lt;a href=&quot;#fitur-backup-dan-restore&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Command backup bawaan OpenClaw (&lt;code&gt;openclaw backup create&lt;/code&gt;) seringkali gagal di Android karena dia memanfaatkan hardlinks yang diblock di storage private app Android. Untungnya, command &lt;code&gt;oa --backup&lt;/code&gt; mengakali ini dengan menggunakan tar langsung sambil tetep maintain kompatibilitas penuh dengan spesifikasi backup OpenClaw.&lt;/p&gt;&lt;p&gt;Untuk membuat backup:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;oa&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--backup&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;File backup akan disimpan di &lt;code&gt;~/.openclaw-android/backup/&lt;/code&gt; dengan nama file yang pake timestamp (contoh: &lt;code&gt;2026-03-14T00-00-00.000Z-openclaw-backup.tar.gz&lt;/code&gt;). Kamu juga bisa specify custom path:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;oa&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--backup&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/my-backups/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Setiap backup menyimpan konfigurasi, state, workspaces, dan semua data agent kamu dengan lengkap.&lt;/p&gt;&lt;p&gt;Untuk restore dari backup:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;oa&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--restore&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Nanti akan tampil daftar semua backup yang tersedia di direktori default. Kamu tinggal pilih nomor backup yang mau direstore. Tool ini akan otomatis deteksi platform dari manifest backup dan tangani proses restoration ke &lt;code&gt;~/.openclaw/&lt;/code&gt;. Catatan penting: proses ini akan menimpa data yang sudah ada, jadi bakal ada konfirmasi sebelum proses berlanjut.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Catatan Performa&lt;a href=&quot;#catatan-performa&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Command CLI kayak &lt;code&gt;openclaw status&lt;/code&gt; mungkin terasa lebih lambat dibanding waktu dijalankan di PC. Ini karena setiap command harus membaca banyak file, dan kecepatan storage Android memang lebih lambat dari PC biasa, ditambah lagi ada overhead dari security processing Android yang aktif di background.&lt;/p&gt;&lt;p&gt;Tapi tenang saja, begitu gateway sudah running semua jadi tidak ada bedanya sama sekali dengan dijalankan di PC. Prosesnya stay di dalam memory jadi file tidak perlu dibaca ulang terus-menerus, dan response AI diproses di server eksternal — jadi kecepatannya sama seperti saat dijalankan di PC.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Sekian dulu ya tutorial cara install OpenClaw di Android tanpa proot-distro. Kalau ada pertanyaan atau masih bingung di step tertentu, jangan ragu buat tanya di kolom komentar. Selamat mencoba dan happy coding dengan OpenClaw! Buat yang sudah berhasil install, stay tuned buat tutorial menarik lainnya di kesempatan berikutnya. Semoga bermanfaat dan sampai jumpa di tutorial berikutnya!&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Install Claude Code Android Tanpa proot-distro</title><link>https://gilanx.pages.dev/posts/install-claude-code-di-android-pakai-termux-tanpa-proot-distro/</link><guid isPermaLink="true">https://gilanx.pages.dev/posts/install-claude-code-di-android-pakai-termux-tanpa-proot-distro/</guid><description>Panduan ini nuntun install Claude Code CLI di Android murni lewat Termux  tanpa root, tanpa proot-distro.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Kita langsung ke inti pembahasan&lt;a href=&quot;#kita-langsung-ke-inti-pembahasan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Panduan ini nuntun install Claude Code CLI di Android murni lewat Termux  tanpa root, tanpa proot-distro. Triknya pakai glibc linker dari OpenClaw yang bikin binary Linux biasa bisa jalan di lingkungan Termux.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Yang bakal kita lakukan:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Termux di-setup dari nol&lt;/li&gt;
&lt;li&gt;Runtime glibc dipasang buat jalanin binary Linux&lt;/li&gt;
&lt;li&gt;Claude Code CLI di-install dan dikonfigurasi&lt;/li&gt;
&lt;li&gt;Command &lt;code&gt;claude&lt;/code&gt; siap dipake langsung dari terminal&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Peringatan penting:&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;Jangan pernah &lt;code&gt;pkg upgrade nodejs&lt;/code&gt; atau &lt;code&gt;apt upgrade&lt;/code&gt; yang ganti Node.js bawaan Termux  ini bakal bikin Claude break karena beda ABI.&lt;/li&gt;
&lt;li&gt;Selalu update Claude lewat &lt;code&gt;oa update&lt;/code&gt; atau npm dengan PATH yang udah diset ke wrapper OpenClaw.&lt;/li&gt;
&lt;li&gt;Ini bukan cara resmi dari Anthropic atau Termux. Bisa aja break pas update besar.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah 1: Install Termux dari Sumber yang Bener&lt;a href=&quot;#langkah-1-install-termux-dari-sumber-yang-bener&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Jangan download Termux dari Play Store  versinya udah deprecated dan gak dapet update keamanan.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cara yang bener:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Buka F-Droid atau GitHub Releases Termux&lt;/li&gt;
&lt;li&gt;Download APK terbaru dari:
&lt;ul&gt;
&lt;li&gt;F-Droid: &lt;code&gt;https://f-droid.org/packages/com.termux/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;GitHub: &lt;code&gt;https://github.com/termux/termux-app/releases&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install APK-nya&lt;/li&gt;
&lt;li&gt;Buka Termux, kasih permission storage kalo diminta:
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;termux-setup-storage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Kalo udah muncul prompt &lt;code&gt;$&lt;/code&gt; siap jalan.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah 2: Update Paket dan Install Dependensi Dasar&lt;a href=&quot;#langkah-2-update-paket-dan-install-dependensi-dasar&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Sebelum install apa-apa, update dulu repo dan paket yang ada:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Ini bisa makan waktu beberapa menit tergantung koneksi. Kalo ada mirror yang lambat, Termux otomatis pilih yang lebih cepet.&lt;/p&gt;&lt;p&gt;Lanjut install tool yang dibutuhin:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-y&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;wget&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;proot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Fungsi masing-masing:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wget&lt;/code&gt; &amp;amp; &lt;code&gt;curl&lt;/code&gt;: download file dan script installer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proot&lt;/code&gt;: emulator environment (dibutuhin buat glibc linker)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git&lt;/code&gt;: clone repo atau manage config nanti&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Kalo udah selesai, lanjut ke langkah berikutnya.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah 3: Install OpenClaw (Glibc Runtime)&lt;a href=&quot;#langkah-3-install-openclaw-glibc-runtime&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;OpenClaw nyediain glibc linker yang bikin binary Linux biasa (yang butuh glibc) bisa jalan di Termux yang aslinya pake bionic libc.&lt;/p&gt;&lt;p&gt;Jalankan bootstrap installer:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;myopenclawhub.com/install&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Yang terjadi di background:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Script ngecek arsitektur device (harusnya aarch64 buat HP modern)&lt;/li&gt;
&lt;li&gt;Download dan setup glibc-runner&lt;/li&gt;
&lt;li&gt;Install Node.js versi glibc (bukan versi Termux bionic)&lt;/li&gt;
&lt;li&gt;Patch hardcoded path di dependency (&lt;code&gt;/tmp&lt;/code&gt;, &lt;code&gt;/bin/sh&lt;/code&gt;, &lt;code&gt;/usr/bin/env&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Setup wrapper command &lt;code&gt;oa&lt;/code&gt; buat manage update nanti&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Proses ini bisa makan waktu 5-10 menit tergantung koneksi. Kalo selesai, bakal muncul pesan sukses.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Verifikasi Node.js dari OpenClaw:&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/data/data/com.termux/files/home/.openclaw-android/bin/node&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Harusnya keluar &lt;code&gt;v22.x.x&lt;/code&gt; atau lebih baru.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah 4: Install Claude Code CLI&lt;a href=&quot;#langkah-4-install-claude-code-cli&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Sekarang install Claude Code pake npm yang udah nyatu sama OpenClaw:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;@anthropic-ai/claude-code&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ignore-scripts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Flag &lt;code&gt;--ignore-scripts&lt;/code&gt; penting buat skip postinstall yang bisa gagal di environment Termux.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Masalah yang bakal muncul:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Kalo langsung coba jalanin &lt;code&gt;claude --version&lt;/code&gt;, bakal keluar error:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Error: claude native binary not installed.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Ini karena &lt;code&gt;--ignore-scripts&lt;/code&gt; tadi skip instalasi native binary. Fix-nya manual:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;/@anthropic-ai/claude-code/install.cjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Script ini download dan setup native binary yang dibutuhin Claude Code.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah 5: Buat Command Global &lt;code&gt;claude&lt;/code&gt;&lt;a href=&quot;#langkah-5-buat-command-global-claude&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Sekarang Claude Code udah terinstall tapi belum bisa dipanggil langsung. Perlu symlink ke PATH Termux.&lt;/p&gt;&lt;p&gt;Cari lokasi CLI wrapper:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data/data/com.termux/files/usr/lib/node_modules/@anthropic-ai/claude-code/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;File yang dicari: &lt;code&gt;cli-wrapper.cjs&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Buat symlink:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ln&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-sf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data/data/com.termux/files/usr/lib/node_modules/@anthropic-ai/claude-code/cli-wrapper.cjs&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data/data/com.termux/files/usr/bin/claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Biar executable:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;chmod&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data/data/com.termux/files/usr/bin/claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Verifikasi instalasi:&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;claude&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Kalo sukses, keluar output kayak:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2.1.123 (Claude Code)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah 6: Login dan Autentikasi&lt;a href=&quot;#langkah-6-login-dan-autentikasi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pertama kali jalanin &lt;code&gt;claude&lt;/code&gt;, bakal diminta login. Ada dua cara:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cara 1: Browser Flow (Recommended)&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Bakal muncul URL dan device code. Buka URL di browser, masukin code, login dengan akun Anthropic.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cara 2: API Key (Kalo punya)&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;sk-ant-...&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Simpen di &lt;code&gt;.bashrc&lt;/code&gt; atau &lt;code&gt;.zshrc&lt;/code&gt; biar gak perlu export ulang setiap sesi.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Cara Update Claude Code Nanti&lt;a href=&quot;#cara-update-claude-code-nanti&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;JANGAN&lt;/strong&gt; pake &lt;code&gt;npm update -g&lt;/code&gt; langsung atau &lt;code&gt;pkg upgrade&lt;/code&gt;. Ini bisa break environment.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cara yang bener:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Pake command wrapper dari OpenClaw:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;oa&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;@anthropic-ai/claude-code&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Atau kalo mau manual:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PATH&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;/data/data/com.termux/files/home/.openclaw-android/bin:&lt;/span&gt;&lt;span&gt;$PATH&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;@anthropic-ai/claude-code&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;/@anthropic-ai/claude-code/install.cjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Selalu jalankan postinstall script abis update buat pastiin native binary ke-install ulang.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Troubleshooting&lt;a href=&quot;#troubleshooting&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Claude gak dikenali sebagai command&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Cek symlink:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-la&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/data/data/com.termux/files/usr/bin/claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Kalo gak ada, buat ulang sesuai Langkah 5.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Error: native binary not installed&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Jalankan ulang postinstall:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; $(&lt;/span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-g&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;/@anthropic-ai/claude-code/install.cjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Claude crash atau exit tiba-tiba&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Coba clear cache:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;claude&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;logout&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-rf&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Device code expired&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Generate ulang:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;claude&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;login&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Struktur File yang Dibuat&lt;a href=&quot;#struktur-file-yang-dibuat&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/data/data/com.termux/files/home/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── .openclaw-android/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── bin/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   │   ├── node          # Node.js glibc wrapper&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   │   ├── npm           # npm wrapper&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   │   └── npx           # npx wrapper&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── patches/          # Patch file buat compatibility&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── patch.log         # Log patch yang diterapkan&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/data/data/com.termux/files/usr/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── bin/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── claude            # Symlink command global&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── lib/node_modules/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└── @anthropic-ai/claude-code/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── cli-wrapper.cjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── install.cjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└── node_modules/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;Tampilkan lagi&lt;/span&gt;&lt;span&gt;Ringkas lagi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Catatan Tambahan&lt;a href=&quot;#catatan-tambahan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Tentang Keamanan&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Script installer dari third-party (OpenClaw). Review dulu sebelum jalanin &lt;code&gt;curl | bash&lt;/code&gt; kalo concern soal security.&lt;/li&gt;
&lt;li&gt;API key Anthropic tersimpan lokal. Jangan share folder &lt;code&gt;~/.claude&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Tentang Performa&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Claude Code di Termux gak secepat di desktop karena limitasi hardware HP.&lt;/li&gt;
&lt;li&gt;Native binary compile buat Linux x86_64, tapi jalan via glibc-wrapper di ARM. Ada overhead kecil.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Tentang Kompatibilitas&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Gak semua fitur Claude Code desktop tersedia di Termux.&lt;/li&gt;
&lt;li&gt;Fitur yang butuh GUI atau system call khusus mungkin gak jalan.&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Kesimpulan&lt;a href=&quot;#kesimpulan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Claude Code sekarang bisa jalan di Termux tanpa root atau proot-distro penuh. Kuncinya ada di glibc linker dari OpenClaw yang jadi jembatan antara binary Linux dan environment Termux.&lt;/p&gt;&lt;p&gt;Yang perlu diinget:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Selalu pake &lt;code&gt;oa update&lt;/code&gt; buat update&lt;/li&gt;
&lt;li&gt;Jangan mix Node.js Termux sama Node.js OpenClaw&lt;/li&gt;
&lt;li&gt;Backup config dan API key regularly&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Selamat coding dengan Claude di Termux Android. ;)&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Surat untuk Satu Tahun yang Tidak Pernah Mudah</title><link>https://gilanx.pages.dev/posts/surat-untuk-satu-tahun-yang-tidak-pernah-mudah/</link><guid isPermaLink="true">https://gilanx.pages.dev/posts/surat-untuk-satu-tahun-yang-tidak-pernah-mudah/</guid><description>Sebelum mulai ngetik ini, baiknya aku jujur. Cerita ini dari sudut pandangku. Nggak ada yang aku lebih-lebihkan. Mungkin malah ada yang aku kurangi..</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sebelum aku mulai ngetik ini, baiknya aku jujur dulu. Cerita ini dari sudut pandangku. Nggak ada yang aku lebih-lebihkan. Mungkin malah ada yang aku kurangi, soalnya ini bukan cuma ceritaku. Ini juga ceritanya dia. Privasi kita berdua tetep harus dijaga, walau udah di ujung yang begini. Jadi anggap aja ini surat yang nggak pernah aku kirim. Monolog tengah malam yang perlu ditulis supaya hatiku nggak meledak sendiri.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Satu tahun yang lalu, hidupku kenalan sama seseorang yang bahkan di mimpi paling liar pun nggak pernah aku bayangin. Lewat satu pesan di Instagram. Cuma satu pesan kecil. Nggak ada yang spesial. Nggak ada yang bikin deg-degan. Tapi entah gimana, dari notifikasi itu aku nemuin seseorang yang bikin hatiku belajar arti sayang yang sebenernya.&lt;/p&gt;
&lt;p&gt;Dan sekarang, duduk di sini satu tahun kemudian, aku masih nggak habis pikir. Satu pesan doang bisa ngubah segalanya. Kayak beli lotre tanpa niat menang, eh taunya dapet jackpot. Jackpot yang sekarang bikin aku nangis juga sih, tapi ya sudahlah.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Empat bulan pertama kita jalani dengan jarak. LDR. Siapa yang pernah ngalamin pasti tahu rasanya. Bangun pagi, yang pertama dicari bukan sarapan tapi layar HP. Nunggu balesan yang kadang lama banget, lama sampai kamu mulai mikir macem-macem sendiri.&lt;/p&gt;
&lt;p&gt;Kita belajar saling memahami dari balik layar. Saling nebak mood lewat emoji. Dengerin suara yang kadang putus-putus karena sinyal jelek. Dan jujur, pertengkaran udah jadi tamu yang nggak pernah permisi. Dari yang masih malu-malu, sampai di titik kita berdua ngomong tanpa mikir panjang.&lt;/p&gt;
&lt;p&gt;Pola itu terus berulang. Sampai di apa yang mungkin bisa aku sebut sebagai “akhir”. Tapi di saat kayak gini, aku bahkan nggak yakin ini beneran akhir atau cuma jeda panjang sebelum kita ketemu lagi, pelukan, dan lupa semua sakit.&lt;/p&gt;
&lt;p&gt;Aku capek. Bukan karena nggak sayang. Capek karena hubungan ini rasanya kayak lari di treadmill. Keringetan, napas ngos-ngosan, tapi nggak pernah sampai mana-mana. Capek karena kita selalu saling nyalahin, sama-sama keras kepala, sama-sama nunggu yang lain ngalah duluan. Padahal di balik semua ego itu, kita sama-sama takut kehilangan. Dua orang yang sama-sama takut kehilangan tapi malah saling dorong menjauh. Lucu ya.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Akhir Agustus 2025. Pertama kali kita ketemu langsung. Semua yang selama ini cuma ada di layar jadi nyata. Aku bisa liat senyumnya bukan dari foto, tapi langsung di depan mata.&lt;/p&gt;
&lt;p&gt;Sejak hari itu semuanya berubah. Kita mulai sering ketemu, seminggu sekali atau dua kali. Tiap pertemuan rasanya kayak hadiah yang nggak pernah cukup. Semua udah kita lalui bareng. Ketawa sampai perut sakit. Diem-dieman yang bikin dada sesak.&lt;/p&gt;
&lt;p&gt;Nggak ada yang sempurna, tapi semuanya terasa nyata. Dan justru di situlah letak cantiknya.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Dari hari pertama aku udah tahu kalau dia beda. Ada sesuatu yang bikin aku nggak mau lepas. Bukan obsesi, bukan karena nggak bisa move on. Aku sayang dia. Titik.&lt;/p&gt;
&lt;p&gt;Perasaan itu bikin aku rela bersabar lebih dari yang seharusnya. Sabar waktu dia ngilang tanpa kabar. Sabar waktu dia ngomong hal-hal yang bikin dada perih. Sabar sampai di titik yang mungkin orang lain sebut nggak wajar. Aku sampai ngemis. Iya, ngemis. Bukan ngemis materi, tapi ngemis perhatian. Supaya dia nggak pergi.&lt;/p&gt;
&lt;p&gt;Setiap kali kita putus, setiap kali kita nyambung lagi, aku selalu jadi yang paling dulu ngulurin tangan. Bukan karena aku nggak punya harga diri. Tapi karena harga diriku waktu itu udah nyatu sama harapan bahwa dia akan berubah. Bahwa kita akan lebih baik. Bahwa semua ini bakal ada ujungnya yang manis.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Tapi hidup nggak pernah seindah rencana. Ada beberapa kejadian yang nggak bisa aku lupain begitu aja. Kejadian yang ninggalin bekas. Yang bikin aku ngerasa dikhianati sama orang yang paling aku percaya.&lt;/p&gt;
&lt;p&gt;Anehnya, di saat hati udah sakit, di saat logika udah teriak buat pergi, aku masih aja milih bertahan. Mungkin orang bakal bilang aku bodoh. Mungkin mereka bilang aku terlalu naif. Tapi mereka nggak ngerasain gimana rasanya punya seseorang yang bikin dunia terasa lebih hangat. Yang bikin hari-hari biasa jadi punya makna. Yang bikin kamu rela nahan sakit demi satu senyum dia.&lt;/p&gt;
&lt;p&gt;Jadi ya, aku bertahan. Pilihanku waktu itu cuma satu. Dia.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Hari-hari terus berganti. Dan pola kita? Ya gitu-gitu aja. Habis berantem, kita ketemu. Habis ketemu, kita ketawa. Habis ketawa, entah gimana caranya, kita berantem lagi.&lt;/p&gt;
&lt;p&gt;Siklus yang nggak pernah berhenti. Kayak lagu yang di-repeat. Atau mungkin bosen, tapi nggak bisa berhenti dengerin.&lt;/p&gt;
&lt;p&gt;Aku sering mikir, sebenernya apa yang salah? Apa karena umur kita yang beda jauh, bikin cara pandang kita ke hidup juga beda? Apa karena ekspektasi kita sama hubungan ini nggak pernah ketemu di tengah?&lt;/p&gt;
&lt;p&gt;Aku nggak mau nyalahin dia, karena aku juga tahu aku nggak sempurna. Kita berdua sama-sama punya bagian yang bikin ini semua rusak. Nggak ada yang salah total, tapi juga nggak ada yang benar total. Kayak dua orang yang sama-sama pegang ujung tali, tarik-tarikan, dan nggak ada yang mau lepas sementara talinya makin lama makin bikin tangan lecet.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Tapi di balik semua kekacauan itu, ada satu hal yang nggak pernah berubah. Aku masih pengen menua bareng dia.&lt;/p&gt;
&lt;p&gt;Bayangan itu masih bikin dada aku anget tiap kali muncul. Aku masih inget gimana bahagianya aku waktu bareng dia. Bukan bahagia yang meledak-ledak, tapi bahagia yang sunyi. Yang dateng perlahan. Yang bikin kamu ngerasa “oh, ternyata di sini tempat aku pulang.”&lt;/p&gt;
&lt;p&gt;Perasaan itu nggak pernah benar-benar mati. Dia cuma tidur. Nunggu di sudut hati yang paling dalam. Aku tuh sebenernya udah nyiapin semuanya di kepala. Gimana kalau tua bareng. Gimana kalau punya rumah kecil. Gimana kalau tiap pagi bangun dan liat muka yang sama. Itu harapan yang pernah aku pegang erat-erat, bahkan di hari-hari paling buruk sekalipun.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Tapi beberapa minggu terakhir, semuanya berubah. Aku mulai ngerasa lelah yang beda dari sebelumnya. Bukan lelah biasa yang bisa ilang cuma dengan tidur. Ini lelah yang nempel di tulang. Yang bikin bangun pagi aja rasanya berat. Yang bikin kamu ngelirip HP dan berharap ada kabar tapi di saat yang sama takut kalau kabarnya dateng.&lt;/p&gt;
&lt;p&gt;Kenapa hubungan yang seharusnya jadi tempat berlindung malah jadi tempat yang bikin luka?&lt;/p&gt;
&lt;p&gt;Sayangnya masih ada, masih banyak malah. Tapi sayang aja nggak cukup kan? Hubungan yang layak, yang harmonis, yang bikin kedua orang di dalamnya tumbuh bukan hancur. Itu yang aku mau. Itu yang seharusnya kita punya. Kenapa hal sesederhana itu terasa mustahil buat kita?&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Aku udah ngasih banyak dari diriku. Waktu, energi, materi. Jangan ditanya.&lt;/p&gt;
&lt;p&gt;Sejak awal aku udah tahu bahwa mencintai dia itu kayak taruhan besar. Kayak judi yang kamu tahu risikonya tinggi, tapi kamu tetap pasang karena kamu percaya kamu bakal menang. Dan kalau gagal? Aku udah kehilangan banyak. Waktu yang nggak bisa diputar balik. Energi yang udah terkuras. Materi yang bisa aku pakai buat hal lain.&lt;/p&gt;
&lt;p&gt;Sementara dia? Dia masih muda. Dia masih punya banyak waktu. Dan kadang, di tengah malam yang sunyi, aku mikir. Apakah dia sadar berapa banyak yang udah aku korbankan? Atau semua itu cuma keliatan besar di mataku, tapi biasa aja di matanya?&lt;/p&gt;
&lt;p&gt;Aku tuh kayak orang yang udah taruhan semua chip di meja poker, sementara dia masih punya chip cadangan di saku. Beda banget posisinya. Dan itu bikin takut, jujur.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Pertanyaan-pertanyaan itu yang terus muter di kepala. Apakah dia beneran serius? Atau dia cuma kesepian dan aku kebetulan ada di waktu yang tepat? Apakah dia benar-benar sayang, atau aku cuma dimanfaatkan buat ngisi kekosongan?&lt;/p&gt;
&lt;p&gt;Bukan tuduhan. Mereka cuma keraguan yang tumbuh karena aku terlalu lama kasih tanpa pernah yakin apa yang aku terima balik setara. Dan apakah itu yang bikin aku lelah? Mungkin. Atau mungkin lelah itu dateng karena aku sadar bahwa aku nggak bisa terus-terusan jadi satu-satunya yang berjuang. Kayak mendaki gunung sendirian sambil gendong ransel dua orang. Lama-lama lutut juga nggak kuat.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Dan ironisnya, hari ini. Tepat satu tahun sejak pesan pertama itu mendarat di inbox-ku. Hari yang seharusnya kita rayain. Kita malah diem-dieman.&lt;/p&gt;
&lt;p&gt;Nggak ada kabar. Nggak ada ucapan. Sudah dua hari. Dua hari yang rasanya lebih panjang dari empat bulan LDR kita dulu. Dua hari di mana aku bolak-balik buka HP, liat profilnya, ngetik pesan, hapus lagi, ngetik lagi, hapus lagi. Karena apa yang harus aku bilang? “Selamat satu tahun”? Atau “Kamu baik-baik aja?” Atau cukup diem dan berharap dia yang duluan nyapa?&lt;/p&gt;
&lt;p&gt;Aku nggak tahu. Dan ketidak-tahuan itulah yang paling menyakitkan. Kayak nunggu kereta di stasiun yang udah nggak ada jadwalnya lagi.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Aku masih berharap. Itu yang paling jujur bisa aku bilang. Harapan itu masih ada. Kecil. Rapuh. Tapi masih hidup.&lt;/p&gt;
&lt;p&gt;Aku berharap dia baca ini dan ngerasa sesuatu. Ngerasa kehilangan. Sadar bahwa ada seseorang di luar sana yang udah ngasih semuanya.&lt;/p&gt;
&lt;p&gt;Tapi di saat yang sama, aku lelah. Dan lelah itu nggak bisa dinegosiasikan sama harapan. Kamu bisa berharap setinggi langit, tapi kalau badan dan hatimu udah nggak kuat ngangkat, ya akhirnya kamu harus taruh semuanya dan duduk sebentar.&lt;/p&gt;
&lt;p&gt;Mungkin aku harus nyerah. Bukan karena aku mau. Tapi karena mungkin ini satu-satunya cara buat aku nggak hancur sepenuhnya. Dan kalau dia baca ini terus nanya “kenapa?”, aku nggak akan nyalahin dia. Ini bukan tentang siapa yang salah. Ini tentang aku yang udah nggak punya tenaga buat terus-terusan ngelakuin ini sendirian.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Meskipun begitu, ada satu hal yang nggak bisa aku bohongin. Aku kangen.&lt;/p&gt;
&lt;p&gt;Kangen momen-momen receh yang sekarang rasanya mahal banget. Ketawa bareng sampai orang-orang sekitar ngeliatin kita kayak orang gila. Jalan bareng tanpa tujuan yang jelas. Hujan yang bikin kita berteduh bareng, panas yang bikin kita cari es teler di pinggir jalan.&lt;/p&gt;
&lt;p&gt;Momen kecil yang waktu itu biasa aja, sekarang jadi kenangan yang nggak bisa aku ganti. Dan mungkin itu emang sifat rindu. Dia dateng nggak pas kamu lagi sedih, tapi pas kamu lagi inget hal-hal kecil yang bikin kamu ngerasa pernah bahagia. Kayak nemu foto lama di saku celana yang udah nggak pernah dipake. Nggak nyangka, tapi bikin senyum sendiri.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Jadi kembali ke pertanyaan awal: apakah ini yang terakhir?&lt;/p&gt;
&lt;p&gt;Aku nggak tahu. Jujur, aku bener-bener nggak tahu. Hatiku sekarang campur aduk. Ada marah, ada sedih, ada rindu, ada lega, ada takut. Ada harapan yang masih keras kepala nggak mau mati.&lt;/p&gt;
&lt;p&gt;Apakah aku bakal kuat kalau harus lepas? Aku nggak tahu. Mungkin kuat, mungkin nggak. Tapi yang aku tahu, aku juga nggak yakin bisa terus bertahan kalau semuanya tetap kayak gini. Nggak ada perubahan. Nggak ada yang ngalah. Cuma siklus yang nggak berujung. Dan hidup itu terlalu pendek buat diabisin di hubungan yang bikin kamu nanya “apa aku cukup?” setiap hari.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Apapun yang terjadi sama kamu di sana, di tempat yang sekarang nggak bisa aku jangkau, aku cuma bisa harap kamu baik-baik aja. Aku harap kamu sehat, karena kamu selalu nggak jaga diri sendiri. Aku harap semua urusanmu dilancarkan. Aku harap cita-citamu tercapai, karena aku tahu kamu punya mimpi-mimpi yang layak dikejar.&lt;/p&gt;
&lt;p&gt;Semua itu aku ucapin dengan tulus. Bukan karena aku mau terlihat dewasa atau baik hati. Tapi karena meski semuanya berakhir kayak gini, aku tetap nggak bisa berharap buruk sama seseorang yang pernah jadi bagian terindah di hidupku.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Surat ini ditulis oleh seseorang yang pernah mencintaimu dengan cara yang mungkin nggak sempurna, tapi dengan ketulusan yang nggak pernah palsu.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Gilang M&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Untukmu, belahan jiwaku. Melani Sajdah Annisa.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Cara Install Hermes Agent di Android pakai Termux</title><link>https://gilanx.pages.dev/posts/cara-install-hermes-agent-di-android-pakai-termux/</link><guid isPermaLink="true">https://gilanx.pages.dev/posts/cara-install-hermes-agent-di-android-pakai-termux/</guid><description>Kemarin ada yang nyeletuk ke aku, &quot;Hermes Agent bisa jalan di Android gak, bro?&quot; Nada nanyanya tuh campuran penasaran sama trauma instalasi gagal.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kemarin ada yang nyeletuk ke aku, “Hermes Agent bisa jalan di Android gak, bro?” Nada nanyanya tuh campuran penasaran sama trauma instalasi gagal. Wajar. Soalnya kalau udah urusan terminal di HP, banyak orang langsung kebayang layar item, command aneh, terus mental breakdown kecil jam 11 malem.&lt;/p&gt;
&lt;p&gt;Jawaban singkat: bisa. Jawaban jujur: bisa banget, asal jangan mode kebut setan. Karena biasanya yang bikin gagal tuh bukan hal gede, tapi hal receh. Iya, receh. Kayak lupa satu langkah, terus ujung-ujungnya muter di error yang sama sampe pengin lempar HP ke kasur (jangan ke tembok, mahal).&lt;/p&gt;
&lt;p&gt;Daripada aku jawab sepotong-sepotong di chat terus jadi serial drama 12 episode, mending aku tulis rapih di sini. Ini bukan teori ngawang ala “katanya internet”. Ini alur yang beneran aku pakai sendiri pas masang di HP. Jadi kalau ada jebakan batman, harusnya udah ke-detect duluan.&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;Apa itu Hermes AI Agent&lt;a href=&quot;#apa-itu-hermes-ai-agent&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Hermes Agent itu agen AI dari Nous Research. Dia bukan chatbot yang kerjaannya cuma jawab “wah pertanyaan bagus”. Dia lebih cocok jadi partner kerja di terminal. Kamu kasih instruksi, dia bantu nyusun langkah, jalanin command, terus nunjukin hasilnya. Jadi bukan cuma bacot, ada eksekusi.&lt;/p&gt;&lt;p&gt;Tapi ya, jangan langsung berharap hidup auto beres. Ini bukan jin pengabul permintaan. Output tetap harus kamu cek, karena AI juga bisa sotoy dengan penuh percaya diri. Bedanya, buat kerjaan berulang yang ngebosenin, tool ini bisa ngurangin capek dan bikin kamu gak ngerasa jadi robot manual.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;NOTE&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Hermes Agent ngebantu banget buat percepat kerja, tapi keputusan akhir tetap di kamu. Anggap dia partner, bukan autopilot.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Biasanya dipakai buat apa?&lt;a href=&quot;#biasanya-dipakai-buat-apa&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pemakaian paling waras tuh buat hal-hal yang sering kejadian: bikin boilerplate script, jalanin command rutin, beresin file, atau belajar command line sambil lihat contoh nyata. Intinya, kerjaan yang kalau diulang manual bikin jiwa sedikit demi sedikit keluar dari raga.&lt;/p&gt;&lt;p&gt;Kalau aku pribadi, paling sering buat setup project kecil sama bersih-bersih file. Gak seksi, gak cinematic, gak ada ledakan. Tapi hemat waktu banget. Dan kadang justru itu yang paling penting: kerja kelar, kepala tetap waras, kopi masih hangat.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;TIP&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Kalau baru mulai, pakai dulu buat tugas repetitif yang risikonya kecil. Biar kamu kenal polanya tanpa deg-degan berlebihan.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Langkah install di Android (Termux)&lt;a href=&quot;#langkah-install-di-android-termux&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1) Pakai Termux dari F-Droid, jangan dari Play Store&lt;a href=&quot;#1-pakai-termux-dari-f-droid-jangan-dari-play-store&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ini wajib. Serius. Jangan dinego.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;IMPORTANT&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Ambil Termux dari sumber resmi yang konsisten dari awal. Campur sumber aplikasi/plugin bisa bikin error tanda tangan APK dan bikin pusing sendiri.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Versi Play Store itu udah lama gak diurus. Jadi kalau kamu install dari situ, peluang ketemu error random naik drastis. Bukan berarti pasti meledak, tapi ya… kayak naik motor tanpa spion: bisa aja nyampe, tapi kenapa cari tantangan?&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;WARNING&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Jangan pakai Termux versi Play Store buat alur ini. Pakai versi F-Droid biar update package dan dependensi lebih aman.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Ambil Termux dari F-Droid biar fondasinya aman. Setelah install, buka Termux seperti biasa. Tarik napas. Kita lanjut.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2) Update package dulu&lt;a href=&quot;#2-update-package-dulu&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Sebelum install Hermes, update dulu biar lingkungan bersih. Jalankan:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;pkg&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upgrade&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Terus tunggu sampe bener-bener selesai. Kalau muncul konfirmasi, Enter aja. Jangan keburu lanjut cuma karena “kayaknya udah”. Di dunia terminal, “kayaknya” itu saudara kandungnya “error”.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3) Install Hermes dari script resmi&lt;a href=&quot;#3-install-hermes-dari-script-resmi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Kalau update aman, gas ke command ini:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-fsSL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Itu script resmi, jadi jalurnya jelas. Pas proses jalan, biarin aja. Kalau output rame, itu normal, bukan tanda HP kamu kesurupan.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4) Reload shell&lt;a href=&quot;#4-reload-shell&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Nah ini langkah yang sering dilupain karena kelihatannya sepele, padahal penting. Jalankan:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;source&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bashrc&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# atau source ~/.zshrc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Fungsinya biar environment baru kebaca saat ini juga. Kalau kamu skip, nanti ngetik &lt;code&gt;hermes&lt;/code&gt; terus keluar &lt;code&gt;command not found&lt;/code&gt;, lalu kamu menatap layar kosong sambil mempertanyakan pilihan hidup. Padahal tinggal reload doang.&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5) Jalankan setup awal&lt;a href=&quot;#5-jalankan-setup-awal&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Lanjut:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;hermes&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;setup&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Ikutin pertanyaannya sampai beres. Biasanya gak panjang. Kalau lolos tanpa error, selamat, kamu resmi naik level: dari “penasaran” jadi “bisa pakai”.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;CAUTION&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Jangan copas command dari sumber random tanpa cek dulu. Salah satu karakter aja bisa bikin command beda total.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Tiga masalah klasik yang sering bikin drama&lt;a href=&quot;#tiga-masalah-klasik-yang-sering-bikin-drama&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pertama, install Termux dari Play Store. Kedua, lupa reload shell. Ketiga, keburu lanjut padahal &lt;code&gt;pkg upgrade&lt;/code&gt; belum kelar. Tiga ini tuh paket kombo paling sering bikin orang muter-muter sambil ngomel ke layar.&lt;/p&gt;&lt;p&gt;Biar aman, perlakukan tiga poin itu kayak checklist sebelum berangkat: dompet, kunci, HP. Cek dulu. Karena seringnya masalah bukan di Hermes-nya, tapi di langkah awal yang kelewat gara-gara semangat 45.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Penutup&lt;a href=&quot;#penutup&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Kalau kamu ngikut alur ini, harusnya proses install Hermes di Android jauh lebih mulus. Bukan jaminan hidup tanpa error selamanya, tapi minimal kamu gak tersandung batu yang sama tiap dua meter.&lt;/p&gt;&lt;p&gt;Semoga habis ini kamu lebih banyak pakai Hermes buat ngebut kerjaan, bukan buat debugging berjam-jam cuma gara-gara typo atau step yang kelewat. Kalau masih mentok, santai aja. Debugging itu bagian dari hidup, sama kayak mantan yang kadang tiba-tiba muncul pas udah move on.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Referensi sumber&lt;a href=&quot;#referensi-sumber&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Download Termux resmi di F-Droid: &lt;a href=&quot;https://f-droid.org/packages/com.termux/&quot; target=&quot;_blank&quot;&gt;https://f-droid.org/packages/com.termux/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo resmi Termux (GitHub): &lt;a href=&quot;https://github.com/termux/termux-app&quot; target=&quot;_blank&quot;&gt;https://github.com/termux/termux-app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Repo resmi Hermes Agent: &lt;a href=&quot;https://github.com/NousResearch/hermes-agent&quot; target=&quot;_blank&quot;&gt;https://github.com/NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dokumentasi Hermes Agent untuk Termux: &lt;a href=&quot;https://hermes-agent.nousresearch.com/docs/getting-started/termux&quot; target=&quot;_blank&quot;&gt;https://hermes-agent.nousresearch.com/docs/getting-started/termux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item></channel></rss>