1. Introduction
Sometimes you need to share a local application with the outside world, maybe to demo your project, test a webhook, or allow a teammate to access your development server.
Normally, you’d need a public IP, port forwarding, or a cloud server. ngrok removes all that complexity by creating a secure tunnel from the internet directly to your machine, giving you a public URL instantly.
2. Prerequisites
Before we begin, make sure you have:
- A terminal
- A free ngrok account (for authentication token)
- A running local service (e.g., a Python HTTP server, web app, or API)
3. Installing ngrok on Linux
We’ll cover installation for Arch Linux, Debian/Ubuntu, and Fedora.
3.1 Arch Linux
This package is not in the official repos, install it from the AUR:
yay -S ngrok
3.2 Debian / Ubuntu
sudo apt update
sudo apt install snapd
sudo snap install ngrok
Alternatively, download the binary from the ngrok downloads page.
3.3 Fedora
sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install ngrok
4. Authenticating ngrok
Once installed, you need to connect it to your account so you can use custom domains, longer session times, and access the dashboard.
- Sign in to ngrok dashboard. -> Your AuthToken

- Copy your AuthToken.
- Run:You will see: Authtoken saved to configuration file: ~/.config/ngrok/ngrok.yml
ngrok config add-authtoken <YOUR_TOKEN>
5. Exposing a Local Service
For example, if your local web server is running on port 8080:
ngrok http 8080
You’ll see output like:

Now you can share the HTTPS URL with anyone. It wil be similar to: https://random.string.ngrok-free.app

6. Adding Basic Security
You can protect your tunnel with a simple username and password:
ngrok http --basic-auth="user:password" 8080

Anyone visiting the public link will need credentials.
7. The Inspector
One of ngrok’s most powerful features is its built-in web interface, accessible at http://127.0.0.1:4040. This interface lets you inspect every single request that comes through your tunnel in real-time. You can see headers, request bodies, and response details, and even replay requests with a single click—an absolute lifesaver for debugging webhooks.

8. Common Use Cases
- Webhook testing — Connect services like GitHub, Stripe, or Twilio to your local environment.
- Temporary demos — Share work-in-progress with clients without deployment.
- Remote device access — SSH into a Raspberry Pi without changing router settings.
9. Conclusion
In just a few commands, you’ve learned how to:
- Install ngrok on popular Linux distros
- Authenticate your installation
- Share a local service securely
From here, you can explore ngrok’s advanced features like static domains, IP allowlists, and traffic inspection.