Halo sobat, artikel kali ini saya akan
membahas mengenai langkah-langkah
port forward server pribadi saya menggunakan layanan dari Ngrok.
Asal punya cerita, saya menggunakan cara ini
karena sekarang saya sudah jarang sekali mendapatkan IP Publik dari Internet
Service Provider (ISP) plat merah yang saya sewa. Kalau dulu, setiap kita
langganan layanan internet dari ISP tersebut, kita akan mendapatkan IP Publik
(meskipun dinamis/berubah-ubah) yang dapat kita gunakan untuk
mem-forward atau mengekspos komputer atau server yang ada di
jaringan lokal kita ke internet dengan hanya melakukan pengaturan
port forwading pada modem yang diberikan oleh ISP tersebut. Namun
sepertinya sekarang, untuk mendapatkan IP Publik Dinamis tersebut sulit
dilakukan kecuali saya berlangganan paket internet yang cukup menguras dompet
(cmiiw). Dan bertemulah saya dengan layanan
Ngrok yang menurut saya
sangat powerful dan solutif bagi saya.
Sebelum menuju ke langkah-langkah instalasi, menjalankan
layanan ngrok, hingga cara mengetahui endpoint port forward Ngrok, mari
kita bahas sedikit mengenai port forwarding dan layanan Ngrok. Oiya, saya asumsikan bahwa kita semua sudah memahami beberapa perintah CLI yang ada pada linux karena nanti kita akan sering menggunakan perintah-perintah CLI tersebut. Namun saya tetap akan mencoba menjelaskan fungsi-fungsi perintah yang kita gunakan nanti, apabila ada perintah yang kurang kalian pahami, kalian bisa langsung mengeceknya dari manpage linux.
Konten
- Port Forwarding dan Ngrok
- Instalasi Ngrok
- Menjalankan Ngrok
- Konfigurasi Ngrok
- Menjalankan Ngrok sebagai Background Process
- Mengetahui Endpoint Port Forward dari Ngrok
Port Forwarding dan Ngrok
Port Forwarding, mungkin ada beberapa dari kita yang baru
mendengar istilah ini. Port forward adalah cara agar komputer/server kita yang
ada di jaringan lokal di belakang Firewall/NAT dapat di akses dari
internet (yang seharusnya tidak dapat diakses dari
internet). Firewall/NAT sendiri bukanlah suatu hal yang buruk
karena dapat melindungi jaringan lokal kita dari ancaman keamanan dari
internet, karena dengan itu mereka tidak tahu juga tidak dapat menghubungi
apapun dan siapapun yang ada di dalam jaringan lokal kita.
Sedangkan Ngrok, adalah layanan
port forwarding yang dapat digunakan untuk mengekspos komputer atau
server yang ada dibelakang Firewall/NAT ke internet melalui
secure tunnel sehingga dapat di akses oleh siapapun dan dimanapun.
Dan kerennya lagi, Ngrok itu
Multi Platform sehingga bisa digunakan diberbagai macam sistem operasi. Berikut tangkapan
layar mengenai sistem operasi yang dapat menjalankan Ngrok.
bagaimana, sistem operasi yang didukung cukup banyak
bukan?
Instalasi Ngrok
Nah, sekarang kita lanjut pada langkah-langkah Instalasi
Ngrok. Dalam artikel ini saya menggunakan server dengan sistem operasi
Debian 10 (Buster) dengan arsitektur Arm64 sehingga file instalasi yang
saya gunakan adalah untuk arm64. Dan saya ingatkan, semua perintah
cli dibawah ini dilakukan sebagai
user root dan ini praktik
yang simpel namun
sangat tidak disarankan karena alasan keamanan.
- Oke. langsung saja ke langkah pertama yakni mengunduh aplikasi Ngrok yang ada di web resminya disini dan sesuaikan dengan sistem operasi yang kalian gunakan
~#
wget
-c https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm64.zip
- Kita ekstrak saja aplikasinya
~#
unzip ngrok-stable-linux-arm64.zip
- Setelah itu, karena saya menggunakan server debian maka saya perlu menambahkan hak eksekusi aplikasi pada file ngrok yang telah di unduh tadi
~# chmod +x ngrok
- Selanjutnya adalah mendapatkan kode otentifikasi (Authtoken) ngrok dengan membuat akun pada website resminya disini. saya tidak akan menjelaskan secara rinci tata cara pendaftarannya karena kurang lebih sama seperti pendaftaran akun pada umumnya.
- Lalu dapatkan Authtoken milikmu pada halaman dashboard ngrok.
- Salin Authtoken tersebut dan daftarkan pada aplikasi Ngrok yang telah kita unduh tadi
~# ./ngrok authtoken <kode
Authtoken milik kalian>
- Authtoken tersebut akan tersimpan secara otomatis pada file konfigurasi Ngrok yang secara default tersimpan pada path "~/.ngrok2/ngrok.yml"
Nah, sampai sini kita sudah berhasil melakukan instalasi Ngrok pada
server debian
Menjalankan Ngrok
Setelah berhasil melakukan instalasi Ngrok,
kita bisa langsung mencobanya dengan perintah berikut
~#
./ngrok http 80
Perintah tersebut memiliki fungsi untuk mem-forward port 80 sebagai layanan http, sehingga kita dapat mengakses
layanan http yang berjalan pada port 80 di server kita melalui
subdomain milik Ngrok, contohnya sebagai tangkapan layar berikut
Lalu, bagaimana jika kita ingin
mem-forward layanan ssh melalui Ngrok? kurang lebih
caranya sama, yakni seperti berikut.
~#
./ngrok tcp 22 --region ap
Perintah tersebut berfungsi untuk melakukan
forward protokol tcp pada port 22 (ssh) dan
memilih region server Asia/Pasifik (ap).
~# ssh
root@0.tcp.ap.ngrok.io -p 18034
Sebagai tambahan, jika kita ingin
mengetahui public url seperti
tangkapan layar diatas, kita
juga bisa melihatnya melalui dashboard Ngrok milik kita pada alamat
berikut ini. Dari dashboard tersebut kita dapat mengetahui status koneksi serta
public url untuk mengakses layanan server yang telah kita ekspos.
Konfigurasi Ngrok
Loh, Ngrok tadi sudah jalan dengan lancar
kenapa harus di konfigurasi lagi?
Konfigurasi ini kita lakukan agar kita mendapatkan manfaat yang maksimal dari
layanan Ngrok, karena langganan gratis dari Ngrok memiliki fitur cukup
terbatas (tapi gratis tis tis) yakni maksimal 4 tunnels dengan 1 proses ngrok
yang berjalan dan dengan total maksimal 40 koneksi terhubung dalam satu
menit.
Sedangkan apabila kita menggunakan cara yang
tadi, kita hanya bisa membuat 1 tunnel dengan 1 proses ngrok yang
berjalan. Agar kita bisa membuat 4 tunnel dengan 1 proses
ngrok dengan mudah, maka kita perlu memperbarui konfigurasi ngrok yang berada
pada path "~/.ngrok2/ngrok.yml". Langsung saja kita modifikasi file tersebut dengan ubahan yang kurang
lebih seperti berikut.
beberapa opsi dalam konfigurasi tersebut yang perlu kita perhatikan adalah:
- authtoken, opsi ini berisi token atau kode otentifikasi yang telah kita daftarkan pada awal instalasi Ngrok. Dan tentunya, authtoken dalam file konfigurasi yang saya bagikan itu sudah saya sensor, hehe.
- region, opsi menjelaskan pilihan region server Ngrok yang ingin kita gunakan, defaultnya adalah US. Kalian bisa melihat langsung pada dokumentasi Ngrok yang sudah saya lampirkan pada referensi untuk informasi region yang bisa digunakan dimana saja,
- tunnels, opsi ini berisi tunnel-tunnel yang ingin kita buat dan dalam kasus saya ada 4 tunnel yakni openvpn, ssh, jellyfin, dan torrent-client.
- addr, adalah opsi tunnel yang menerangkan alamat IP dan port mana yang akan kita forward menggunakan Ngrok. Dalam kasus tunnel jellyfin milik saya adalah localhost dengan port 8096. Apabila saya isi dengan "addr: 12.34.56.78:666" maka yang saya forward adalah apapun yang berjalan pada port 666 di alamat IP 12.34.56.78, namun pastikan server kalian dapat mengakses IP dan port tersebut (cmiiw, correct me if i'm wrong).
- proto, opsi tunnel ini di isi protokol yang akan kita gunakan. ada 3 isian yang bisa kita gunakan yakni tcp, http, dan tls. Jika kita menggunakan proto tcp maka koneksi kita akan di forward menjadi port lain, sedangkan jika kita menggunakan proto http atau proto tls maka koneksi kita akan di forward sebagai aplikasi web dengan port 80 dan kita akan mendapat subdomain dari Ngrok. Untuk layanan ssh, vpn, ataupun ftp tentunya kita akan menggunakan proto tcp.
- bind_tls, opsi tunnel ini menerangkan apakah kita ingin mengikat http atau https. Nilai defaultnya (apabila tidak kita isi opsi ini) kalau tidak salah adalah "both", jadi jika kita menggunakan proto http dan kita tidak mendefinisikan "bind_tls:false" maka tunnel http kita akan membuat 2 tunnel (http dan https) secara bersamaan dan tentunya hal itu akan memakan jumlah tunnel kita yang terbatas. Saya contohkan pada konfigurasi di bawah ini
maka bisa kita lihat hasilnya yakni ada 2 tunnel (http dan https) yang berjalan dalam satu waktu
maka hasil yang terjadi adalah hanya satu tunnel saja yang ngrok buat
- Dan masih banyak opsi konfigurasi lainnya sperti memberikan otentifikasi http, yang dapat kalian baca pada dokumentasi resmi Ngrok yang sudah saya sertakan pada referensi
Oke, sampai ini kita sudah bisa membuat
4 tunnel yang memang jumlah maksimal tunnel yang dapat
dibuat oleh akun ngrok secara gratis ( mungkin ada yang minat membelikan saya?
haha ).
Menjalankan Ngrok sebagai Background Process
Setelah kita berhasil menjalankan Ngrok
menggunakan cara diatas, sadarkah kalian bahwa ada kekurangan pada cara
tersebut? ya! prosesnya belum berjalan sebagai
background process sehingga rawan terinterupsi oleh kegiatan lain
kita pada server. Caranya mudah banget, kita tinggal mengeksekusi perintah
berikut pada console terminal server kita
~# ./ngrok
start --all -log=stdout > /root/logs/ngrok.log &
Perintah "ngrok start --all -log=stdout" memungkinkan kita menjalankan ngrok dan memunculkan log-nya pada
antarmuka terminal kita, namun munculan tersebut disimpan pada file "/root/logs/ngrok.log".
Cara yang lainnya adalah menggunakan aplikasi
screen. Umumnya, aplikasi screen ini sudah terinstall
secara default pada server debian. Caranya juga sama mudahnya, kita hanya
perlu mengeksekusi perintah ini pada terminal kita.
~# screen
-S ngrok -dm /root/ngrok start --all -log=/root/logs/ngrok.log
Argumen "-S ngrok" pada perintah
screen tersebut memiliki arti menjalankan screen dengan
nama sesi "ngrok", argumen "-dm" berarti melepas screen tersebut untuk kembali
ke layar utama dengan perintah yang di eksekusi dalam
screen tersebut yakni "/root/ngrok start --all -log=/root/logs/ngrok.log"
Dari dua cara diatas, saya pribadi lebih familiar menggunakan cara yang
pertama karena ngrok berjalan sendiri tanpa bantuan dari
screen meskipun menurut saya penggunaan cara kedua itu bagus
karena terkesan lebih rapi. Jadi pilihan penggunaan cara akan saya
kembalikan lagi ke kalian :).
Mengetahui Endpoint Port Forward dari Ngrok
Untuk mengetahui endpoint atau alamat Ngrok yang dapat kita gunakan untuk mengakses port yang telah kita forward, kita bisa menggunakan dua cara yakni melalui dashboard akun ngrok kita atau melalui log yang telah kita masukkan pada perintah, contoh pada kasus saya lognya ada di "/root/logs/ngrok.log". Untuk melihatnya kita bisa menggunakan perintah
~# awk '/started tunnel/ {print substr($6,6)": " substr($8,5)}' /root/logs/ngrok.log | tail -4
Perintah diatas memungkinkan kita untuk mengambil log yang berisi "started tunnel" pada file log lalu output-nya dimodifikasi sedemikian rupa dan di ambil hanya 4 baris terakhir (karena kita mempunyai 4 tunnel). Adapun contoh hasilnya bisa dilihat seperti tangkapan layar di bawah
tangkapan layar hasil dari log
Nah, sekian artikel saya mengenai Nge-Rok Part 1 dari saya. Tunggu artikel Nge-Rok Part 2-nya yang berkaitan dengan cara membuat layanan ngrok tetap aktif yaa...
[UPDATE]
Part-2 nya udah rilis ya gaes di artikel Nge-Rok Part 2 : Otomatisasi Mulai Ulang Ngrok Setelah Prosesnya Terinterupsi
Referensi:
0 comments: