Expose Your Localhost to the Internet Without Handing Over Your Data
You've got a webhook that only works against a public URL. Or a Postgres instance on your laptop that a teammate needs to hit. Or maybe you're debugging a DNS issue and need to tunnel UDP traffic—which is where most ngrok-style tools quietly leave you on your own. Outray is an open-source tunneling solution that exposes your local servers to the internet, and it handles HTTP, TCP, and UDP, not just the web stuff.
What It Does
Outray is a self-hostable tunneling service with a CLI client and a server component. You install the CLI, point it at a local port, and it gives you a public endpoint that forwards traffic back to your machine. HTTP tunnels support custom subdomains, TCP tunnels cover things like databases and game servers, and UDP tunnels handle DNS, VoIP, and TFTP traffic. You can also bring your own domain with automatic TLS.
Beyond the tunneling itself, there's a dashboard for monitoring traffic and managing tunnels, plus team support with organizations and role-based access. The stack is a monorepo: the CLI and tunnel server are separate apps, there's a web dashboard and API, background cron jobs, and a small internal check service for domain verification with Caddy. It runs on Node.js 20+, PostgreSQL, Redis, and Tiger Data (TimescaleDB)—the latter presumably for the traffic analytics the dashboard surfaces.
Why It's Cool
UDP tunneling is the rare part. Most hosted tunneling tools stop at HTTP, and some add raw TCP. UDP is genuinely underserved—if you're working on DNS, voice, or anything datagram-based, your options are thin. Outray treating UDP as a first-class tunnel type (one command: outray udp 53) is the kind of thing that makes you sit up.
It's open source under AGPL-3.0. For a category dominated by SaaS products where your traffic passes through someone else's infrastructure, having the full server implementation available matters. You can read the code, run it yourself, and know exactly what's happening to your packets.
Custom domains with automatic TLS. You're not locked into a random generated subdomain. Bring your own domain and Outray handles the certificates. There's even a dedicated internal-check app for domain verification with Caddy, which suggests the TLS story was designed deliberately rather than bolted on.
The dashboard and team features push it past "quick hack." Traffic monitoring, analytics, organizations, and role-based access aren't things you add for a weekend demo. They're the features you need when a tool graduates from personal use to something a team depends on. Whether you use Outray's hosted version or run your own, those pieces are in the codebase.
The monorepo structure is clean. Splitting the CLI, tunnel server, dashboard/API, cron, and landing site into separate apps under apps/ means you can understand and deploy the pieces independently. For anyone evaluating whether to self-host, that's a readable map of what you'd actually need to run.
How to Try It
The fastest path is the CLI:
- Install it globally:
npm install -g outray
- Create a tunnel against whatever's running locally:
# HTTP tunnel
outray http 3000
# TCP tunnel (e.g., for PostgreSQL)
outray tcp 5432
# UDP tunnel
outray udp 53
That's it for the client side. If you want to self-host the server, note the requirements: Node.js 20+, PostgreSQL, Redis, and Tiger Data (TimescaleDB). Full documentation lives at outray.dev/docs, and the source is at github.com/outray-tunnel/outray. Contributions are welcome—the repo has a CONTRIBUTING.md with guidelines.
Final Thoughts
Outray is best suited to developers who've outgrown a quick hosted tunnel and either need UDP support, want to own their infrastructure, or work somewhere that won't let traffic route through a third-party SaaS. The self-hosting requirements (Postgres, Redis, TimescaleDB) mean it's not a trivial docker run—this is a real service, and you should expect to run it like one. But if you need what it offers—particularly that UDP support and the AGPL license—the tradeoff is reasonable. It's a solid foundation to build on, and the open-source nature means you can shape it to fit.