This article is about sharing your localhost as a link that anyone can access. We will achieve this using ngrok
As a Web Developer, whatever you work on has to be shared as a link that others can access. Irrespective of whether you are a Front-End or a Back-End dev, a MERN Stack or a LAMP Stack dev, I am assuming you know the importance of https://localhost/.
What if I told you that the work on your localhost can be shared with others in a few simple steps?🤯
There are several methods of deploying your project on a server as a shareable link.
But the problem with this process that you have to-
- Commit your code and Push it to an external server before anyone can see your progress.
- If your organisation follows DevOps Pipelines. Your colleague will only be able to test your code after the next build is ready.(Assuming there is a case of "It works on my machine")
- As a #CodeNewbie the process is even more tiresome as you have to learn all about git, GitHub, Heroku, AWS, etc.
The answer to all of these Problems is sharing your work without committing the code and pushing it to an external server. This is possible by tunneling your localhost on the internet using ngrok
Ngrok exposes local servers behind NATs and firewalls to the public internet over secure tunnels.
> Lets get started
- Download from here
- Unzip the downloaded folder
- Run the
ngrok.exe
-
Log in to your account and head to the
Dashboard
In the .exe file Command
./ngrok authtoken Your_Authentication_Key
Now Fire it up
./ngrok http 3000
if your project is hosted on http://localhost:3000/This link you see can be shared with others to see your work.
So this link can be accessed by anyone and will work as long as you run the program on your computer.
> Why should you use ngrok?
They have very good documentation, easy to use, and have a lot of uses that can help you with many projects that you might work on.
> Use Case
I have been a Web Developer both Front-end and Back-end. I currently work in DevOps. This is a major gap that I have seen.
There is always a case where, "It works on my machine ¯_(ツ)_/¯ ". Yes, DevOps solves this problem majorly, but for minor changes triggering the CI/CD pipelines seems like a waste of resource to me.
Here are some scenarios, I have seen this to be helpful:
- Front end developers wanna present their work to clients/managers before committing the work.
- Students in a Hackathon can use it share their project easily. Not all student have credit cards to signup for AWS or similar cloud services.
- Back-end developer has a Server with a local database. They use it make sure with the front-end team can correctly consume the data.(Did at work!)
- SSH to a Raspberry Pi
- Test and build a Web-hook integrations
- Applications with web-sockets, those which have to be running on at least two ends to be tested.
> Conclusion
This method seems like a good bridge to help out both front-end and back-end developers.
There can be doubts on it's security and privacy concerns. And Yes, those are point of concern. But the platform is still building. There are many BETA features and also a few paid services.
Overall, an easy and short alternative to deploying your work on the internet.