Sumber gambar: unsplash.com

Saya punya server yang saya rangkai/bikin sendiri di rumah. Servernya ada 2 macam, yang satu khusus untuk proses berat misal build aplikasi dan lain2, yang satunya khusus untuk hosting saja. Perangkatnya sendiri sebenarnya hanya laptop bekas dan stb bekas, hah? Seriusan? Iyesss gak salah baca kamu wkwk. Di tambah lagi salah satu servernya punya kemampuan CI/CD dengan konfigurasi ketika ada event github push pada salah satu repository, dia otomatis langsung build dan deploy ke server hosting/production, ala ala Vercel gitu tapi punya sendiri/milik pribadi, asik kan?

Apa itu server?

Tapi server itu sebenarnya apa si? Simpelnya server itu ya komputer sebenarnya. Cuma kalau kelas enterprise kapabilitas dan desain komponennya itu dirancang khusus untuk menghandle proses yang cukup besar dan simultan. Makanya perangkat server untuk enterprise itu keliatan beda banget sama komputer pada umumnya.

Dulu saya pernah kepikiran, kalau konsepnya server itu ya komputer berarti bisa dong bikin sendiri? Pakai laptop bekas yang di ubah menjadi server harusnya bukan tidak mungkin. Nah, dari sini muncul ide untuk membuat server sendiri dengan memanfaatkan laptop bekas yang sudah lama tidak terpakai.

Kenapa bikin server sendiri?

Tujuan saya kenapa “ngotot” bikin server sendiri ini salah satunya adalah pengen mempelajari bagaimana cara server bekerja. Karena jika di telusuri secara mendalam, pernak perniknya itu banyak banget loh. Mulai dari setup networknya, alokasi manajemen sumber daya komputer/laptopnya, teknologi2 yang dipakai untuk keperluan monitoring, keamanan, efisiensi atau kecepatan proses2 yang bekerja di dalamnya yang nanti berhubungan dengan optimasi sumber daya, manajemen file2 konfigurasi, cache dan masih banyak lagi.

Keuntungan punya server sendiri

Tujuan lain bikin server sendiri ini adalah pengen punya kontrol penuh atas berbagai macam aplikasi/website yang saya hosting nantinya dan juga sekalian belajar bagaimana proses deployment sebuah aplikasi itu dilakukan. Keuntungan lainnya ya tidak lain dan tidak bukan adalah menghemat biaya wkwk.

Lah emangnya sehemat apa sih? Kalau misalnya teman2 sudah punya laptop bekas bisa dari keluarga atau saudara misalnya, biaya untuk membuat server sendiri ini hanya butuh sewa domain dan bayar kuota internet doang loh. Sewa domain gak harus yang bagus2 dulu juga gapapa, yang paling murah saja per tahunnya. Lalu beli kuota internet untuk keperluan download dan install software2 yang diperlukan untuk setup servernya, atau kalau sudah langganan yaudah sih berarti hanya sewa domain per tahun wkwk.

Caranya gimana tuh?

Gampang2 susah sih setup server sendiri tu, cuma mungkin karena saya pertama kali, jadi masih banyak trial and error. Tapi secara garis besar, urutannya sebagai berikut:

  • Install OS server (saya prefer Ubuntu Server/Armbian OS sesuai arsitektur perangkatnya)
  • Setup SSH server
  • Install Docker (supaya enak, karena ibarat cuma bikin kotak2 tempat aplikasi dijalankan dan terisolasi dari perangkat aslinya)
  • Pasang beberapa alat2 monitoring sebagai Docker container (contoh: Prometheus, Grafana, Loki, Promtail)
  • Pasang Nginx Proxy Manager sebagai Docker Container juga supaya mudah routing aplikasi yang di hosting dan juga sebagai layer keamanan tambahan
  • Terakhir setup dan pasang cloudflare tunnel lalu arahkan ke Nginx Proxy Manager, karena semua aplikasi yang di hosting jalan di belakangnya

Lah trus CI/CD nya? Nahh untuk keperluan ini berarti kita butuh software yang bisa menjalankan dan mengakomodasi keperluan CI/CD tersebut. Kalau saya pilih Jenkins yang saya pasang juga sebagai Docker Container. Jujur untuk setup Jenkinsnya cukup ribet, karena terkait dengan izin akun github untuk bisa otomatis clone dan build aplikasinya. Selain itu untuk bisa otomatis deploy, kita juga harus setup SSH key jika server hostingnya berbeda, tapi kalau sama ya tidak perlu.

Kalau dari saya, server untuk hosting dan CI/CD seperti Jenkins baiknya di pisah, karena supaya aplikasi yang di hosting tidak terganggu atau bahkan down ketika proses build sedang berjalan di Jenkins. FYI, build proses seringkali memakan resource yang cukup signifikan, oleh karena itu kadang bisa mengganggu proses lain.

Disini kita belum bahas teknisnya, kita baru bahas secara garis besar kalau ternyata memungkinkan loh untuk punya server sendiri ala ala Vercel yang bisa otomatis deploy versi terbaru gitu. Kalau secara teknis kedepannya mungkin saya akan bagikan setiap konteksnya, misalnya gimana cara saya setup script custom supaya Jenkins bisa clone github repository otomatis, gimana cara bikin Jenkins Agent untuk build aplikasi sesuai framework, dan masih banyak lagi pernak pernik nya, so stay tuned ya 🙂

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *