A Survey of the Localhost Proxying Landscape [feedly]06 Aug 2013
In late 2009, soon after coining the term 'webhooks' and starting to evangelize them to the world, Jeff Lindsay ran into a problem.
I had another idea while thinking about webhooks. It would be great if I could expose a local web server to the Internet with a friendly URL. It should just be a simple command. There would have to be a server, but there could just be a public server that you didn't even have to think about.
Jeff's idea grew into localtunnel, a friendly wrapper around an SSH reverse tunnel that makes your localhost available via a public URL. The first time I used it, it felt like magic. It completely changed the nature of working with webhooks. I was, well, hooked.
What was novel at the time has grown into a little bit of a cottage industry amongst API tool makers. Many similar services have cropped up, specializing in different versions of the same problem. Here's an overview of all the services I know of.
The original. The initial SSH-based version with the Ruby client eventually ran into some issues. Ruby and SSH are also a bit precocious on Windows. Jeff released a beta of a new version 2 with a Python client and a new wire format. If you're using localtunnel now, that's the route you'll want to go. localtunnel is free and community supported.
Forward (formerly Showoff)
Forward was another early entrant, focusing more on allowing developers to show off web sites they were working on from their local machine. In early 2011 they rebranded from Showoff to Forward. They offer a few different pricing plans for various needs.
Another Ruby based solution, ProxyLocal was started in late 2010 and was last updated a year ago, though the web service seems to be operating still. It distinguishes itself from localtunnel by letting you choose the subdomain for your public URL. The service is free.
PageKite is another commercial service started around the same time independently of the others (this comment suggests localtunnel predated it by only a few months). PageKite is Python-based, offers end-to-end encryption and can tunnel protocols other than HTTP. Here's a post comparing it to Showoff. They offer subscriptions, pay-what-you-want and a free plan for OSS devs.
Ultrahook is a new entrant to the scene, focusing on webhook debugging. Created by Vinay Sahni from SupportFu, Ultrahook consists of a client distributed via Ruby gem. The service is free, but the source is not available. By signing up for a free account you'll receive an API key that "gives you a exclusive namespace. All endpoints you create will be subdomains under your own namespace. This ensures that you can always reconnect to the same endpoints at some point in the future."
The latest entrant is ngrok from Alan Shreve (formerly of Twilio). ngrok is written in Go (both client and server) and has, by far, the easiest client installation options with single-file executables for Windows, OS X and Linux. No more fighting with Ruby gems Windows users! In additional ngrok adds an introspection layer so you can see the traffic that was passed back and forth over the tunnel. ngrok supports SSL, password-protected tunnels, reserved subdomains and support for TCP/UDP tunneling. It's free and the source is on GitHub.
My company Runscope also offers a version of localtunnel called Passageway. We've added tight integration with the Runscope API traffic inspector, end-to-end encryption and permanent URLs but otherwise, it's just localtunnel (a project we're proud to sponsor). Passageway is currently in public preview and included with any Starter or Team plan.
If you're just getting started, I highly recommend ngrok (yes, even over our own product). Client set up is the easiest and it offers the most features of any of the options and its completely free. Go tell Alan how awesome he is on Twitter to thank him for such a great service.
Did I miss any? If so, let me know in the comments.
Photo courtesy of Tina Carlson