REST API Design Principles That Stand the Test of Time

December 12, 2024

Menjadi seorang software engineer itu nggak cuma duduk ngetik kode terus selesai begitu saja, justru banyak waktunya dihabiskan buat riset dan ngulik solusi terbaik. Mulai dari cari tahu teknologi yang paling cocok, nyoba berbagai pendekatan, sampai mikir gimana caranya bikin system yang efisien dan gampang di-maintain ke depannya. Jadi, selain jago ngoding, kita juga harus punya rasa penasaran tinggi dan selalu memiliki keinginan untuk terus belajar, karena dunia teknologi itu cepet banget update.

Proses Intalasi Mini PC

Untuk itu di tulisan ini saya ingin coba merangkum hal-hal apa saja yang saya alami sewaktu mengoprek Home Server yang siapa tau related juga untuk kalian yang saat ini sedang mencoba untuk membangun Home Server sendiri 😄👍

Memilih perangkat

Menurutku, ini bagian yang cukup penting karena nantinya harus disesuaikan juga sama budget yang ada. Dari hasil riset yang saya lakukan, pilihan perangkat tergantung banget sama kebutuhan Home Server ke depannya. Misalnya nih, kalau kita cuma mau pakai Home Server buat ngembangin aplikasi backend, frontend, database, sambil belajar CI/CD dan infrastruktur biar ngerti alurnya, cukup pakai perangkat dengan CPU dan storage yang sesuai aja nggak perlu GPU. Tapi kalau nantinya kita mau pakai Home Server buat coba-coba jalanin model AI secara self-hosted, menurutku perangkat dengan GPU wajib dipertimbangkan. Soalnya, itu bakal berpengaruh banget ke kecepatan proses data, apalagi yang berat dan butuh komputasi paralel.

Memilih sistem operasi

Di home server yang lagi saya ulik, saya memilih untuk menginstall Ubuntu Server. Alasannya simpel aja karena lebih ringan dan hemat resource, jadi cocok banget buat server yang nyala terus 24/7. Selain itu, Ubuntu Server juga lebih stabil dan nggak banyak gangguan, plus hemat listrik pastinya. Aku sendiri lebih nyaman aksesnya lewat SSH, jadi nggak butuh tampilan UI atau desktop sama sekali. Tapi balik lagi ya, sebenarnya banyak juga pilihan distro Linux lain yang bisa dipakai, seperti Debian, CentOS, atau bahkan Windows Server kalau kita lebih familiar sama ekosistem Windows. Semua tergantung kebutuhan dan kenyamanan masing-masing.

Proses installasi home server

  1. Download Ubuntu Server

    Langkah pertama, kita bisa download image Ubuntu Server langsung dari website resminya. Biar proses instalasi ke home server lebih gampang, saya biasanya pakai software Rufus untuk copy image-nya ke flashdrive. Setelah itu, cukup nyalakan home server kita, masuk ke menu boot (biasanya tekan F2, F12, atau DEL pas nyala), lalu atur supaya default boot-nya dari flashdrive yang berisi image Ubuntu Server. Nanti instalasi akan langsung jalan otomatis. Ikuti saja langkah-langkahnya di layar dan kalau bingung di tengah jalan, jangan ragu untuk melihat tutorial agar tidak ada bagian yang terlewat.

  2. Running Aplikasi di Home Server

    Kalau soal menjalankan aplikasi, saya pribadi lebih suka menggunakan Docker karena jauh lebih fleksibel. Dengan Docker, kita bisa menjalankan banyak aplikasi dengan bahasa dan teknologi yang beda-beda tanpa ribet. Tidak sama kalau diinstall langsung di host (bare metal), yang biasanya lebih rawan bentrok dependency atau setup-nya cukup memakan waktu. Selain itu, salah satu hal yang paling enak dari Docker adalah ketika suatu saat harus install ulang sistem atau pindah ke server lain, proses setup-nya jadi jauh lebih gampang dan cepat, tinggal jalanin ulang kontainernya, beres!

Aplikasi yang running di home server

Terus, gimana sih caranya agar home server bisa diakses secara online? 🤔 Sebenarnya ada beberapa cara yang bisa kita pakai, ini di antaranya:

  • :lock: IP Public dari ISP (Internet Service Provider)

    Dengan case ini kita bisa tanyakan terlebih dahulu ke penyedia ISP apakah ada fitur IP Public atau ada biaya tambahan, namun kendala yang sering terjadi banyak ISP sekarang menerapkan CGNAT (Carrier Grade NAT) yang membuat kita tidak benar-benar memiliki IP Public

  • :globe_with_meridians: VPS sebagai relay (Reverse SSH)

    Nah, di kasusku sekarang, saya pakai opsi yang satu ini. Simpelnya, saya sewa VPS yang sudah include IP Public. Nah, IP Public inilah yang nantinya membantu home server kita bisa online. Caranya, home server kita cukup config SSH tunnel ke VPS tersebut. Jadi seolah-olah VPS jadi jembatan antara internet dan home server kita. Untuk cara setup-nya yang lebih detail, bakal saya jelasin di postingan selanjutnya ya, stay tuned! 👍

  • :cloud: Cloudflare Tunnel

    Fitur yang dimiliki oleh cloudflare konfigurasi lebih simple dan cocok untuk menjalankan web-apps namun untuk protocolnya terbatas hanya HTTP/HTTPS (tanpa SSH)

Detail Spesifikasi :nut_and_bolt:

Nama PerangkatPC Mini Lenovo Thinkcentre m910q
Processori3 gen 7
Ram16GB
StorageSSD 256GB

Oke mungkin itu saja yang bisa disampaikan, mohon maaf apabila ada kesalahan dalam memberikan penjelasan. sampai bertemu di tulisan saya berikutnya ye 👍😎

GitHub
LinkedIn
X