Hacker News new | ask | show | jobs
Expose – A fully open-source ngrok alternative written in PHP (github.com)
98 points by mpociot 2188 days ago
8 comments

For those like me that didn't know what ngrok is, "ngrok exposes local servers behind NATs and firewalls to the public internet over secure tunnels"[1]. So it allows you to easily expose internal services publicly, letting you (for example) show someone outside your network a website in your local development environment, without having to deploy it externally into some sort of live environment.

Also, not sure why so many people seem to take "... written in PHP" as a gauntlet slap to their own face, instead of some additional technical information.

If you have nothing to add to the conversation other than witty snark about PHP, maybe your time would be better spent writing a competing open source product in a language of your choice, giving it away for free, and then letting users compare their pros and cons?

1. https://ngrok.com/product

The whole "PHP bad" shit is really stupid and I bet you 99% of people who make those witty snarks would not be able to build something like this
OP has been putting out a series of useful tools lately [1] and been very transparent about his process on Twitter [2].

Seeing this thread derail into a discussion about PHP is pretty annoying. It seems to happen to anything PHP-related here. Do that all day long please, if someone comes here saying PHP is the best language... but he created something useful and open sourced it - that deserves more than toxic bike shedding about your favorite toys.

[1] https://beyondco.de/software

[2] https://twitter.com/marcelpociot

Seriously, does PHP suitable for this?

It can be handled using a single go binary using pgrok which comes less the source code size and not to mention without any dependencies on almost all platforms!

This requires unnecessary things to bundle and too complex for some simple stuff. Mileage may vary though.

But just my views.

My personal take on this was that it's for a lot of people a lot simpler to extend Expose, as it's written in PHP. It also uses ReactPHP as a foundation - which is battle-tested for many years.
Looks like that is a reference to this:

https://github.com/jerson/pgrok

...which does look useful indeed.

Thanks! It even has a docker container for easy deployment.
Well it's working and a lot of people already have a PHP server they can use to host it.

I don't even know how to run a Go server.

You don't need to, comes as a compiled binary. That's one of the beauties of Go
What comes as a compiled binary?
PHP is also a compiled binary.
You'd be surprised how PHP has evolved in the last couple of years. With frameworks like ReactPHP you can really code anything you want in PHP.
After reading the architecture post [1] referenced in the comment by mpociot [2], I’d say PHP is more “suitable” for the server-side if you choose to self-host the Open Source code rather than use the service.

These tunneling services use a client-server architecture with the server-side running on a public IP address. A static binary written in Go, like pgrok, is ideal for the client-side. On the server-side, you want an app server that is both common and can dynamically load a module. A dedicated Go server makes sense if you are building a service but not if you want to add functionality to an existing app server with a public domain name.

[1] https://pociot.dev/28-introducing-expose-an-easy-to-use-tunn...

[2] https://news.ycombinator.com/item?id=23554459

Except the PHP version only works with HTTP, Ngrok works with any TCP protocol which is much more powerful, hence why you don't want the weird PHP model with it modules and HTTP server.
Is there a separate Go pgrok, or was that a typo?

The reason for asking is I'd like to find a self-hosted ngrok solution for development.

I can’t get enough of the great stuff mpociot keeps putting out!

Going to try Expose soon, really excited by what it brings to the world of PHP without having to support a new stack.

They had me in the first half, not gonna lie
Would you mind explaining the architecture? Does expose.dev live on AWS somewhere?
I have an in depth write up about the internals at my personal blog https://pociot.dev/28-introducing-expose-an-easy-to-use-tunn...
is there any docker for this?
No sorry, not yet.
you lost me at "written in PHP"
Does everyone at Zapier share a similiar opinion?

Zapier is built on Python, Django, React, Node.js, and AWS

Were you aware of the tradeoffs you made with that stack. Zapier has many technical issues: https://ca.trustpilot.com/review/zapier.com

If you went with a different stack I don't think you would have half of the issues your customers are reporting.

Very mature of you, bravo!