Previewing Local Domains from Remote Devices with ngrok Bookmark

For long, it has been sufficient for me to preview my work with DevTools/emulators on my development machine, doing the real testing once a staging server had been set up. This could be at the beginning of a project or some time later, when the project has progressed. For one of my last projects I needed to test and preview earlier and more often. I needed a way to preview my .local project domain on my phone. The question was: How do you do that in 2021?

In the past, I used Adobe Edge Inspect, which has been discontinued, and later Ghostlab. Since I don’t use it much, I didn’t want to buy another license.

By asking Twitter, I got the answer: These days, everybody seems to use ngrok.

In a nutshell:

ngrok exposes local servers behind NATs and firewalls to the public internet over a secure tunnel

There is a free plan, which is nice, and for my needs sufficient. Installation is well explained and straight-forward and once completed, leads straight into tutorials to get started. On the free plan, ngrok’s temporary URLs are randomly generated, but again, in my case not a problem. I can see how permanent URLs for previews can be nice and worth a paid subscription.

Once installed, running ./ngrok http 80 in your Terminal window, creates a tunnel for your local webserver at port 80 and as a result, displays in the following:

Session Status                online                                              
Version                       2.3.40                                              
Region                        United States (us)                                  
Web Interface                 http://127.0.0.1:4040                               
Forwarding                    http://7b2488459f98.ngrok.io -> http://localhost:80 
Forwarding                    https://7b2488459f98.ngrok.io -> http://localhost:80

You can then copy either one of the temporary forwarding URLs, open it in your browser and voilà: You can browse your local development domain from your remote device.

If your local project runs on https, you will need a different command for ngrok, which looks like this:

./ngrok http -host-header=rewrite https://foobartel.local:8890

Session Status                online                                                                                                                                                                                                                                           
Version                       2.3.40                                                                                                                                      
Region                        United States (us)                                                                                                                          
Web Interface                 http://127.0.0.1:4040                                                                                                                       
Forwarding                    http://8c004e80cb77.ngrok.io -> https://foobartel.local:8890                                                                                
Forwarding                    https://8c004e80cb77.ngrok.io -> https://foobartel.local:8890    

To quit the process, press Cmd-C.

I am happy with this solution and since I don’t use it too often, the setup works well and gives me all I need to preview local domains for mobile testing. If you are looking for a solution that lets you preview domains remotely every once in a while, this should work for you, too. In cases where you’d use it to preview a lot of domains and often, being able to get permanent URLs to bookmark would be a benefit and worth a paid plan. Thanks to Harry and Avinash for the pointer! Happy previewing!

https://foobartel.com/@/page/e87o72g1oArriZC0