Grout: Ngrok Alternative for Secure, Self-Hosted & Managed Tunnels
Tired of the limitations and costs of Ngrok? It’s time to meet Grout, the powerful and flexible tunneling solution from the creators of the open-source proxy.py project. Built with developers in mind, Grout provides a high-performance, secure alternative for exposing your local services to the internet. Whether you prefer total control with a self-hosted setup or want the simplicity of a fully managed service, Grout is the future of secure network tunneling.
Grout: The best of both worlds
- For the DIY Enthusiast: Self-Hosted Grout — Grout is an elegant plugin for the robustÂ
proxy.py server. For those who want complete ownership and customization, you can spin up your own Grout server. This gives you full control over your infrastructure, authentication, and routing rules—all powered by a lightweight, high-performance Python application. It’s perfect for privacy-focused projects and custom configurations. - For Instant Productivity: Managed Grout (via Jaxl.IO) — For developers who want to get up and running instantly without managing any infrastructure, Jaxl offers Grout as a fully managed service. With our managed solution, you can skip the setup and maintenance and jump straight to what matters: testing your local applications with a public endpoint in seconds. It’s the fastest, most streamlined path to secure tunneling.
Why choose Grout Self-Hosted for your tunneling needs?
Grout isn’t just another Ngrok clone; it’s a robust, customizable, and secure tool designed for developers who demand more control.
- Own your infrastructure:Â With Grout, you host the tunnel endpoint yourself. This means your data never passes through a third-party service, giving you complete control and peace of mind.
- Flexibility and power withÂ
proxy.py: Built on the highly extensibleÂproxy.py project, Grout inherits a powerful and reliable foundation. You can leverage the full feature set ofÂproxy.py to customize your tunneling setup, from implementing custom authentication to advanced routing rules. - Secure by default: Security is a top priority. Grout supports secure, outbound-only connections to your self-hosted server, preventing unwanted inbound connections to your network. For added security, you can implement authentication and use wildcard domains to control access.
- Transparent and open-source:Â As part of an open-source project, Grout’s code is transparent and auditable. This builds trust and gives the community the power to contribute, report issues, and verify its security.
Grout vs. Ngrok: The key difference
| Feature | Grout (proxy.py) | Ngrok |
| Hosting Model | Managed or Self-hosted. You control the public endpoint. | Managed service. Ngrok controls the public endpoint. |
| Control | Full control over your infrastructure and network traffic. | Limited control, dependent on Ngrok’s service. |
| Customization | Highly customizable via proxy.py plugins. | Simpler configuration, with features limited by pricing tiers. |
| Privacy | Your traffic remains on your own infrastructure. | Your traffic passes through a third-party service. |
| Ideal For | Enterprises and Developers who prioritize privacy, security, and full control. | A wider audience who need a fast, simple way to expose local services. |
Grout Features
Below is a list of high level features provided out-of-box with grout.
- Grout Authentication — Grout supports authentication to protect your files, folders and services from unauthorized access. UseÂ
--basic-auth flag to enforce authentication. - Grout Paths — By default, Grout allows access to all paths on the services. UseÂ
--path flag to restrict access to only certain paths on your web service. - Grout Wildcard Domains — By default, Grout client serves incoming traffic on a dedicated subdomain. However, some services (e.g. Kubernetes) may want to serve traffic on adhoc subdomains. Starting a dedicated Grout client for every adhoc subdomain may not be a practical solution. For such scenarios, Grout supports wildcard domains.
- Grout Wildcard Domain Routing Based Upon “Host” Header — Along with the default route you can also provide additional routes which takes precedence when the host field matches.
- Grout Client Plugin (customize programmatically) —
GroutClientBasePlugin allows you to dynamically route traffic to different upstreams. - Grout using Docker
Following our “engineering” blog posts to stay upto date with latest features.
Getting Started with Grout
Please follow the comprehensive instructions and guide in official README.md