Key Facts
- ✓ Developer built a self-hosted ngrok alternative in 10 hours using Go
- ✓ Solution addresses webhook testing challenges with T-Bank and Telegram in Russia
- ✓ Standard ngrok service is blocked in Russia, requiring VPN usage
- ✓ VPN connections made internal resources inaccessible
- ✓ Self-hosted solution eliminates dependency on external services
Quick Summary
A developer created a self-hosted alternative to ngrok using the Go programming language in just 10 hours. The project was initiated due to difficulties testing webhooks from services like T-Bank and Telegram while operating within Russia, where the standard ngrok service is blocked.
The developer faced constant connectivity issues requiring VPN usage, which in turn made internal resources inaccessible. To solve this recurring problem, they decided to build their own tunneling solution. The resulting tool provides a self-hosted method for exposing local services to the internet, bypassing regional restrictions without relying on third-party services.
The Development Challenge
The primary motivation for building a custom solution stemmed from the inability to use standard ngrok services in Russia. Developers regularly need to test webhooks from external services, which requires exposing local servers to the public internet. When ngrok is blocked, this critical development workflow breaks down completely.
Using a VPN provided a temporary workaround, but introduced its own set of problems. The developer noted that VPN usage made portions of their internal network infrastructure inaccessible. This created a constant trade-off between accessing external services and maintaining connectivity to local resources.
The situation required a repetitive cycle of enabling and disabling VPN connections, significantly slowing down development work. Each time a webhook test was needed, the developer would have to:
- Activate a VPN connection
- Test the webhook
- Disable the VPN to regain internal network access
- Repeat the process for subsequent tests
This inefficient workflow prompted the decision to create a permanent, self-controlled solution that would eliminate these connectivity barriers entirely.
Building the Solution
The developer chose Go as the programming language for this project, likely due to its excellent networking capabilities and efficient concurrency model. Building a tunneling service requires handling multiple simultaneous connections, managing TCP/UDP traffic, and maintaining persistent sessions - all areas where Go excels.
The core functionality of the custom tool mirrors what ngrok provides: it creates a secure tunnel from the local machine to a publicly accessible endpoint. This allows external services like T-Bank or Telegram to send webhook data to a developer's local environment during testing.
By hosting the solution themselves, the developer gains complete control over the infrastructure. There are no rate limits, no usage restrictions, and no dependency on third-party services that might be blocked or experience downtime. The self-hosted nature means the tool can be deployed on any accessible server, creating a private tunneling network.
The 10-hour development timeframe indicates the solution was designed with simplicity and practicality in mind. Rather than building an overly complex system, the developer focused on the essential features needed to solve their specific problem: reliable webhook testing without connectivity restrictions.
Technical Implementation
While the source doesn't provide detailed technical specifications, a self-hosted ngrok alternative would typically include several key components:
- Tunnel Server: A central server that accepts connections from both the local client and external services
- Client Application: Software running on the developer's machine that forwards traffic to the tunnel server
- Connection Management: Logic to handle multiple simultaneous tunnels and route traffic correctly
- Security Layer: Encryption and authentication to protect the tunnel traffic
The Go implementation likely leverages the language's standard library for net/http and crypto/tls packages to handle the HTTP/S traffic securely. The ability to compile Go binaries for various platforms also makes the solution portable across different operating systems.
This approach contrasts with commercial tunneling services that may have:
- Geographic restrictions
- Usage limits or paid tiers
- Data collection policies
- Dependency on external infrastructure
By building their own solution, the developer maintains complete data sovereignty and operational control.
Impact and Implications
This project demonstrates a practical response to regional internet restrictions affecting software development. The ability to test webhooks from major platforms like Telegram and banking services like T-Bank is essential for developers building integrations with these platforms.
The solution addresses several pain points simultaneously:
- Reliability: No dependency on external services that may be blocked
- Performance: Direct tunneling without VPN overhead
- Cost: Free to operate once the initial development is complete
- Control: Full ownership of data and infrastructure
For developers in regions with similar restrictions, this approach provides a blueprint for creating customized development tools that work within local constraints. The 10-hour development time shows that such solutions don't require massive time investments, making them accessible to individual developers and small teams.
The project also highlights the growing trend of developers building their own tools when commercial solutions fail to meet specific regional or technical requirements. Rather than accepting limitations, developers are increasingly taking matters into their own hands to create solutions that fit their exact needs.



