Sunday, 20 March 2022

Nge-Rok Part 2 : Otomatisasi Mulai Ulang Ngrok Setelah Prosesnya Terinterupsi

    

    Hai sobat, seperti janji saya pada waktu yang lalu, kali ini saya akan melanjutkan part 2 dari artikel saya sebelumnya yakni Nge-Rok Part 1 : Port Forward Server Lokal Ke Internet Menggunakan Layanan Ngrok. Nah, pada artikel ini kita akan membahas mengenai bagaimana cara agar layanan Ngrok dapat memulai ulang secara otomatis yang diakibatkan entah karena server down akibat listrik yang padam, server sengaja di-reboot, ataupun proses Ngrok terinterupsi

    Ide artikel ini dimulai ketika saya dan teman kantor mencoba menggunakan ngrok lalu tiba-tiba terlintas pikiran "bagaimana ya kalau tiba-tiba server kita yang ada di rumah down, otomatis proses ngrok yang sedang berjalan langsung mati. Dan tentunya kita tidak akan mungkin bisa segera menyalakan ulang proses tersebut, karena akses kita melalui ngrok mati serta lokasi antara rumah dan kantor kita sama-sama jauh". Dari situlah kami berdiskusi menemukan cara agar ketika proses ngrok terinterupsi maka proses tersebut akan dimulai ulang secara otomatis. Oke kita langsung saja ke langkah-langkahnya,
Oiya, seperti pada artikel sebelumnya. Kita asumsikan bahwa kita sudah mengetahui dasar-dasar perintah command line linux dan bash scripting karena nanti kita akan ada beberapa bahasan-bahasan tersebut.

Konten

  1. Memulai Ulang Proses Ngrok setelah Server Down
  2. Memulai Ulang Proses Ngrok ketika Prosesnya Terinterupsi
  3. Notifikasi Telegram ketika Ngrok Dimulai Ulang

Memulai Ulang Proses Ngrok setelah Server Down

    Pada artikel pertama kita sudah membahas langkah-langkah agar Ngrok dapat berjalan sebagai background process. Yakni dengan menggunakan perintah berikut
        ~# ./ngrok start --all -log=stdout > /root/logs/ngrok.log &
    Perintah yang saya gunakan ini adalah perintah yang familiar bagi saya, untuk penjelasan perintah tersebut dan alternatif perintah lainnya bisa kalian lihat saja di artikel saya sebelumnya. Lalu, bagaimana agar perintah tersebut selalu dijalankan setelah server down  dan Up kembali? ya!, menggunakan Crontab. kita hanya perlu mengubah isi dari crontab dengan menggunakan perintah berikut
        ~# crontab -e
    Selanjutnya tambahkan baris baru dengan isi seperti berikut

    Setelah selesai langsung simpan saja crontab tersebut dan tunggu saat server down lalu up kembali, karena argumen @reboot pada awal baris tersebut merupakan perintah untuk crontab agar ia mengeksekusi perintah apapun yang ada dibelakang argumen @reboot tersebut pada saat server dimulai ulang. Lalu untuk mengetahui perubahan endpoint-nya bagaimana? seperti pada artikel sebelumnya, kita bisa langsung melihatnya dari dashboard ngrok atau dari file log keluaran dari ngrok kalian.


Memulai Ulang Proses Ngrok ketika Prosesnya Terinterupsi

    Cara sebelumnya mungkin dapat mengatasi masalah proses ngrok terhenti selamanya hanya karena server down. Lalu, kalau misalnya proses ngrok tiba-tiba terhenti meskipun server kita dalam keadaan up? apakah kita akan menunggu sampai server kita melakukan reboot? tentu tidak bukan. Nah, cara berikut ini adalah untuk mengatasi permasalahan ketika proses ngrok tiba-tiba terinterupsi hingga proses tersebut terhenti. 
    Langsung saja ke langkah-langkahnya, yakni yang pertama adalah kita buat bash script seperti di bawah ini.
    Logika dari bash script di atas cukup simpel, yakni script tersebut akan mengecek terlebih dahulu apakah proses yang di definisikan dalam variabel $SERVICE atau ngrok sedang berjalan. Apabila tidak ada proses ngrok yang berjalan, maka script tersebut akan mengeksekusi perintah "/usr/bin/ngrok start --all -log=stdout >/root/logs/ngrok.log &". fyi, ganti path pada script yang saya tandai dengan warna kuning tadi sesuai path milik kalian ya.
    Simpan file bash script tadi pada direktori sesuai keinginan kalian, dalam kasus saya tersimpan pada direktori "/root/project/shells/". Lalu tambahkan script tersebut lengkap dengan path direktorinya pada crontab seperti pada cara sebelumnya sehingga crontab kalian seperti berikut
    Perlu kita perhatikan, argumen "sleep" pada crontab diatas berfungsi agar script kita dijalan setiap 10 detik sekali. Lalu argumen "/usr/bin/bash" adalah perintah agar kita dapat mengeksekusi bash script yang ada pada path "/root/project/shells/run-if-ngrok-die.sh" yang tadi telah kita buat. 
    Nah, langsung kita coba aja dengan menghentikan proses ngrok yang berjalan dengan perintah 
        ~# killall ngrok
    Perintah tersebut berfungsi untuk menghentikan paksa semua proses yang bernama ngrok. Setelah kita menghentikan proses ngrok, coba tunggu kurang lebih 10 detik lalu cek proses atau endpoint ngrok apakah sudah berjalan kembali atau belum.

Notifikasi Telegram ketika Ngrok Dimulai Ulang

    Dari cara tadi, sebenarnya kita sudah selesai mengatur agar proses Ngrok tidak pernah berhenti. Namun tentu kita akan bingung kalau tiba-tiba proses Ngrok dimulai ulang dan endpoint-nya berubah tanpa sepengetahuan kita bukan?. Nah, dari hal tersebut saya memiliki ide agar server saya mengirim notifikasi ke telegram saya ketika proses ngrok dimulai ulang. 

    Untuk langkah awal, kita harus meminta Bot Father untuk dibuatin Bot Telegram dulu, langkahnya gimana? kalian bisa langsung aja mengunjungi dokumentasi resmi Bot Telegram pada halaman berikut, Secara konsep, untuk mendapatkan endpoint ngrok kita hanya perlu melihat output log dari proses ngrok yang telah kita jalankan lalu kita ambil data yang kita butuhkan saja yakni data endpoint-nya. Secara simpelnya bisa kalian lihat dari bash script di bawah ini.

Penjelasan :
TOKEN_BOT, variabel ini kita isi dengan token bot telegram yang sudah kita dapat dari Bot Father
CHAT_ID, sedangkan variabel ini kita isi dengan Chat ID tujuan pesan yakni Chat  ID kita. untuk mendapatkannya bisa dengan metode api getMe, untuk penjelasan lebih lengkapnya bisa kita simak di dokumentasi resminya di halaman berikut.
MSG, variabel ini berisi pesan yang akan kita kirim ke Chat ID yang sudah di isi sebelumnya. hanya "/root/logs/ngrok.log" yang perlu di sesuaikan dengan letak output log dari ngrok kalian.
PESAN,  variabel ini hanya berupa pesan tambahan, disini saya gunakan untuk menambahkan header pesan bot telegram untuk saya
Setelah semua variabel telah diatur, maka saatnya bash script kita mengirim perintah ke API Telegram yakni dengan perintah "curl -s -X POST "https://api.telegram.org/bot$TOKEN_BOT/sendmessage" -d "chat_id=$CHAT_ID" -d "parse_mode=html" -d "text=$PESAN"
 hasilnya nanti kurang lebih seperti berikut
Gambar tangkapan layar di atas hanya contoh hasil dari notifikasi perubahan endpoint ngrok ke pesan telegram yang telah kita buat tadi. hanya sedikit perubahan pada header saja.

Oke, sekian bahasan kita tentang bagaimana cara otomatisasi mulai ulang layanan ngrok setelah prosesnya terinterupsi. Tunggu bahasan berikutnya tentang Ngrok yaa...


Referensi
Previous Post
Next Post

0 comments: