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
- Memulai Ulang Proses Ngrok setelah Server Down
- Memulai Ulang Proses Ngrok ketika Prosesnya Terinterupsi
- 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
0 comments: