Recent submissions

Comment · 6 months ago
It does not work, it says Claude Opus 4 not 4.7
Comment · 11 months ago
Hey, I updated this to be a tunnl.gg domain, thanks.
Comment · 11 months ago
There is a maximum time limit for connections right now which is 24hr or 30min of inactivity.
Comment · 11 months ago
Yes, thats exactly how it works for the multiple subdomains.
Comment · 11 months ago
Agreed and even devs who have the money, most of the times don't have the time.
Comment · 11 months ago
It's not my target audience. Also as a dev I hate spending more than a couple of seconds to do this. This service exists mainly to scratch my own itch.
Comment · 11 months ago
Its around 700MB today so far.
Comment · 11 months ago
I can also deny, if I don't consider the case valid or shutdown the hosted service if I want to. I plan to open source it anyway within the next days.
Comment · 11 months ago
I can cover hundreds of PB of bandwidth per month if needed without paying a fortune.
Comment · 11 months ago
On the VPS we use: - 80 (standard http) - 443 (standard https) - 22 (obv for standard ssh) - 9090 (metrics / internal so I can have an idea of the generic usage like reqs/s and active connections)

Client-Side: The -R 80:localhost:8080 Explained The 80 in -R 80:localhost:8080 is not a real port on the server. It's a virtual bind port that tells the SSH client what port to "pretend" it's listening on.

No port conflicts - The server doesn't actually bind to port 80 per tunnel. Each tunnel gets an internal listener on 127.0.0.1:random (ephemeral port). The 80 is just metadata passed in the SSH forwarded-tcpip channel. All public traffic comes through single port 443 (HTTPS), routed by subdomain.

So What Ports Are "Available" to Users?

Any port - because it doesn't matter! Users can specify any port in -R: ssh -t -R 80:localhost:3000 proxy.tunnl.gg # Works ssh -t -R 8080:localhost:3000 proxy.tunnl.gg # Also works ssh -t -R 3000:localhost:3000 proxy.tunnl.gg # Also works ssh -t -R 1:localhost:3000 proxy.tunnl.gg # Even this works!

The number is just passed to the SSH client so it knows which forwarded-tcpip requests to accept. The actual routing is done by subdomain, not port.

Why Use 80 Convention?

It's just convention - many SSH clients expect port 80 for HTTP forwarding. But functionally, any number works because:

- Server extracts BindPort from the SSH request - Stores it in the tunnel struct - Sends it back in forwarded-tcpip channel payload - Client matches on this to forward to correct local port - The "magic" is that all 1000 possible tunnels share the same public ports (22, 80, 443) and are differentiated by subdomain.

Comment · 11 months ago
For the foreseeable future and unless there is massive abuse, which I am trying to contain, it will remain free.
Comment · 11 months ago
I updated the terms, thanks for the heads up.
Comment · 11 months ago
Thanks, but I don't have such plans, lol.
Comment · 11 months ago
I am not rich and I don't need to be to keep this service up and running at least for the near future.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton