A lot of people seem to be a bit confused about the point of ngrok, why it's useful, how much it costs, etc. Let me try and help out. :)<p>For me, the killer feature for ngrok is testing/developing webhooks. You install ngrok in your dev environment, start it up, then point the stripe/slack/whatever webhook your working on at the generated URL.<p>ngrok will 1) proxy that request through to your dev environment 2) log the request 3) log the response 4) let you replay previous requests. It could not be more helpful for developing webhook handlers, and has literally saved me <i>hours</i> of work in the last couple of months alone.<p>Finally, the free tier is all you need for that; it gives you a unique ngrok subdomain which changes every time you start the tunnel and some (generous) usage caps, both of which are fine for this usage.<p>People pointing out the potential security issues are correct, but that's an argument to be careful and think about what you're doing. Besides, what's your proposed alternative? Because most of the obvious ones have equally troubling issues.
Makes me sad to see all the negativeness towards this service, which clearly works and serves a need some people have.<p>Yes, there are alternatives, but I hate when people jump to dismiss service like this, without fully considering what issues the proposed alternatives have. Obviously it is ok to mention the alternative options, but that can be made in constructive way.<p>Let's celebrate the fact that somebody has built and released something and even seems to have a business model to support it. Instead of complaining about 5-20 bucks per month, try to figure out how you could channel some of your corporate multimillion IT budget to this fellow hacker. Wouldn't it be great if building and running this kind of small solutions would be actually a viable way of making living?
Literally the most terrifying service for any security-minded operations-focused person. Wonderful tool, interesting and useful in a dizzying array of aspects - but dear lord, I've had some real horrific moments when users told me that they installed it to allow access to their (private) repos for testing.
Happy paying ngrok user here.<p>Love it for developing anything using webhooks and also hybrid mobile apps (I have my app pull the JS from the Dev box I'm working on via ngrok without having to rebuild the app or deploy the code anywhere).<p>It significantly speeds up my workflow!
Nice tool, but without committing for annual billing (which I don't intend to do, not for the first year of usage) it's $10 a month. My internet connection, my mobile plan, my Photoshop & Lightroom subscription, a huge collection of music (Spotify), 3K~5K movies and TV shows (Netflix), etc., all cost approximately the same. I mean, sure, $120 a year is pocket change for somebody using Ngrok professionally, but that's still super disproportional, compared to, say, monster of a piece of software like Photoshop. I'd probably subscribe for $2, but otherwise, IMO, frp [0] on a $3 VPS [1] is better value, with the extra benefit of being FOSS and having zero limits.<p>[0] <a href="https://github.com/fatedier/frp" rel="nofollow">https://github.com/fatedier/frp</a><p>[1] <a href="https://www.scaleway.com/pricing" rel="nofollow">https://www.scaleway.com/pricing</a>
PSA: if you want to provide remote access to a local service, but don't want the potentially-terrifying security implications, use Tor Authenticated Onion Services (AKA "HiddenServiceAuthorizeClient" [0]).<p>On a machine on the LAN, install Tor and set up an authenticated onion service, and point it to the desired endpoint. In order to access the service, clients need a manually-loaded encryption key (and Tor, of course). Without this key, nobody will be able even to <i>discover</i> your endpoint, let alone actually connect to it.<p>[0]: <a href="https://gitweb.torproject.org/torspec.git/tree/rend-spec.txt" rel="nofollow">https://gitweb.torproject.org/torspec.git/tree/rend-spec.txt</a>
I prefer the implementation of <a href="http://localhost.run" rel="nofollow">http://localhost.run</a><p>To me it seems a lot cleaner, simply use SSH rather than download any app
A fantastic open-source javascript alternative is localtunnel (<a href="https://github.com/localtunnel/localtunnel" rel="nofollow">https://github.com/localtunnel/localtunnel</a>). I've used this more often than ngrok after ngrok became a paid service.
Their 1.x is open source: <a href="https://github.com/inconshreveable/ngrok" rel="nofollow">https://github.com/inconshreveable/ngrok</a><p>This is a similar open source alternative:
<a href="https://github.com/fatedier/frp" rel="nofollow">https://github.com/fatedier/frp</a><p>Both written in Go.
I see some people arguing that "you should use a dev/staging environment with a public IP" instead of having ngrok tunneling traffic directly to your local dev box.<p>When you're editing HTML/CSS, you don't have to run a deploy script before checking how your markup renders. Ngrok gives people writing web services the same convenience when dealing with requests from a 3rd party on the Net.<p>It is the equivalent of saving your HTML/CSS source files and instantly seeing the changes when you reload your browser.<p>I just wrote a little proof-of-concept Alexa app that crawls HumbleBundle ('Bundled Goods', very much beta quality at the moment) and ngrok was invaluable for developing it quickly.
Ngrok is the coolest tool I use on a pretty consistent basis. Developing webhooks locally is usually what I use it for, and the web interface replay capability is amazing. The creator gave a great talk on why he built it and how it progressed over the years: <a href="https://www.youtube.com/watch?v=F_xNOVY96Ng" rel="nofollow">https://www.youtube.com/watch?v=F_xNOVY96Ng</a>
I've used ngrok for a while now, and I love it. I used it just last night to test out some webrtc stuff I was doing. Was able to get friends from around the world on video chat served from localhost within seconds.<p>It's also super handy when building webhooks, you can use the unique URL to test out apis without having to deploy anything. I can't rave about it enough.
The title of this submission makes it sound like a selling-fridges-to-eskimos scam product - you need to read quite a bit to find out what's it actually about and that it solves (or simplifies) an actual use-case.<p>I think a better comparision is with DynDNS services: It sets up a public host connected to your own machine - but unlike DynDNS, the host doesn't point to your machine's IP directly. Instead, requests are routed through a proxy/tunnel, so your machine can be kept behind a firewall and is <i>only</i> available through the public host.<p>(I figure, the proxy allows for some more neat tricks, such as restricting ports/urls/etc or holding requests open while your machine changes IPs.)
For a part-time programmer Mechanical Engineer, it is such a gratifying task to use ngrok. I first came across it a couple of years back. Great Project, great development, open sourced and well written in go. <a href="https://github.com/inconshreveable/ngrok/tree/master/src/ngrok" rel="nofollow">https://github.com/inconshreveable/ngrok/tree/master/src/ngr...</a><p>It takes two seconds to deploy an application in the evening from my kitchen table, check it also on my mobile and the next day access it from work also and show it to co-workers.<p>Call it "usability" for Engineers!
I've been on the free tier for a while and have been meaning to upgrade to show support for such a great service. Seeing this post this morning reminded me. Upgraded for the year!
It's possible to roll your own ngrok clone via SSH tunnels, a publicly-available server somewhere, and autossh. This is basically ssh-tunnel-as-a-service.
Never used it, what's the difference between ngrok and using DMZ with port-forwarding? are they the same thing? What's the technical advantage other than it is easy to use? I can port-forwarding easily on my router to expose whatever port to the public, why do I need ngrok?<p>With a DDNS + Port-forwarding you can easily have what Ngrok provides? or am I missing something?
3 important questions:<p>1) My university blocks LogMeInHamachi which is the main tool i've tried to get around hosting behind a NAT. Will this likely be blocked too, or is it not possible to tell without trying<p>2) Is there any costs associated with this. Do i ever need to pay<p>3) Does the person connecting to my server also require a special client or does this appear to them as any standard connection would.
I really like ngrok. I use it a lot. I just really dislike how the TCP tunnels work. With HTTP you get a unique subdomain which makes it harder for people to just scan and connect. With TCP, it's always 0.tcp.ngrok.io, so you can just scan that domain and connect to anything that's open.
I have been using this for quite a while and it's really useful.
Even though I have VPSs available, where I could make a SSH tunnel, this is simply way more convenient, so I end up using ngrok a lot for development
I'm a happy paid user. If I had one request, it is for a different pricing and better management for groups of users.<p>People like me would like to buy 5-10 licenses and manage them centrally.<p>Define shared endpoints and individual endpoints,etc
long time ngrok user here. used several times to show my prototypes to the others. It's simpler than deploying on heroku (or anywhere actually), and is without restrictions ofc because you use your own hw.
Use a hidden service! I manage many intranet servers over tor. You have no problems with nat or firewalls and it is free!<p>Ok it is slower, but for many things like ssh it's great...
I've been using this for web server testing since 2012. It's probably the paid tool that's given me the most bang for my buck in terms of hours saved
docker run -ti -e 'PROXY_TO_ADDR=<a href="http://www.example.com/'" rel="nofollow">http://www.example.com/'</a> jonthepirate/ngrok:latest<p>^ that expression will expose a local docker powered web server, assuming www.example.com is the local dns name on your docker network. Enjoy.