Untuk mengakses sebuah komputer (khususnya server) dari internet, bisa dilakukan dengan beberapa cara. Jika memiliki IP public, maka server tersebut bisa langsung dipasang IP public. Atau menggunakan metode PAT/DNAT/Port Forward bagi yang menggunakan IP lokal. Namun bagaimana jika tidak memiliki IP public static ataupun dynamic?
Jika hanya terdapat akses internet dan tidak memiliki IP public, saya biasanya menggunakan Teamviewer atau AnyDesk atau Zoho Assist. Pernah juga menggunakan LogMeIn Hamachi. Yang metodenya mirip seperti VPN. Namun penggunaannya sangat terbatas. Hanya bisa diakses oleh saya sendiri yang mengetahui ID dan passwordnya.
Kira-kira ada ngga ya suatu metode yang bisa mengakses server lokal secara langsung via Public URL/internet. Dan bisa diakses oleh siapa saja?. Ternyata ada. Yang penting server tersebut memiliki akses internet. Ada satu aplikasi namanya ngrok. Pengertian ngrok sendiri
ngrok exposes local servers behind NATs and firewalls to the public internet over secure tunnels..
Begitu kira-kira keterangan dari website ngrok : https://ngrok.com/product.
Saya sendiri menggunakan ngrok ini untuk mengexpose local web server ataupun akses SSH ke internet. Bisa juga aplikasi lain. Karena kemampuannya untuk melakukan http tunnel, tls tunnel dan tcp tunnel. Ketika ngrok ini dijalankan, nantinya akan menampilkan link acak dari ngrok untuk mengakses local webserver ataupun SSH. Tentu link nya bisa disesuaikan apabila menggunakan tipe berbayar 🙂
Instalasi dan penggunaannya cukup mudah. Cukup download binary nya dan jalankan opsi-opsi yang disediakan. Begini cara saya menggunakan ngrok
Login pada website ngrok.com untuk mendapatkan token. Bisa registrasi terlebih dahulu atau login langsung menggunakan account Github/Google. Setelah login, akan ditampilkan menu download ngrok. Silakan download dan sesuaikan dengan OS yang digunakan.
Adapun IP lokal, OS dan contoh aplikasi yang saya gunakan sebagai berikut :
IP Address lokal : 10.142.0.2 OS : GNU/Linux Ubuntu 16.04.5 LTS Aplikasi : SSH, Nginx dan Jenkins
# Download aplikasi Ngrok
Download aplikasi ngrok dari server lokal yang akan diexpose ke internet
cd /srv/
wget -c https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
unzip ngrok-stable-linux-amd64.zip
Lakukan autentikasi token. Token bisa dicek pada menu https://dashboard.ngrok.com/auth. Kemudian jalankan perintah berikut :
/srv/ngrok authtoken token-dari-dashboard-ngrok
# Expose Nginx port 80
Jalankan ngrok untuk mengexpose nginx
/srv/ngrok http 80
Maka akan muncul informasi seperti berikut :
Berikut hasil testing akses nginx dari ip lokal
Berikut hasil testing akses nginx dari Public URL ngrok
Tidak ada perbedaan tampilan ketika akses dari IP lokal ataupun via public url ngrok. Bedanya, setelah dilakukan ngrok, nginx dapat diakses dari internet melalui random url yang diberikan 🙂
# Expose Jenkins port 8042
Jalankan ngrok untuk mengexpose Jenkins. Kebetulan port aplikasi Jenkins saya ubah dari default 8080 menjadi 8042
/srv/ngrok http -bind-tls=false 8042
Penambahan opsi -bind-tls=false untuk memastikan ngrok hanya listen akses via http. Jika tanpa opsi -bind-tls=false, maka public url dapat diakses via http ataupun https. Seperti contoh nginx diatas yang dapat diakses dengan http atau https
# Expose SSH port 22
Jalankan ngrok untuk mengexpose SSH
/srv/ngrok tcp 22
Contoh output proses ketika melakukan tunnel port SSH seperti berikut :
Testing akses SSH pada public url yang digenerate oleh ngrok
Dari hasil testing akses diatas, saya berhasil akses SSH server lokal saya melalui public url ngrok
# Menjalankan multiple tunnels
Ngrok versi free hanya bisa melakuan 1 online ngrok proses. Ketika melakukan expose nginx secara langsung, maka expose Jenkins ataupun SSH tidak dapat dilakukan. Karena sudah ada 1 online ngrok proses yang berjalan. Namun versi free ini bisa menjalankan hingga 4 tunnels dalam satu ngrok proses. Untuk menjalankan multiple tunnels, aplikasi yang hendak di tunnels harus didefinisikan pada sebuah file yml. Lokasi file ini berada di home direktori user. Jika ngrok dijalankan sebagai user root, maka lokasinya ada di /root/.ngrok2/ngrok.yml. Jika berada di user lain, maka lokasinya ada di /home/namauser/.ngrok2/ngrok.yml.
Contoh disini, saya menjalankan ngrok sebagai user root. Maka file yang saya sesuaikan lokasinya di /root/.ngrok2/ngrok.yml. Isinya seperti berikut :
authtoken: 2udG6q3GRixxxxxxxxxxxxxxxxxxxxxxxxxxx tunnels: nginx: addr: 80 auth: usersaya:passwordsaya bind_tls: false proto: http jenkins: addr: 8042 bind_tls: false proto: http ssh-access: addr: 22 proto: tcp
Contoh isi file yml diatas berisi 3 tunnels. Tunnel nginx, jenkins dan SSH. Pada contoh tunnel nginx, saya tambahkan auth. Ketika public url ngrok diakses dari internet, maka akan ditanya username dan password terlebih dahulu, sebelum muncul tampilan asli dari nginx. Jangan lupa juga untuk mendefinisikan opsi bind_tls: false. Jika opsi bind_tls: menjadi true, pada tunnel dengan protocol http akan otomatis dibuatkan juga public url ngrok https nya. Alhasil satu protokol http akan menjalankan 2 tunnel proses. Yaitu tunnel http dan https. Proses tunnel SSH yang dibawahnya bisa jadi tidak diproses. Karena maksimal ngrok proses untuk versi free hanya 4 tunnels.
Setelah file yml disesuaikan, jalankan perintah berikut untuk menjalankan proses tunnel
/srv/ngrok start -all
Berikut contoh proses tunnel yang muncul
Perhatikan pada bagian forwarding. Disana terdapat 3 proses tunnels. Tunnel untuk nginx dengan port 80, Jenkins dengan port 8042 dan SSH dengan port 22. Masing-masing tunnel dapat diakses dengan public url yang berbeda-beda
# Tips menjalankan Ngrok pada background proses
Ketika ngrok dijalankan, maka prosesnya akan langsung muncul. Dan apabila ditutup consolenya, maka proses ngrok juga berhenti. Supaya ngrok dapat dijalankan pada background proses, tambahkan opsi log
/srv/ngrok start -all -log=stdout > /tmp/ngrok.log &
# Cek status Ngrok dari Dashboard
Jika ngrok dijalankan dengan mode background proses, maka public url ngrok tidak muncul. Untuk mengetahui akses urlnya, bisa dicek menggunakan curl. Berikut perintahnya :
curl http://localhost:4040/api/tunnels
Hasil dari perintah curl diatas seperti berikut :
Lihat pada bagian public_url. Url tersebut adalah url ngrok yang bisa diakses dari internet. Atau cara paling gampang untuk mengetahui url nya dengan masuk pada dashboard ngrok bagian status : https://dashboard.ngrok.com/status
# Tips auto start Ngrok menggunakan Crontab
Supaya ngrok otomatis start ketika booting, tambahkan baris berikut pada crontab :
@reboot /srv/ngrok start -all -log=stdout > /tmp/ngrok.log &
Untuk status tunnel, bisa dicek dengan perintah curl atau langsung akses dashboard ngrok status.
Dengan menggunakan ngrok, saya merasa terbantu untuk mengecek server yang tidak memiliki ip public static secara langsung. Cukup ada koneksi internet disisi server, maka server dapat diakses dari internet melalui ngrok tunnel 🙂
Sekian panduan penggunaan ngrok untuk melakukan expose service via http ataupun tcp tunnels ke internet. Silakan beli ngrok versi berbayar untuk mendapatkan benefit lebih seperti custom url dan limitasi tunnel yang lebih banyak 🙂
Jika dirasa artikel ini bermanfaat, jangan sungkan untuk share pada media sosial 🙂
Silakan dicoba dan semoga bermanfaat 🙂
MENGAPA NGROK SANGAT LAMBAT. JADI GAKA ADA GUNA
Ngrok hanya salah satu metode agar lokal server yang tidak memiliki IP public dapat diakses secara langsung dari internet. Kenapa lambat? karena IP public yang digunakan bukan IP public region Indonesia. Ngrok hanya melakukan tunnel sebagai jembatan. Jika ingin cepet aksesnya, pastikan servernya memiliki IP public static secara langsung dan koneksi internet yang cepat
saya udah coba, tapi file css saya tidak terbaca, hanya html nya saja, jadi tampilannya berantakan
Kenapa di saya, respon di ngrok untuk akses won local dengan webserver nginx muncul Get/. 303 see other…
Di client TDK muncul content yg diakses
Hi mas Risnandar,
Pastikan servernya bisa diakses secara local terlebih dahulu. Jika sudah bisa, coba akses via NGROK. Jika masih sama problemnya, coba expose service lain untuk komparasi. Misalnya service SSH
Thanks gan penjelesannya mantab, saya mau tanya gan bagaimana caranya ngrok tetap aktif dan bisa diakses saat pc/laptop server dalam mode hibernate?
Hi mas Saddam,
Untuk hal tersebut tidak bisa dilakukan mas. Karena services dianggap sedang tidak aktif
permisi kak,.. maaf menyimpang dari topik. mau tanya, saya jika di tempat kerja saya bisa akses semua aplikasi, web perusahaan, admin access point,server POS, server lokal dan bahkan server pusat pun bisa saya akses, tapi ketik saya akses dengan jaringan lain dia refuse. karena memang hanya bisa diakses by jaringan lokal. jadi sebenarnya saya punya akses kemana saja asalkan saya nyambung ke jaringan lokal. bisa gak kita buat akses sendiri untuk masuk ke jaringan tsb, by vpn mungkin, atau yang lainnya,.. biar saya bisa kerja tanpa harus di tempat kerja.
Terimakasih.
Hi puji,
Untuk case tersebut bisa saja Server memang hanya boleh dan hanya bisa diakses via lokal jaringan. Adapun jika ingin bisa diakses dari luar jaringan :
1. Gunakan VPN yang diberikan dari perusahaan (jika ada)
2. Gunakan tools untuk remote PC yang ada dikantor. Misalnya Teamviewer, Anydesk. Itu juga jika diopen aksesnya
siang mas ahmad, sya adi, ijin bertanya berhubung sedang work from home, sya ingin localhost sya yang isinya cbt soal bisa diakses lwt ngrok sdh bisa, yg ingin ditanyakan sya pakai windows 10,
1. apakah perintah yml tetap sama untuk running di background services?
2. maksudnya 40 koneksi per menit apa mas? apa maksimal localhost via ngrok hanya 40 user sja per menit.
3. agar bisa terakses dengan baik localhost cukup seting 1 tunel buat localhost sja atau ada tambahan, sya menggunakan laragon, php 7.4, apache, mariadb?
mohon edukasinya. terima kasih atas bantuannya mas
Hi mas Adi,
1. Untuk perintahnya sama. Jalankan program ngrok nya. Untuk default lokasinya bisa cek disini : https://ngrok.com/docs#config-default-location
2. Sepertinya demikian untuk plan yang free
3. Jika yang diexpose hanya port 80 saja, cukup 1 tunnel saja. Namun jika harus expose port yang lain, plan free bisa maksimum expose 4 tunnel
Kalo dr komputer client dg browser memanggil alamat http://192.168.0.190/sbs di server aplikasinya menggunakan xampp bagaimana cara seting agar bisa di onlinkan ke internet dengan ngrok ?
Hi mas Taufik,
Jika sudah dikonfigurasi Ngrok nya, seharusnya bisa langsung diakses http://url-dari-ngrok/sbs
Maaf mas, saya kebetulan baca, kebetulan saya mengalami masalah tsb, tapi tertarikmya menggunakan anydesk, bisa tidak kita akses ip localhost menggunakan anydesk, trims sebelumnya
Hi mas Ngurah,
Anydesk fungsinya sama seperti Teamviewer atau remote desktop sejenis. Jika hendak akses servernya, tentu harus akses anydesk nya terlebih dahulu. Baru bisa akses localhost dari server tersebut.
apakah bisa akses localhost server tersebut di komputer kita? saya baca tcp tuneling anydesk tapi blum paham apakah bisa untuk hal tsb.. terimakasih pemcerahannya..
Hi mas,
Untuk hal tersebut saya belum pernah coba.
siang mas ahmad, maaf saya awam , saya masih belum maksud yang anda jelaskan,
saya sudah daftar dengan akun google saya kemudian download ,ekstrak ngrok , nah untuk di point jalankan perintah ……. itu di masukan di mana ya…kalau bisa saya di kasih link youtubenya mas. makasih.
Hi mas Singgih,
Perintah tersebut dijalankan dari terminal pak jika menggunakan Linux. Jika di Windows, dari CMD
Terima kasih artikelnya Mas, keren.
Saya ingin mengonlinekan MOODLE menggunakan ngrok, bagaimana setting ngrok dan port moodle-
nya ya?
Hi pak Gunanto,
Untuk settingan di Ngrok cukup pointing ke port yang digunakan oleh si Moodle pak. Jika Moodle menggunakan webserver dengan port 80, maka bisa memakai port tersebut
Maaf tanya mas Ahmad Imanuddin, saya sudah mencoba menggunakan ngrok di ubuntu 16.04, ketika ngrok itu direstart (ctr+q), kemudian ngrok diaktifkan lagi akan dapat alamat forwarding yang berbeda. Bagaimana caranya agar alamat forwarding tidak berubah setelah ngrok direstar?
Hi mas Caslam,
Untuk kebutuhan tersebut, harus menggunakan Ngrok yang berbayar mas. Kalo yang free, memang disana kekurangannya
Mas Ahmad ini ngrok nya ada trouble too many connection, apakah ngrok free dibatasi 20 koneksi permenit ya cuma di keterangan ngroknya 40 koneksi permenitnya itu beda…apa memang seperti itu ya mas?
Waw, mantap. Koneksinya sampai 20 lebih :). Saya belum pernah sebanyak itu soalnya mas. Jadi belum bisa menyimpulkan. Solusi lain bisa pakai Serveo.net. Panduannya pernah nulis disini : https://bit.ly/2xSxk6X . Tapi sepertinya sudah tidak aktif lagi. Jika mau coba buat server Serveo sendiri, bisa coba lihat di google cache : https://bit.ly/3cGua52
salam, mas ahmad mau nanya untuk penggunaan ngrok itu sendiri apakah ada session expired nya atau harus server harus online, soalnya pas saya mau buka ada keterangan tunel ….ngrok.io not found. terimakasih
Hi,
Untuk server nya tentu harus dalam keadaan online dan ada akses internetnya. Adapun untuk alamatnya, bisa juga berubah karena sempat restart atau sejenisnya. Untuk perubahan alamat bisa dicek via dashboard ngrok bagian status
Bagaimana caranya supaya url / link nya yang diberikan ngrok tetap (tidak berubah-ubah) setelah server dimatikan.
Hi mas Mifta,
Untuk kebutuhan tersebut, harus menggunakan Ngrok yang berbayar mas. Kalo yang free, memang disana kekurangannya
hallo pak saya mau nanya untuk komputer core i5 dan ram 8 dapat menampung berapa clin sekalian akses ya pak dengan ngrok..makasih
Hi pak Eko,
Untuk berapa banyaknya menampung belum pernah coba pak. Kebetulan saya pakai hanya untuk kebutuhan personal saja
halo mas ijin bertanya jika untuk kebutuhan agar jitsi meet yang di setup di local langkah langkah nya apa saja apa tinggal install si ngrok ini lalu sesuaikan apa bagaimana ?
terimakasih mas
pengen test ing saja sebenernanya
Hi mas Irfan,
Benar mas. Tinggal download dan sesuaikan saja.
Berarti download di server ya ok deh mas makasih nanti saja coba dulu
Mas, saya sudah berhasil install jitsi (punya 2 IP : 1 ip public, sub domain, https dan 1 ip megarah ke local ) ,
tetapi jika client nya (ip local dan tidak punya akses internet) saat join selalu putus (reconnecting terus menerus).
pertanyaan saya apakah jitsi memang tidak bisa di implementasi di local area network ?
apakah ada solusi lain video Conference selain jitsi yang bisa di implementasi di local area network ?
Hi Pak Setijo Agus,
Saya pribadi belum pernah coba install Jitsi. Namun jika dilihat dari beberapa link dibawah, hal tersebut seharusnya no issue dan memungkinkan menggunakan IP lokal
– https://community.jitsi.org/t/install-jitsi-meet-for-a-local-network/16375/3
– https://community.jitsi.org/t/jitsi-meet-not-working-when-connecting-from-local-network/36086/4
– https://github.com/jitsi/jitsi-meet/issues/2415
permisi mau nanya bang , saat ini saya sedang pembuatan tugas akhir , dimana saya membuat server cloud computing ( owncloud ) lokal di virtualbox dgn ubuntu dan diminta untuk mengakses jaringan private tadi menggunakan jaringan publik (jaringan biasa) , cara menghubungkan akses private tadi ke publik menggunakan ngrok tadi gimana ya ??
terimakasih ..
Hi mas Ridwan Saputra,
Pastikan saja VM yang ada didalam VirtualBox nya memiliki akses internet. Selebihnya, bisa ikuti panduan pada artikel ini
halo pak saya mau nanya tapi ini diluar dari aplikasi ngrok. saya sudah pernah membuat host ip menggunakan no.ip.com sudah, setting di duc dan berhasil setting ke modem dan mengonlinekan. tetapi, no ip saya expired karena telat mengupdate lagi. saat membuat hosname baru dengan email yang sama dan sudah di set di duc, tidak berhasil mengonlinekan kembali. adakah sarannya pak?
Hi Atika,
Saya belum pernah coba pakai noip. Jadi belum bisa memberikan saran 🙂
Mas, saya uji coba memakai moodle mengalami error Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
tapi kalau di akses jaringan lokal bisa, hanya ketika akses pakai link ngrok jadinya seperti itu mas
Hi mas Risky,
Apakah ada menggunakan Virtual Host? jika iya, akses pada Moodle harus sesuai dengan nama yang didefinisikan pada vhost nya. Coba simpan moodlenya tanpa Vhost. Jadi jika diakses pakai IP atau pakai nama, hasilnya akan tetap sama
Baik mas, terimakasih sudah membantu, nanti saya coba
Mas. Saya menggunakan “ngrok” untuk input raport. tapi linknya sering error. cara agar “ngrok” tetap tabil bagaimana?
Hi mas Setiawan,
Untuk ke-stabilan, tergantung dari koneksinya. Karena IP yang dipakai Ngrok biasanya dari luar negeri. Jadi butuh bandwidth luar negeri yang lumayan. Alternatif lain, bisa coba pakai serveo: https://imanudin.com/2019/01/24/akses-server-lokal-dari-internet-menggunakan-serveo/
berarti bisa akses aplikasi local yang tidak memiliki ip public ya mas
Hi mas Islahuddin,
Benar mas. Yang penting ada koneksi internet saja
apakah saat ini ngrok versi free, di batasi pengguna yang ngaksesnya mas? karena ketika satu user/perangkat sudah mengakses, rekan2 saya yang lain ingin mengakses selalu muncul keterangan “tunnel ….. not found”. padahal pc server sedang online, alamat pun belum berubah
Jika dari keterangannya sih seperti ini:
HTTP/TCP tunnels on random URLs/ports
1 online ngrok process
4 tunnels / ngrok process
40 connections / minute
terima kasih mas tutorialnya.
saya sudah coba tapi ada permasalahan, request yang berhasil cuma get untuk tampil saja, sedangkan post, put, delete, bahkan get untuk edit itu ga konek. kira2 kenapa ya mas?
Hi Nisa,
Apakah akses secara lokal proses post, put dan delete nya normal?
Hy mas aahmad, bagaimana cara gunakan ngrok yg berbayar dan bagaimana sistem pembayaran? Trus klo yg berbayar apa bisa kencang tidak lelet?
Trims mas ahmad
Hi mas Heru,
Saya belum coba yang berbayar. Kemungkinan bayar via Paypal atau via CC.
sangat membantu informasinya, ini yang saya cari sejak lama, thanks ya
slamat siang mas, apakah ngrok harus diseting ulang tiap kali server dimatikan? soalnya kami akses Rapor pake ngrok, nah hari esoknya link yg diseting kemarin gak bisa diakses lagi.
Hi mas,
Untuk link, otomatis generate ulang setiap kali restart mas. Untuk link terbarunya, bisa dicek dari dashboard Ngrok nya langsung
Bisakah ngrok ini dipakai untuk mikrotik Mas?
Hi mas,
Untuk Mikrotik belum pernah coba mas
Halo mas saya bayu , mau tanya kalau untuk remote ke winbox saja di ngrok.yml nya di edit bagaimana ya ,
Hi mas Bayu,
Bisa menggunakan TCP dan isi port Winbox nya
mas tanya lagi untuk alamat tcp://x.tcp.ngrok.io:xxxxxx yang di expose ini selalu ganti ya kalau di start lagi
Hi mas Bayu,
Benar mas. Jika mau permanen, harus pakai yang paid version
oke mas baik terimakasih atas infonya
saya awalnya sudah berjalan bagus , tapi sekarang ada sekarang ada kendala eror terus muncul seperti ini ERR_NGROK_3208. minta bantuanya para master.
terimaksih sebelumnya.
localhost/moodle tidak dapat diakses dari komputer lain, gimana mas
Hi mas,
Untuk Ngrok saya sudah lama tidak coba lagi. Lebih sering pakai VPN 🙂