Edisi 1 · RWID · Ecobook Edition
Ditulis oleh Eko Suprapto Wibowo, pendiri Remote Worker Indonesia.
Buku ini tumbuh dari satu peristiwa nyata: sebuah serangan otomatis ke
remoteworker.id pada 2 Oktober 2026. Alih-alih menyembunyikannya, kami
membukanya dan memakai serangan itu sebagai bahan ajar. Setiap bab berjalan
dengan pola yang sama:
teori → cara umum di industri → cara Ecosphere melakukannya → serpihan insiden nyata.
Buku ini bukan ringkasan berita. Ia menjelaskan mengapa sebuah sistem dibangun seperti ini, bukan sekadar apa yang dipasang.
Buku ini bertumbuh. Setiap serangan baru yang masuk ke RWID akan menjadi bab baru pada edisi berikutnya. Membeli buku ini berarti memiliki catatan yang terus bertambah — bukan sekali baca lalu selesai. Semakin banyak yang mencoba menjatuhkan kami, semakin tebal bukunya.
© RWID. Diterbitkan sebagai Ecobook.
RWID (Remote Worker Indonesia) sudah berjalan sejak 2017. Pada 2025 ia viral — dan viralnya dibarengi tuduhan miring dari banyak orang yang tidak mengenalnya: scam. Saya sudah menceritakan sisi manusianya di halaman Welcome aplikasi ini, dan saya tidak akan mengulang semuanya di sini. Yang perlu Anda tahu hanya satu akibatnya: RWID berhenti, lalu setahun kemudian memutuskan kembali.
Saat memutuskan kembali, saya menyusun ulang prioritasnya. Bukan fitur dulu. Bukan tampilan dulu. Keamanan dulu. Alasannya sederhana: tuduhan scam itu, betul atau salah, membuat saya sadar bahwa RWID tidak akan pernah bisa membuktikan apa pun kalau sistemnya roboh begitu diserang. Tahun 2025, saya membangun cepat, memakai banyak layanan pihak ketiga, dan menyesuaikan diri dengan cara yang menurut saya sendiri tidak bisa dipertahankan. Satu di antaranya bikin semua stored procedure RWID hilang. Sejak itu satu prinsip saya pegang: Zero Trust — jangan percaya apa pun yang datang dari internet sampai ia membuktikan dirinya.
Maka ketika RWID kembali pada 2026, saya membangunnya di atas fondasi yang berbeda, dan saya menantang dunia secara terbuka:
Post itu — di Instagram dan Threads — adalah pemicunya. Saya sengaja membuka diri. Serangan yang datang bukan kejutan; ia adalah tamu yang kami undang. Tujuannya satu: membuktikan, secara publik, bahwa sistem ini kuat — dan kalau ternyata belum, kami ingin tahu sekarang, bukan saat jutaan orang sedang menonton.
Buku ini lahir dari undangan itu. Ia menjelaskan teori keamanan yang mendasarinya, arsitektur yang kami bangun, dan serangan nyata yang benar-benar kami tangkis beberapa jam setelah post itu tersebar.
Satu hal yang akan Anda lihat berulang kali: kekuatan kami bukan pada satu tembok besar, melainkan pada cara kami menyusun sistem sehingga satu perbaikan kecil bisa menyebar cepat ke semuanya. Itulah Ecosphere.
— Eko
Buku ini ditulis untuk pembangun produk — terutama yang belajar sambil jadi (vibe coder, solo builder, pemula sampai menengah). Tidak ada asumsi bahwa Anda sudah paham keamanan. Yang saya asumsikan: Anda bisa membangun aplikasi web, dan Anda ingin membangunnya dengan standar produksi.
Tiap bab berjalan dengan pola yang sama, dan pola inilah yang membuat buku ini berguna:
Anda bisa membaca berurutan, atau melompat ke bab yang Anda butuhkan. Tanda
→ menunjuk bacaan lanjutan. Istilah teknis Inggris saya pertahankan bila
itu memang istilah bakunya (payload, rate limit, query), agar Anda mengenalinya
di dokumentasi mana pun.
Buku ini tidak menggantikan praktik. Di bagian akhir ada Tools: tombol untuk menjalankan simulasi serangan di portal RWID, daftar periksa penyetelan keamanan, dan template laporan ke penyedia layanan internet (ISP).
Bagian 1 · Panggung
Bagian 2 · Mengapa Sistem Ini Kuat
Bagian 3 · Fondasi Keamanan
Bagian 4 · Kelas Serangan & Pertahanan
Bagian 5 · Operasi & Skala
Bagian 6 · Studi Kasus & Alat
Buku ini bertumbuh. Setiap serangan baru yang masuk ke RWID akan menjadi bab baru di edisi berikutnya. Membeli buku ini berarti memiliki catatan yang terus diperbarui — bukan sekali baca lalu selesai.
Sebelum insiden, sebelum teori, ada satu hal yang perlu Anda lihat dulu. Ini wajah RWID:
Globe itu bukan hiasan. Ia tidak dibuat sembarangan. Ia dirancang sebagai monitor sistem global secara waktu-nyata — satu layar yang menjawab pertanyaan “apa yang sedang terjadi di seluruh dunia RWID?” tanpa harus membuka dasbor teknis.
Ia sekaligus dua hal: bukti sosial (pengunjung melihat komunitasnya nyata dan aktif) dan monitor operasional (dari mana lalu lintas datang, node mana yang sehat). Satu layar, dua fungsi.
Itu adalah tangkapan globe saat serangan 2 Oktober 2026 berlangsung. Nama-nama asing bermunculan dari satu titik yang sama — Cikarang — beruntun, cepat, dan tidak wajar: deretan tanpa jeda dari kota yang sama, dengan pola yang tak mungkin dilakukan manusia biasa. Dunia yang tadi tenang tiba-tiba ramai dengan satu-satunya sumber.
Dan karena setiap denyut disertai suara, saya tidak perlu sedang menatap layar untuk tahu ada sesuatu yang salah. Telinga menangkap lebih dulu, sebelum mata sempat membaca. Begitu bunyi itu datang beruntun, refleksnya satu: buka globe, dan di sana sudah jelas.
Itulah nilai sebenarnya dari sebuah monitor: bukan sekadar menampilkan data, tetapi membuat yang salah terlihat dan terdengar — mustahil untuk dilewatkan.
Globe bukan satu-satunya yang berteriak. Di kanal Telegram, bot kami mengirim peringatan yang sama — otomatis, dari guard yang memantau tepi:
Dua sinyal datang hampir bersamaan: mata (globe) dan mesin (Telegram). Itu bukan kebetulan. Sistem memang dirancang untuk memberi tahu dari lebih dari satu arah — supaya satu kejadian yang luput dari pandangan tetap tertangkap di tempat lain. Deteksi yang baik tidak bergantung pada satu indra.
Karena justru di sinilah keanehan itu terlihat. Ketika sebuah sistem dimonitor sebagai satu dunia yang hidup, hal yang tidak wajar menjadi kentara — nama yang aneh, denyut yang tidak pada tempatnya. Bukan karena ada yang membaca log jam tiga pagi, melainkan karena dunia itu sendiri menunjukkan bahwa ada sesuatu yang salah.
Monitor yang baik tidak hanya menampilkan angka; ia membuat yang salah terasa salah. Globe inilah contoh paling gamblang dari prinsip itu, dan insiden yang kita bahas mulai Bab 2 adalah buktinya.
→ Bab 2 · Sekilas Insiden.
Sebelum masuk ke teori, mari lihat dulu apa yang sebenarnya terjadi. Ini potongan yang sudah kami terbitkan sebagai catatan rekayasa di dokumentasi Ecosphere, disederhanakan untuk pembaca buku ini.
Pada 2 Oktober 2026, sekitar pukul 18:16–18:37 WIB, satu alamat IP di
Cikarang, Jawa Barat, menjalankan scanner kerentanan otomatis terhadap
remoteworker.id. Dalam rentang itu, tepi kami (Cloudflare) memblokir
397 permintaan. Scanner itu menyasar endpoint masuk dan daftar
(/signin, /signup, /api/auth/register), mengirim probe injeksi, dan
memindai jalur-celah WordPress yang sudah puluhan tahun dikenal.
Yang penting bukan angkanya. Yang penting adalah apa yang tidak terjadi:
Satu-satunya jejak yang sempat lolos: 43 akun sampah yang mendaftar dari IP itu. Semuanya kami hapus; 30 pendaftar asli tetap utuh.
Pelajaran pertama: serangan yang berhasil membuat Anda lebih kuat bukan serangan yang gagal, melainkan serangan yang terdeteksi, ditahan, dan dilaporkan dengan bukti.
Insiden ini bukan kejutan. Ia adalah jawaban atas tantangan yang kami sebarkan sendiri. Sisa buku ini menjelaskan mengapa sistemnya bisa setenang itu, dan apa yang bisa Anda tiru untuk sistem Anda.
→ Lanjut ke Bab 3 · Apa Itu Ecosphere untuk memahami fondasi yang membuat semua ini mungkin.
Menjelaskan “LXS” tanpa menjelaskan Ecosphere adalah seperti menjelaskan bata tanpa menjelaskan bangunan. Jadi kita mulai dari bangunannya.
Cara standar membangun aplikasi di tahun 2020-an menumpuk lapisan: aplikasi dibungkus container, container diorkestrasi Kubernetes, ditambah service mesh, message broker, dan sederet layanan terkelola. Untuk tim besar, itu wajar. Untuk satu orang yang membangun produk, itu beban: setiap lapisan menambah permukaan yang bisa salah, dan — yang lebih penting untuk buku ini — permukaan yang bisa diserang.
Ecosphere mengambil arah lain. Ia menganggap aplikasi sebagai kumpulan kapabilitas kecil yang saling melengkapi, bukan satu monolit raksasa maupun kumpulan container yang tak terhitung.
remoteworker.id adalah sebuah estate.Satu kalimat: satu kapabilitas di satu tempat berarti satu tempat untuk memperbaiki. Kalau ada kelemahan di LXS autentikasi, Anda perbaiki sekali, terbitkan versi baru, dan semua estate yang memakainya bisa naik versi. Anda tidak memperbaiki kode login yang tersalin di sepuluh proyek.
Itulah yang kami sebut kekuatan yang terpropagasi: perbaikan cepat di satu titik menyebar ke seluruh sistem, bukan tertinggal di satu aplikasi.
Ecosphere bukan teori yang terkunci di buku ini. Platformnya terbuka untuk dicoba — mulai dari instalasi, dokumentasi, sampai komposisi aplikasi pertama Anda:
Semakin banyak orang membangun di atasnya, semakin banyak yang ikut memperkuat fondasi yang sama. Itu bagian dari niatnya: keamanan yang dibagikan, bukan dipelihara sendiri-sendiri.
Di bab berikutnya kita gali dua akar teorinya — Domain-Driven Design dan konsep LXS itu sendiri — sebelum masuk ke bab yang paling penting bagi kekuatan kami: Gateway dan Auth.
Sebelum ada LXS, ada idenya lebih dulu: Domain-Driven Design (DDD). Buku ini tidak akan mengajarkan DDD secara utuh, tetapi satu konsepnya perlu Anda pahami, karena dari situlah keamanan kami bertumpu.
Bayangkan kata “user”. Di domain identitas, user berarti akun dengan kata sandi dan sesi. Di domain artikel, user hanyalah penulis. Di domain dompet, user adalah pemilik saldo. Kalau Anda memaksa satu definisi “user” untuk semuanya, kode Anda pelan-pelan jadi saling tergantung, dan tiap perubahan menyentuh segalanya.
Bounded context adalah jawabannya: tetapkan batas yang jelas. Setiap konteks punya modelnya sendiri, datanya sendiri, dan kontraknya sendiri. Mereka tidak saling meminjam tipe data.
Sistem yang dibangun di atas batas tegas punya sifat yang berharga untuk keamanan:
Ringkasnya: pembatasan yang jelas adalah kontrol keamanan. Ketika sebuah komponen hanya bisa dijangkau lewat satu pintu yang dideklarasikan, memikirkan keamanannya jauh lebih mudah daripada kode yang saling terhubung ke mana-mana.
DDD menjelaskan bagaimana memikirkan batas. Ia tidak menjelaskan bagaimana mengemas batas itu menjadi sesuatu yang bisa dijalankan dan dikomposisi dengan aman. Untuk itu kita butuh LXS — bahasan bab berikutnya.
→ Bab 5 · LXS: Linux Services sebagai bata bangunan.
LXS adalah cara sebuah domain dikemas menjadi satu biner yang siap-jalan, lengkap dengan kontrak yang bisa dibaca mesin maupun manusia. Ia dijalankan native di dalam LXC — tanpa lapisan virtualisasi berat, tanpa image container yang menumpuk.
Setiap LXS mendeklarasikan dirinya secara terbuka:
public, auth,
role:...).Kontrak ini bukan dokumentasi pasif. Pada saat deploy, platform memeriksa apakah estate benar-benar memberikan apa yang diminta — dan menolak komposisi yang tidak cocok. Sebuah LXS tidak bisa diam-diam mengakses sesuatu yang tidak ia deklarasikan.
LXS diterbitkan dalam versi yang immutable: [email protected] berarti tepat
biner itu. Anda tidak mengubah versi yang sudah terbit; Anda memperbaiki dengan
menerbitkan versi baru. Akibatnya, memperbaiki kelemahan menjadi tindakan yang
tegas dan bisa ditelusuri: satu versi baru, satu catatan perubahan, satu keputusan
untuk naik versi di estate yang terdampak.
Aturan “satu LXS = satu domain” menjaga biner tetap kecil dan fokus. Permukaan serangannya pun kecil: proses ini tidak membawa kemampuan yang tidak ia butuhkan. Tidak ada interpreter besar, tidak ada kerangka kerja serbaguna; hanya apa yang perlu.
Ini inti seluruh buku: Login, notifikasi, penyimpanan, artikel — semuanya adalah kapabilitas yang sama di hampir setiap aplikasi. Kami tidak menyalinnya ke tiap proyek; kami menerbitkannya sekali sebagai LXS, lalu memakainya berulang. Ketika ada masalah keamanan di salah satunya, perbaikannya tidak perlu diulang di sepuluh tempat.
Ada dua LXS yang paling menentukan kekuatan kami. Keduanya dibahas di bab berikutnya.
→ Bab 6 · Gateway & Auth: sumber kekuatan.
Kalau buku ini punya satu bab yang paling ingin saya Anda ingat, ini babnya.
Di banyak sistem, keamanan disebar: tiap layanan menjaga dirinya sendiri, menyalin logika login, dan punya tafsir sendiri soal siapa yang boleh masuk. Hasilnya bisa ditebak: tidak konsisten, sulit diaudit, dan memperbaiki satu kelemahan berarti menyentuh banyak tempat.
Kami melakukannya sebaliknya. Dua LXS memegang hampir semua keputusan keamanan, dan keduanya terpasang di depan setiap estate.
Gateway adalah satu-satunya pintu masuk dari internet ke layanan estate. Ia
bekerja deny-by-default: sebuah rute hanya bisa dilewati kalau estate
menuliskannya secara eksplisit, beserta tingkat aksesnya (public, auth,
role:superadmin). Tidak ada “forward semuanya”. Tidak ada jalan pintas.
Konsekuensinya:
Auth adalah LXS yang memegang identitas: kata sandi, sesi, token, peran. Ia juga bisa berperan sebagai penyedia identitas (OIDC) sehingga beberapa aplikasi bisa berbagi satu akun. Karena semua estate memakai Auth yang sama, model sesinya pun seragam — dan itu penting, karena sebagian besar serangan web menyerang sesi.
Salah satu keputusan yang paling berdampak adalah memindahkan sesi dari
localStorage ke cookie HttpOnly. Cookie HttpOnly tidak bisa dibaca oleh
skrip apa pun di halaman, sehingga satu celah XSS tidak otomatis berarti pencurian
sesi. Perubahan ini pun dikerjakan sekali di Auth, lalu berlaku di semua estate
yang memakainya. (Kisah lengkapnya ada di Bab 12.)
Bayangkan tiga dunia:
Itulah mengapa saya menyebut gateway dan auth sebagai sumber kekuatan kami. Bukan karena keduanya sempurna, tetapi karena keduanya membuat kami bisa bergerak cepat saat ketidaksempurnaan itu ketahuan — dan itu jauh lebih penting daripada klaim “aman” yang tidak bisa dibuktikan.
Ketika scanner 2 Oktober menembak rute-rute masuk, bukan tiap layanan yang menahan. Gateway-lah yang menolak mayoritas, dan Auth yang memastikan firewall pendaftaran (verifikasi email) tetap utuh. Kami tidak perlu menyentuh dua puluh komponen; cukup satu pintu dan satu otoritas.
→ Sampai di sini fondasi konseptualnya. Bagian 3 mulai dari prinsip keamanan yang berlaku untuk sistem apa pun, LXS maupun bukan.