# NGROK
## What is NGROK
NGROK merupakan layanan reverse-proxy yang digunakan untuk meng-expose software/service/program melalui tunneling. Simpelnya, jika kalian memiliki software yang dijalankan di local(komputer pribadi, vps, vm yang tidak di-expose ke public), kalian dapat menggunakan layanan dari `ngrok` untuk membuat software tersebut dapat diakses secara publik.

## What usually ngrok used for
- Membuat website demo tanpa deploy.
- Menjalankan layanan Personal Cloud Services dari rumah.
- Melakukan test Mobile App/Web App yang terkoneksi ke local backend yang sedang berjalan (Localhost).
## Step-by-step How To
### Register
Sebelum dapat menggunakan layanan Ngrok, kita melakukan registrasi terlebih dahulu. Buka website Ngrok atau ketik https://ngrok.com/ di address bar browser kalian. Setelah itu pilih menu Login atau Signup.

### Setup/Installation
#### Download Ngrok
Pilih versi Ngrok yang sesuai dengan environment(operating system) kalian

#### Extract Ngrok
Extract binary file Ngrok ke directory/folder yang kalian inginkan, jika ingin mudah taruh saja di directory project/software yang sedang kalian kerjakan.
#### Authentication
Agar ngrok dapat digunakan, kita harus melakukan autentikasi terlebih dahulu. Jalankan
```bash
ngrok config add-authtoken <AUTH_TOKEN_KALIAN>
```
Auth token didapatkan dari dashboard Ngrok

### Use
Sebelum dijalankan, pastikan terlebih dahulu protokol dan port yang digunakan oleh software yang kalian develop. Selanjutnya jalankan
```bash
ngrok <PROTOKOL> <PORT>
```
Contoh : `ngrok http 8080`
Jika berhasil maka ngrok akan menghasilkan output seperti berikut
```bash=
Session Status online
Account REDACTED (Plan: Free)
Version 3.0.4
Region Asia Pacific (ap)
Latency 46ms
Web Interface http://127.0.0.1:4040
Forwarding https://b0b6-167-99-73-109.ap.ngrok.io -> http://localhost:8080
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
```
Yang menandakan software/program/service yang kalian jalankan sudah dapat diakses secara publik melalui
```URL
https://b0b6-167-99-73-109.ap.ngrok.io
```
__Note:__ URL yang dihasilkan dari free plan akan selalu berubah setiap kita menjalankan ulang. Pastikan internet yang kalian gunakan lancar dan memiliki bandwith yang cukup untuk dapat diakses secara publik.
### Reference
https://ngrok.com/
https://github.com/inconshreveable/ngrok