👋 Halo guys, terimakasih sudah berkunjung. Sebelum lebih lanjut ke gimana cara setupnya, mendingan kita ketahui dulu secara mendasar istilah teknologi yang akan kita gunakan nantinya.
VPS (Virtual Private Server) adalah sebuah sistem yang memanfaatkan teknologi virtualisasi untuk membagi satu server fisik menjadi beberapa server virtual yang terpisah. Setiap server virtual ini memiliki sistem operasi dan sumber daya sendiri (seperti CPU, RAM, dan storage) yang dialokasikan secara eksklusif.
NGINX, singkatan dari “engine-x”, adalah software open-source yang berfungsi sebagai server web, reverse proxy untuk mendistribusikan lalu lintas, load balancer untuk menyeimbangkan beban server, serta proxy email untuk protokol IMAP, POP3, dan SMTP.
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
Secara singkat, Node.js adalah runtime environment yang memungkinkan kita untuk menjalankan kode JavaScript di luar browser.
Alasan saya pribadi menggunakan NGINX karena konfigurasinya yang cukup mudah dipahami, dibandingkan dengan kompetitornya webserver Apache. Selain itu, menurut saya NGINX lebih cepat dan ringan.
Setelah teman-teman mengetik perintah diatas, akan ada permintaan fingerprint verification, silahkan teman-teman ketik yes atau enter saja. Seperti berikut,
Kemudian, ketika permintaan password telah muncul seperti diatas, maka silahkan input password VPS yang sesuai.
IMPORTANT
Jangan khawatir, jika password yang diketik tidak muncul, password tersamarkan secara otomatis sebagai bentuk keamanan.
Untuk instalasi Node.js, kita akan menggunakan Node Version Manager (NVM), karena dengan tool ini akan memudahkan kita untuk switch version Node.js tanpa ribet-ribet lagi kedepannya.
[ -s"$NVM_DIR/nvm.sh" ] && \."$NVM_DIR/nvm.sh"# This loads nvm
Kurang lebih jika sudah terinstall, akan seperti gambar berikut apabila kita mengeceknya dengan mengetik perintah nvm,
Apabila sudah terlihat seperti gambar diatas, silahkan jalankan perintah dibawah,
Terminal window
1
nvminstall21
NOTE
21 bisa diganti dengan versi Node.js lainnya, seperti 18, 12, 20, 14 atau pun versi spesifiknya seperti 20.17.0
Jika proses instalasi sudah selesai, silahkan verifikasi dengan perintah node -v, apabila jika sudah sesuai dengan versi Node.js yang kalian request, maka proses instalasi sudah berjalan dengan sempurna 😎
cdbookshelf-api# masuk ke directory project tersebut dengan nama bookshelf-api
selanjutnya, kita akan melakukan instalasi dependencies project tersebut dengan perintah npm i.
Apabila instalasi dependencies sukses, kurang lebih akan muncul sebagai gambar dibawah,
Selanjutnya, kita coba lihat dan ubah jika diperlukan dalam kode atau konfigurasi project Node.js kita, saran dari saya lebih baik apabila teman-teman mengakses environment dari Node.js NODE_ENV untuk mengecek apakah berstatus production atau development untuk menentukan binding server address ke localhost atau 0.0.0.0
Apabila teman-teman telah mengikuti step 5, maka teman-teman dipersilahkan mengikuti step ini.
Tentunya kita tidak selalu membuka server atau VPS selama 24 jam ⏰ bukan? Sama aja boong kalau punya VPS, namun kita selalu buka device kita untuk mengonlinekan appnya 😂
Caranya gampang banget, kita bisa menggunakan tool PM2 untuk menjalankan program atau app Node.js kita di background. Gimana? Simak dibawah.
Cara installnya gampang banget, perintahnya seperti dibawah ya
Terminal window
1
npmi-gpm2
Untuk verifikasi instalasi dapat mengetik perintah pm2, apabila muncul help info dari pm2, maka dipastikan instalasi sukses.
Selanjutnya gimana? Masih di direktori project yang sama, kita jalankan perintah sebagai berikut,
Terminal window
1
pm2startsrc/index.js--name"Nama Project"
2
pm2save
3
4
pm2startup
NOTE
Nama Project bisa diganti dengan nama app sesuka hati kalian. Dan, src/index.js juga bisa diganti dengan lokasi file program Node.js yang akan dijalankan (misal program yang ingin dijalankan adalah index.js, maka ganti saja dengan index.js)
Command pm2 save berfungsi untuk menyimpan state app yang kalian buat.
Sedangkan pm2 startup berfungsi untuk memberikan command kepada kita untuk dijalankan sehingga pm2 akan berjalan otomatis walaupun VM di reboot.
Apabila sukses, akan muncul output seperti gambar dibawah
Udah selesai? Iya udah 😎 EH-nggak dong WKWK, kita belum setup NGINX nya loh 🤩😋
Tentunya sewaktu-waktu kita pengen akses app kita secara langsung tanpa harus ribet beli domain example.com, abcd.com, inidomain.id, dan seterusnya supaya bisa diakses dengan SSL.
Secara default, jika menggunakan yang gratisan (free) yakni letsencrypt, jenis SSL ini hanya berfungsi pada alamat yang berdomain, dan tidak berlaku pada IP Address.
Salah satu solusi yang saya temukan adalah dengan menggunakan layanan SSL gratis oleh ZeroSSL. Hanya dibutuhkan akun, dan alamat IP VM saja, kita bisa mendapatkan sertifikat SSL secara gratis.
NAMA_FILE_DICOPY diganti dengan nama file yang sudah dicopy tadi, jangan lupa apabila berakhiran .txt, hal tersebut juga dimasukan. Intinya semua nama filenya dimasukan.
Setelah itu, teman-teman silahkan paste isi file yang sudah dicopy tadi. Jika sudah, silahkan CTRL+X, dan apabila ditanya Save modified buffer?, maka ketik saja Y lalu enter.
Jika sudah, silahkan teman-teman copy teks berikut:
1
location/.well-known {
2
autoindex on;
3
alias /var/www/well-known;
4
}
Lalu silahkan teman-teman edit kembali file /etc/nginx/sites-available/default dengan editor nano
Terminal window
1
nano/etc/nginx/sites-available/default
Kemudian scroll ke bawah, sehingga menemukan line seperti berikut
1
location/ {
2
....
3
}
4
5
# isi disini
IMPORTANT
Silahkan ganti # isi disini dengan konfigurasi yang telah dicopy sebelumnya.
Jika konfigurasi kurang lebih seperti dibawah, silahkan CTRL+X, dan save. Lalu keluar.
Kembali ke halaman verifikasi ZeroSSL, lalu klik “Next Step”, dan terakhir “Verify Domain”
Jika kamu mendapatkan gambar seperti dibawah, maka verifikasi kamu berhasil.
Jika proses pembuatan sertifikat SSL sudah selesai, silahkan pilih “Server Type” menjadi NGINX, dan download file .zip sertifikatnya.
Tanpa SSL adalah paling gampang banget, karena konfigurasinya hanya seperti ini
1
server {
2
listen 80;
3
listen [::]:80;
4
5
server_name domain_kalian.id;
6
7
location/ {
8
proxy_pass http://127.0.0.1:5000/;
9
proxy_set_header Host $host;
10
proxy_set_header X-Real-IP $remote_addr;
11
}
12
}
IMPORTANT
Untuk domain_kalian.id silahkan diganti dengan domain milik teman-teman.
Untuk http://127.0.0.1:5000, angka 5000 bisa diganti dengan port app node.js-nya teman-teman.
Lalu sisa di paste ke file /etc/nginx/sites-available/app-reverse-http menggunakan editor nano. Kemudian jalankan perintah dibawah untuk mengaktifkannya,
Baiklah, mungkin itu saja petunjuk dan solusi yang dapat saya berikan dalam artikel ini. Dan, berikut dibawah merupakan hasil dari upaya diatas, connection ke IP VPS sudah menjadi secure karena sudah terpasang SSL certificate dari ZeroSSL.
Kurang lebih dan kesalahan kata, saya mohon maaf, tinggalkan komentar jika berkenan, sampai bertemu kembali di artikel selanjutnya 😋