Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

VPN dengan Wireguard Bagian II : Internet Proxy

Pada artikel bagian kedua ini, kita akan membuat internet gateway atau proxy. Ada banyak kegunaan dari internet proxy ini, diantaranya:

  • mencegah ISP kita untuk memasukkan iklan-iklan yang mengganggu
  • mencegah pengelola jaringan internet di negara tertentu untuk memantau kegiatan internet kita. Ini berguna misalnya untuk jurnalis yang bertugas di daerah yang otoriter, sehingga rawan diciduk ketika menulis artikel yang sensitif
  • mengakses layanan yang hanya ada di negara tertentu. Misalnya hiburan streaming yang pilihan tayangannya berbeda antar negara
  • mengetes aplikasi yang kita buat, apakah berjalan dengan baik ketika diakses dari luar negeri

Skenario ini bisa diilustrasikan seperti pada gambar berikut

VPN Internet Proxy

Langkah-langkah implementasinya sebagai berikut:

Lanjut membaca ...


VPN dengan Wireguard Bagian I : Pengenalan Wireguard

Sejak belasan tahun yang lalu, saya sudah merekomendasikan pentingnya menguasai konsep dan konfigurasi jaringan, khususnya administrasi jaringan dan server dengan Linux. Di penghujung 2020 ini, rekomendasi tersebut terasa lebih relevan seiring dengan semakin naik daunnya budaya DevOps.

Untuk itu, kita akan menutup tahun 2020 ini dengan membahas implementasi VPN yang sekarang sedang naik daun, yaitu WireGuard. WireGuard adalah aplikasi VPN yang sangat mudah digunakan. Jauh lebih sederhana daripada pendahulunya seperti OpenVPN dan IPSec. Selain itu, performanya juga jauh melampaui para pendahulunya tersebut. Bahkan Linus Torvalds sendiri memuji kode program dan kesederhanaan WireGuard, padahal Linus biasanya terkenal tajam lidahnya.

Informasi lebih rinci mengenai keunggulan Wireguard dapat dibaca di artikel ini, artikel ini, dan artikel ini. Tapi tidak ada yang sempurna di dunia ini, Wireguard juga memiliki beberapa masalah dalam urusan privasi, seperti dibahas di artikel ini. Walaupun demikian, untuk keperluan yang akan kita bahas di sini, privasi tidak terlalu menjadi pertimbangan kita, karena di hampir seluruh skenario yang akan kita bahas komputer dan jaringan yang terlibat adalah milik kita sendiri.

Dalam rangkaian artikel kali ini, kita akan membahas beberapa skenario penggunaan VPN yang umum digunakan oleh masyarakat umum dan juga software developer, yaitu:

  • Membuat proxy internet
  • Mengakses jaringan internal kantor dari luar kantor
  • Membuka akses ke aplikasi yang berjalan di laptop untuk diakses dari internet
  • Menghubungkan aplikasi yang berjalan di cloud services ke database yang berjalan di data center on premise

Disclaimer : rangkaian artikel ini mengasumsikan pembaca sudah menguasai dasar-dasar jaringan komputer dan pengoperasian Linux dengan command line/terminal.

Sebelum masuk ke konfigurasi yang kompleks, terlebih dulu kita akan mempelajari konsep dasar dari aplikasi Wireguard. Kita akan berlatih menghubungkan dua atau beberapa host dengan Wireguard. Untuk latihan ini, kita bisa menggunakan dua laptop, satu laptop dan satu VPS di cloud, ataupun satu laptop dan satu smartphone.

Skemanya dapat digambarkan sebagai berikut

VPN Peers

Lanjut membaca ...


Kirim SMS OTP dengan Gammu

Project yang saat ini kita sedang tangani, memiliki fitur untuk otentikasi menggunakan OTP. Dikirim dengan SMS dan Email. Tentunya sebelum fitur OTP aktif, kita juga harus verifikasi dulu nomor handphone dan emailnya.

Fitur verifikasi dan OTP ini tentunya mengharuskan aplikasi kita untuk bisa mengirim email dan SMS. Cara untuk mengirim email sudah saya bahas pada artikel terdahulu. Jadi pada artikel ini, kita akan membahas cara mengirim SMS dari kode program kita.

Lanjut membaca ...


2 Mahzab Founder Startup

Dari sejak jaman kolonial dulu sampe milenial sekarang, bikin bisnis itu ada 2 mahzab:

Mahzab A. Bikin dari nol, besarkan sampai puluhan tahun. Ngomongnya cashflow, profitability, ROA, ROE. Retensi founder dan karyawan biasanya tinggi, turnover rendah. Orientasinya pertumbuhan organik. Yang disebut sukses adalah perusahaan jalan sustainable, founder tetap pegang saham, karyawan makmur sejahtera.

Mahzab B. Bikin seminim mungkin, pitching setinggi mungkin. Ngomongnya elevator pitch, valuation, growth hacking, burn rate, term sheet. Retensi karyawan biasanya rendah, turnover tinggi, bahkan founder pun pada akhirnya entah kemana. Orientasinya funding series. Yang disebut sukses adalah perusahaan terjual, entah ke bigger company, atau IPO.

Nah, Anda mau jadi founder pakai mahzab mana??

Founder mahzab A biasanya :

  • Kalau bisnisnya rugi dan susah diperbaiki, dijual
  • Bahagia kalau berhasil mengakuisisi

Founder mahzab B biasanya :

  • Kalau bisnisnya untung, dijual
  • Bahagia kalau berhasil diakuisisi

Contoh founder mahzab A :

  • Warren Buffet
  • Bill Gates

Contoh founder mahzab B :

  • Elon Musk
  • Jan Koum

Ada yang berpendapat bahwa Musk masuk mahzab A. Tapi menurut pendapat saya, kalau kita lihat track recordnya di Wikipedia, perusahaan-perusahaan dia masih termasuk kategori bakar-bakar duit. Sedangkan perusahaan bikinan dia yang sudah mapan, yaitu PayPal, sudah lama dijual ke eBay. Jadi ya tentu saja dia masuk kategori B.

Mahzab mana yang lebih benar? Wallahu a’lam. Tidak harus dicari siapa benar siapa salah. Tidak juga cuma boleh pilih salah satu. Bikin banyak perusahaan, sebagian dijalankan dengan mahzab A dan sebagian B juga bebas saja :D


Switch User dengan Spring Security

Alhamdulillah, aplikasi kita sudah naik production, dan digunakan oleh banyak user. Aplikasi sudah kita rancang dengan baik, sehingga data yang tampil di aplikasi sesuai dengan user yang sedang login.

Masalah timbul ketika ada pertanyaan atau laporan dari user dalam penggunaan aplikasi. Sebagai administrator, kita tidak tahu data apa yang sedang tampil di layar user, karena aplikasi hanya bisa menampilkan data user yang sedang login. Apabila kita login dengan akun administrator, kita tidak bisa melihat apa yang dilihat user, sehingga kita sulit untuk mendebug aplikasi.

Biasanya, orang-orang mengatasi isu ini dengan meminta password user. Programmer/administrator kemudian mencoba aplikasi dengan cara login sebagai user. Praktek seperti ini sangat tidak dianjurkan. Pertama karena programmer/administrator menjadi tahu password user. Mayoritas user di dunia, menggunakan password yang sama di berbagai aplikasi, sehingga password yang diberikan ke programmer/administrator ini ada kemungkinan bisa dipakai di akunnya yang lain (internet banking, online shop, dan sebagainya). Kedua, karena ini belum tentu bisa digunakan pada sistem single sign on, seperti yang kita sudah pernah buat di artikel terdahulu.

Solusinya, kita harus buatkan di aplikasi kita fitur untuk administrator supaya dia bisa pindah menjadi user lain. Dengan demikian, dia bisa melihat apa yang dilihat user lain tersebut. Tentunya fitur ini harus dijaga dengan baik, jangan sampai disalahgunakan oleh administrator. Caranya bisa dengan mengimplementasikan audit log untuk mencatat aktifitas administrator selama pindah menjadi user lain.

Nah, demikian konsepnya secara garis besar, sekarang mari kita langsung ke kode program.

Lanjut membaca ...