Hacker News new | past | comments | ask | show | jobs | submit login
Frp: A fast reverse proxy to help you expose a local server to the internet (github.com/fatedier)
134 points by fatedier on Aug 12, 2016 | hide | past | favorite | 29 comments



I use https://ngrok.com/, it masks service ports and gives them unique domain names.


Worth noting that ngrok is a non-free (trial-ware) service (all data is proxied through ngrok servers), whereas frp is self-hosted.


I run my own version of ngrok: https://github.com/inconshreveable/ngrok


Although ngrok is clearly the leader at the moment, I've used Localtunnel.me in the past. There was a HN discussion about it (including some even more niche alternatives) here: https://news.ycombinator.com/item?id=7585056


It also has an incredibly useful debug console for HTTP(S) which allows you to inspect requests as they come in, its absolutely priceless when working on webhooks.


Why is that useful? Doesn't your web app or web framework already log requests?


Most of the time request bodies do not get logged, because they often contain sensitive information.

The logging in ngrok also comes with a "replay request" button, which is very nice when you're testing webhooks that are a pain to fire.


It logs the headers and request body along with the response for every single route. This means if the server sending you a webhook changes routes, or sends some extra content or does something unexpected, you have immediate visibility into it and can replay the request with a single click.

Pretty nifty.


Is this something like ISA Server does? I've been looking for something like that without the price tag and this seems it!


Yes. Well a part of what ISA does/did. As you probably already know ISA is a bit more than just a reverse proxy.


I use `ssh -R` to my VPS with public IP. It's possible to forward any protocol with this option, HTTP, RDP, etc.


Definitely. You need gateway ports turning on for an Ubuntu server, but it's magic once you've got it set up:

http://askubuntu.com/a/50075/449


Yes. I don't understand what the linked project does that `ssh -R` and/or `ssh -L` can't do. And it does not seem easier to use either.


Well, according to the README it allows to forward one http(s) port to multiple different local servers depending on requested host name. Yes, this is also possible using multiple ssh -R in combination with nginx or similar, but I guess the point of the project is to make the process easier.


Looks like a good project, but the name might cause a little confusion, as FRP is a style of programming [1] with not-insignificant exposure [2].

[1] https://en.wikipedia.org/wiki/Functional_reactive_programmin...

[2] https://www.google.com/search?q=hacker+news+frp


There is a nice service called weaved.com which allows you to ssh to a machine (in my case raspberry Pi) without public IP address. I think it also supports HTTP.


Weaved looks more like a layer 2 thing, while ngrok is layer 3? I use ZeroTier, which has been discussed on HN previously: https://news.ycombinator.com/item?id=11699122


Well, this will confuse the meaning of FRP even more. Poor Conal...


I am using DuckDNS with port forwarding to run a demo from machine at my home http://beta.raspchat.com/ I used to use ngrok but it goes apeshit if somebody uploads a huge file as it took too much memory and crashed the ngrok process frequently. Only reliable option is ssh -nNT -R and tunnel to a really cheap VPS.


Looks like most of the features can be covered by nginx+iptables, so it will be great if authors will state what can't be done at all or in some specific case.


I'd love to hear how to use nginx+iptables to traverse a NAT.


If I understand the examples on Ngroks and Frps sites correctly there's nothing on there that really can't be done with Nginx. But especially with Ngrok I think the main benefit is convenience, since you don't need to configure port forwarding on your router or add DynDNS afaik.


It's probably the ease of use?!


Doesn't look like it has encryption.

I prefer using ssh or openvpn for a more permanent installation.


Very useful.


Just want to point out how easy it is to do this using SSH tunnels.

ssh -nNT -R :<server port>:localhost:<local port> user@domain


The examples given there [1] seem to be only for LAN.

Any experts here please explain how to use it to expose a local site to the Internet from a NAT'ed machine running behind a proxy that requires username:password auth to connect to Internet and there is a firewall that prevents SSH traffic from/to the Internet?

Accept my apologies if this comes as a complete noob question and please give me a clarification if I have missed something obvious over there.

[1] https://github.com/fatedier/frp#example-usage


Check out https://www.trustedpassage.com (private beta right now). It's like ngrok but with security as the primary focus.

Disclaimer: I am one of the co-founders.


I've been using tor, then onion.to for non tor devices.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: