Z internetu na lokální server pomocí ngrok

Windows, Linux, Tipy & triky

ngrok je nástroj, který umožňuje vytvořit zabezpečený tunel z veřejné URL k lokálnímu serveru na vašem stroji. Můžete tak k vašemu localhostu přistupovat odkudkoliv.

Z internetu na lokální server pomocí ngrok

Řekněme, že potřebujete urgentně připravit demo webu pro klienta či kolegu na druhé straně světa. Nebo třeba vyvíjíte s webhooky nějaké externí aplikace. V obou případech budete potřebovat veřejně dostupnou URL. Můžete svou aplikaci nahrát na hostovaný server, ale budete každou drobnou změnu znova nahrávat jen, abyste byli schopni něco otestovat? Při lokálním vývoji může být takový proces velmi otravný. Tady nastupuje ngrok.

Rychlý start

Prvotní příprava ngrok je velmi jednoduchá a skládá se v podstatě ze tří kroků:

1) Instalace

Stačí stáhnout a rozbalit archiv s aplikací. Aplikace je jediný soubor. Na Linuxu pozor na to, aby byl soubor spustitelný. Ujistit se můžete příkazem:

# Soubor aplikace musí být spustitelný 
sudo chmod +x ngrok

Tip: soubor aplikace můžete na Linuxu buď přemístit do adresáře ~/bin nebo jeho umístění přidat do proměnné $PATH tak, aby byl soubor aplikace vždy spustitelný přes příkazovou řádku příkazem "ngrok". Na OS X nebo Windows by postup měl být podobný.

2) Spuštění

Pro spuštění tunelu pro standardní webový server (HTTP na portu 80) stačí zadat příkaz:

# Spuštění tunelu na HTTP port 80
ngrok http 80

Toť vše. Následně se vám objeví okno s přehledem, kde je vygenerovaná nová veřejná URL adresa tunelu a lokální adresa dashboardu.

Přehled ngrok v terminálu

Dashboard obsahuje přehled komunikace, která tunelem prochází a konfigurace ngroku. Zároveň má velmi užitečnou funkci Replay, která zopakuje již provedený request.

3) Registrace (volitelné)

Registrací získáte delší trvání tunelu, přehled tunelů ve svém dashboardu na dashboard.ngrok.com, TCP tunely a další výhody. Pro základní použití se však bez registrace v pohodě obejdete.

Po registraci je třeba propojit lokálního klienta s vašim účtem pomocí tokenu. Token je k dispozici v dashboardu a propojení s klientem proběhne příkazem:

# Propojení účtu s aplikací přes auth token
ngrok authtoken <VÁŠ TOKEN>

Virtual Host

Pokud aplikace na lokálním serveru běží jako Virtual Host, lokální webserver používá hlavičku Host, aby rozpoznal, kterou aplikaci zobrazit. V takovém případě je při vytváření tunelu nutné specifikovat Host:

# Spuštění tunelu na virtual host "example.dev", HTTP port 80 
ngrok http -host-header=example.dev 80

Přístup pod heslem

Přístup k tunelu lze chránit jménem a heslem přidáním parametru -auth. Tunel je pak chráněn pomocí HTTP BasicAuth:

# Ochrana tunelu heslem
ngrok http -auth="jmeno:heslo" 80

Placené funkce a co dál?

ngrok je v základu zdarma. Nabízí však i placené funkce, jako například vlastní subdomény, konfigurační soubory pro více tunelů najednou, TLS protokol nebo IP whitelist. Především možnost vlastní subdomény je velmi praktická. Dá se tím vyhnout nutnosti změnit doménu v nastavení webhooku pokaždé, když je vytvořen nový tunel.

Dohromady jde o velmi praktický nástroj a zejména pro lokální vývoj a testování s webhooky třetích stran nebo API s omezením na URL jde o nedocenitelnou službu. V tomto článku nejsou ani zmíněny všechny možnosti, které ngrok nabízí. Proto, pokud si chcete přečíst více, doporučuji oficiální dokumentaci.


Pokud máte jakékoliv dotazy nebo tipy k ngrok, podělte se s námi v komentářích!

K tomuto článku již není možné přidávat další komentáře