Introduction
In today’s modern world, IT developers play a vital role in solving various day-to-day challenges by creating web apps, mobile apps, IoT devices, software, and firmware. However, they often encounter obstacles and difficulties during their programming journey.
One such problem they face is the need to make their developed web apps or servers accessible to the outside world from their local machines without deploying them to a hosting or cloud server. In simpler terms, when developers create a web application or server on their computers, it can only be accessed within their home or office network using “localhost.” If they want to share their work with teammates for testing, debugging, demos, or any other purpose, they typically have to host the application on an external server or cloud platform. But, there’s a handy solution called Ngrok.
Ngrok is a useful tool that comes to the rescue. It allows developers to easily share their local applications with others without the need to upload them to any external server. This way, they can showcase their work without going through the hassle of deploying to a hosting or cloud service. It’s a simple and convenient way to share and collaborate on their projects effortlessly.
What is Ngrok and why it’s needed?
Ngrok is a popular tool used for secure tunneling and exposing local servers to the internet. It creates a secure connection (usually over HTTPS) between a public endpoint and a local web server running on your computer or a private network. Over 5 Million developer uses and recommends Ngrok.
The primary reasons why “Ngrok” is needed are:
- Localhost Accessibility: When you develop a web application or server on your local machine, it’s only accessible within your local network on localhost (127.0.0.1). Ngrok allows you to make your local server publicly accessible through a unique URL, enabling you to share your work with others or test it on different devices.
- Testing Webhooks: Many services, such as payment gateways, APIs, or chatbots, require a publicly accessible URL to send notifications or data updates (webhooks) to your application. Ngrok helps you expose your local server to receive these webhooks during development and testing.
- Cross-Device Testing: With ngrok, you can test your web applications on different devices like smartphones and tablets without deploying the code to a production server. It’s especially useful for mobile app development and responsive web design testing.
- Avoiding IP Whitelisting: Some third-party services may require you to whitelist the IP address from which you are accessing their APIs. Using ngrok, you can bypass this restriction by exposing your local server with a publicly available IP.
- Rapid Prototyping and Demos: Ngrok facilitates quick prototyping and sharing of projects or demos without deploying to a hosting server. This is particularly useful during hackathons, workshops, or live presentations.
- Debugging and Inspection: Ngrok provides a web interface where you can inspect incoming requests, track headers, payloads, and response data. This feature is helpful for debugging and understanding how your application behaves in real-world scenarios.
History of Ngrok
Ngrok was created by Alan Shreve, an entrepreneur and software engineer, and it was first released in 2013. The idea for Ngrok came to Alan while he was working on a project and needed an easy way to expose his local web server to the internet. He realized that setting up port forwarding and dealing with firewalls could be a cumbersome and time-consuming process.
To solve this problem, Alan developed Ngrok, a lightweight tool that allows developers to create secure tunnels from a public endpoint to a locally running web service. With Ngrok, developers could now easily share their work in progress with others, test webhooks and APIs, and access local servers remotely without worrying about networking complexities.
The name “Ngrok” comes from a combination of two words: “N” for network and “grock,” which is a fictional verb used in Robert A. Heinlein’s science fiction novel “Stranger in a Strange Land.” In the book, “grock” means to understand something deeply and intuitively. Alan chose the name to imply that Ngrok enables users to deeply understand their network by providing a straightforward solution to tunnelling.
Since its initial release, Ngrok has gained popularity among developers worldwide and has become a go-to tool for many development and testing scenarios. It offers both a free and paid version, with the latter providing additional features and customization options.
Here you may view more about Ngrok from Alan Shreve himself
Benefits of Ngrok
Ngrok offers several benefits that make it a popular choice among developers and professionals working on web development, testing, and networking projects. Here are some key benefits of Ngrok:
- Easy and Quick Setup: Ngrok provides a simple and user-friendly interface, making it easy to set up and use. With just a few commands, developers can create secure tunnels and expose their local servers to the internet within seconds.
- Secure Tunnels: Ngrok establishes secure tunnels between your local server and the Ngrok servers, ensuring that data is encrypted and protected during transit. This is especially useful when testing webhooks and APIs, as sensitive information remains secure.
- Public URL for Local Servers: Ngrok generates a temporary public URL for your local server, allowing you to share your work in progress with others for testing or demonstration purposes. It eliminates the need to deploy your application to a public server during development.
- Webhook and API Testing: Ngrok simplifies testing of webhooks and APIs by providing an external endpoint that can receive and display incoming requests. This enables developers to verify the functionality of their applications without needing a public server.
- Firewall Bypass: Ngrok allows you to bypass firewalls and access local servers remotely. It is especially helpful when developing or testing in restricted network environments where inbound connections are blocked.
- Cross-Platform Support: Ngrok is compatible with various operating systems, including Windows, macOS, and Linux, making it accessible to a wide range of developers.
- Versioned URLs: Ngrok offers versioned URLs, enabling you to have consistent and predictable URLs for your applications. This is helpful when working with third-party services that require a fixed URL.
- Custom Subdomains and Domains: The paid version of Ngrok allows users to customize subdomains and even use custom domains, offering a more professional touch and branding for their projects.
- Metrics and Logging: Ngrok provides detailed metrics and logging, allowing you to monitor incoming requests, response times, and other relevant data for debugging and optimization.
- Mobile Testing: Ngrok can be used to test web applications on mobile devices by providing a public URL accessible over the internet. This is particularly useful for mobile app development and debugging.
- Development Workflow Streamlining: By simplifying the process of exposing local servers, Ngrok accelerates the development workflow and facilitates collaboration among team members.
- Active Community and Support: Ngrok has an active and engaged community, and the developers behind the tool provide timely support and updates.
- Increase development productivity: Ngrok significantly increases development productivity by simplifying the process of sharing work in progress, testing webhooks, and accessing local servers remotely, saving valuable time and effort.
- Restrict access to the right people: With Ngrok’s secure tunnels and customizable access controls, developers can restrict access to their local servers, ensuring that only the right people have the necessary permissions, enhancing security and collaboration.
How Ngrok Works?
Ngrok’s ability to create secure tunnels between local servers and the cloud service makes it a game-changer for developers. By providing authentication, encryption, and seamless access to local applications, Ngrok simplifies the process of sharing and testing web applications. Its secure and user-friendly approach has made Ngrok an indispensable tool for developers worldwide.
- Tunnel Creation: When you run Ngrok on your local machine, it establishes a secure tunnel between your computer and the Ngrok cloud service. This tunnel serves as a secure pathway for data to travel between the two endpoints.
- Authentication and Encryption: To ensure security, Ngrok employs authentication mechanisms. When an external request is made to the Ngrok URL, Ngrok verifies its authenticity before forwarding it to your local server. This prevents unauthorized access to your local application. Additionally, Ngrok encrypts all data passing through the tunnel, ensuring that sensitive information remains protected from potential eavesdroppers or malicious actors.
- Subdomains and Custom Domains: Ngrok generates a unique URL in the form of <randomstring>.ngrok.io. This URL is used to access your local server from anywhere in the world. Moreover, Ngrok allows users to use their custom domains, enabling a more branded and personalized experience.
- Routing Requests: When someone makes a request to your Ngrok URL, the request is first received by the Ngrok cloud service. The service then forwards the request through the secure tunnel to your local server. Your local server processes the request and sends the response back to the Ngrok cloud, which in turn delivers it to the requester.
- Secure and Seamless Access: Thanks to Ngrok’s secure tunneling, your local server becomes accessible to anyone with the Ngrok URL, regardless of their physical location. Whether your application is running on a web server using port 80 for HTTP or port 443 for HTTPS, Ngrok efficiently handles the secure routing of traffic.
See the below image that can explain how it works
Challenges/Limitation of Ngrok
Ngrok undoubtedly offers significant benefits and empowers developers to securely expose their local servers. However, like any technology, it comes with its own set of limitations and challenges.
- Connection Stability: One of the primary challenges of using Ngrok is its reliance on an internet connection. Since Ngrok creates a tunnel between the local server and its cloud service, any disruptions in the internet connection could lead to temporary unavailability or interruptions in the external access to the local server.
- Session Duration Limit: Free versions of Ngrok have limitations on session duration, meaning that the tunnel is available for a limited period before it needs to be re-established. This could be an inconvenience during prolonged testing or development sessions, as the interruptions may disrupt the workflow.
- Security Concerns: While Ngrok provides secure tunnels, exposing local servers to the internet inherently involves potential security risks. Developers must be cautious and use appropriate security measures to protect their applications from unauthorized access or potential vulnerabilities.
- Limited Concurrent Connections: The number of concurrent connections allowed by the free version of Ngrok is limited. In scenarios where developers need to share their local applications with a large team or during extensive testing phases, this limitation might become a bottleneck.
- Dependency on Third-party Service: Ngrok relies on a third-party service to function. In cases where the service faces downtime or experiences issues, it can affect developers’ ability to access their local servers externally.
- Resource Consumption: Ngrok uses system resources, including memory and bandwidth, to establish and maintain tunnels. Running Ngrok continuously for extended periods may lead to resource exhaustion, impacting overall system performance.
- Custom Domain Limitation: Custom domain support is only available for paid plans. Users of the free version can only access their applications via random subdomains, which may not be ideal for branding or professional purposes.
Despite these limitations and challenges, Ngrok remains a valuable tool for developers seeking to share their work with others and gain external feedback on their applications. By understanding these constraints and using Ngrok judiciously, developers can make the most of its capabilities while mitigating potential issues.
How to use Ngrok?
It’s super easy to quickly use the Ngrok in your local environment and quickly make your application available to the World. Please follow the below steps in order to use Ngrok in your local server.
Step-1: Download Ngrok from the official website and install it on your machine.
TIP: Follow this link to know more about how you can download the Ngrock depending on your local machine configuration based on OS.
Step-2: Connect your agent to your Ngrok account
- Open your favourite web browser and log in to your Ngrok account.
- Go to Ngrok Dashboard and get your Authtoken. The Ngrok agent uses the authtoken (sometimes called tunnel credential) to log into your account when you start a tunnel.
Copy the value and run this command to add the authtoken in your terminal.
ngrok config add-authtoken TOKEN
Step-3: Create a Tunnel
Now, open a terminal or command prompt and navigate to the directory where Ngrok is installed. To create a tunnel for your local application, run the following command:
ngrok http 8000
In this example, we assume you have a web application running on port 8000 locally, and we want to make it accessible to the outside world. Ngrok will generate a public URL, such as https://randomstring.ngrok.io, which acts as a secure tunnel to your local server.
Now, anyone with this URL can access your local application in their web browser. For instance, if you’re working with a team and want to share a demo of your app, simply provide them with the Ngrok URL, and they can view the application in real-time.
Keep in mind that the above command will establish an HTTP tunnel. If your application uses HTTPS, you can create an HTTPS tunnel by adding the -bind-tls=true flag to the command:
ngrok http -bind-tls=true 8000
Using ngrok with WordPress
For Ngrok to function seamlessly with WordPress installations, there are three crucial steps you need to take:
Step-1: Instruct Ngrok to rewrite the host header and direct it to the port of your WordPress install, which is typically port 80. You can achieve this by using the following command:
ngrok http 80 --host-header=rewrite --domain www.example-dev.com
Replace “www.example-dev.com” with the URL generated by Ngrok.
Step-2: Ensure that WordPress recognizes the tunnelled hostname as its serving domain. To achieve this, modify your wp-config file and include the following lines, replacing “www.example-dev.com” with the Ngrok URL.
define('.COOKIE_DOMAIN.', 'www.example-dev.com');
define('.SITECOOKIEPATH.', '.'); if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0];
}
define( 'WP_HOME', 'https://www.example-dev.com' );
define( 'WP_SITEURL', 'https://www.example-dev.com' );
$_SERVER['HTTP_HOST'] = 'www.example-dev.com';
$_SERVER['REMOTE_ADDR'] = 'https://www.example-dev.com';
$_SERVER[ 'SERVER_ADDR' ] = 'www.example-dev.com';
By following these steps, you can seamlessly integrate Ngrok with your WordPress installation and create a local development environment that is easily accessible and functional through Ngrok’s secure tunneling capabilities.
Top 5 Alternatives of Ngrok
Thankfully, Ngrok is not the only option that offers this incredible feature. Several other popular alternatives to Ngrok are available in the market. Let’s take a closer look at the following comprehensive list of Ngrok competitors and their Pros & Cons compared with Ngrok
1. LocalTunnel: LocalTunnel is a simple and easy-to-use open-source tool that allows you to expose your local server to the internet via a public URL. It works similarly to Ngrok, providing a secure tunnel for your applications without the need for complex configurations.
Pros
- No auth token is required. You can simply install the node package and start using it.
- The free version supports subdomains too. If available it starts subdomain with the given value.
Cons
- It Supports only two protocols i.e. HTTP/HTTPS Where Ngrok supports all 3 i.e. HTTP/HTTPS, SSH
- Config file support is not available.
- No support is available for running multiple tunnels.
2. Serveo: Serveo is another excellent alternative to Ngrok that enables secure tunneling for local applications. It uses SSH for tunneling and provides a public URL for accessing your local server. Serveo is known for its simplicity and reliability.
Pros
- No auth token is required. The application can be used directly through the command prompt even without any installation.
- Supports subdomain as per the availability.
Cons
- It support HTTP/HTTPS, TCP. It doesn’t supports SSH.
- Config file support is not available.
- 3 simultaneous tunnels can be created for the free version.
3. Pagekite: Pagekite is a versatile tunnelling service that allows you to expose multiple local servers and applications. It supports various protocols like HTTP, HTTPS, SSH, and more. Pagekite offers both free and paid plans, making it suitable for different use cases.
Pros
- Supports HTTP/HTTPS, SSH, and TCP
- Subdomain is supported as first-class citizens. It is a part of the account setup itself.
Cons
- The Free version is only available for a month
4. Localtunnel.js: Localtunnel.js is an open-source alternative to Ngrok, which allows developers to create secure tunnels for their local servers. It is written in JavaScript and can be easily integrated into Node.js projects.
Pros
- Localtunnel is an open-source tool and No auth token is required.
- It doesn’t have any kind of limitation for the number of connections or session duration.
- It allows Subdomains.
Cons
- It supports only HTTP/HTTPS, It doesn’t support SSH.
- Compared to Ngrok, Localtunnel has less third-party integrations and community-supported tools.
Important Reference links
Below are some valuable reference links that can help you delve deeper into the world of Ngrok and its functionalities. These links serve as useful resources for gaining a comprehensive understanding of Ngrok and exploring its various applications. Whether you are a beginner or an experienced user, these reference links will provide you with valuable insights and information to enhance your knowledge of Ngrok. Feel free to explore and make the most out of these helpful resources.
- Official Ngrok website: https://ngrok.com/
- Ngrok documentation: https://ngrok.com/docs
- Ngrok GitHub repository: https://github.com/inconshreveable/ngrok
- Blog post on using Ngrok for local development: https://medium.com/aeturnuminc/getting-started-with-ngrok-ed67891a74bd
- Video tutorial on setting up Ngrok – https://www.youtube.com/watch?v=Gy1SzL69tQo
Conclusion
In conclusion, Ngrok has proven to be a transformative tool, empowering developers to build for the internet with ease and security. The recent launch of Cloud Edge and Secure Tunnels signifies a significant step forward on Ngrok’s journey to provide seamless and secure networking solutions. However, this is just the beginning, and we can expect even more exciting developments from the Ngrok team in the future.
As we explored the potential trajectory of Ngrok, several key areas emerged. The continuous enhancement of security measures and the introduction of new features will bolster Ngrok’s position as a reliable and trusted tool for developers. Additionally, enterprise-grade offerings will cater to the needs of larger organizations, ensuring that Ngrok remains a valuable asset in various settings.
The introduction of programmable events opens up new possibilities for Ngrok’s use in the enterprise, enabling real-time log events that can be integrated with existing security tools. Moreover, Ngrok’s commitment to investing in security and trust is commendable, ensuring that users can rely on a safe and secure platform for their networking needs.
The future of Ngrok looks incredibly promising, aligned with the ever-evolving demands of developers and the tech industry. As secure networking becomes increasingly essential in application development and deployment, Ngrok’s continued growth and innovation will undoubtedly make a profound impact. Embracing emerging technologies, strengthening security measures, and deepening its integration ecosystem will solidify Ngrok’s position as an indispensable tool for developers worldwide.
As developers embark on their journeys to build for the internet, Ngrok will remain a reliable and powerful ally, making the process feel like magic. Its simplicity, security, and user-friendly approach have already won the hearts of countless developers, and with the exciting developments on the horizon, the future of Ngrok shines brightly. So, let’s look forward to an even more connected and secure world, powered by Ngrok’s commitment to empowering developers and making their internet dreams a reality.
6 Comments
This is amazing!
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.
I love the way you’ve presented this information—excellent work!
Very interesting subject, regards for putting up.
Superb effort!
I was very happy to find this web-site.I needed to thanks on your time for this wonderful learn!! I positively having fun with each little bit of it and I have you bookmarked to take a look at new stuff you weblog post.