early development — waitlist open

Public URLs for local Docker apps.

RunDock gives your local services a public HTTPS URL through one command — test webhooks, share previews, and demo work-in-progress without deploying or opening router ports.

Built for indie developers shipping projects on VPS.

bright-fox — open
$ tunnel open https://bright-fox.rundock.dev localhost:3000 $

no config · no open ports · valid TLS

The problem

localhost is a dead end for the outside world.

Your app runs fine on your machine — until something outside your machine needs to reach it.

  • Webhooks are hard to test locally

    Stripe, Telegram, and GitHub need a public endpoint to call. localhost:3000 isn't one, so you end up guessing instead of debugging.

  • localhost can't receive external callbacks

    OAuth redirects, payment confirmations, delivery receipts — they all dead-end before they ever reach your machine.

  • Sharing work-in-progress requires deployment

    A client wants to see today's progress, and suddenly you're spending an hour on a staging deploy for a five-minute look.

  • Compose services are annoying to expose temporarily

    The service runs happily on the Docker network. Showing it to anyone outside that network is port-mapping homework.

  • Opening router or firewall ports is unsafe

    Port forwarding exposes your whole machine, needs router access you might not have, and breaks the moment your network changes.

With RunDock

Expose local Docker apps in seconds.

Not another complex cloud platform — just simple tunnels for real development workflows.

  • Start a tunnel with one command

    rundock tunnel 3000 — nothing to configure, nothing to deploy.

  • Get a public HTTPS URL

    TLS terminates at the gateway with a valid certificate. The URL is shareable the second it prints.

  • Inspect incoming requests

    Headers, body, and timing for every webhook that arrives — see exactly what the provider sent.

  • Replay failed requests

    Fix your handler, hit replay. No need to trigger the payment or re-send the bot message.

  • Protect tunnels with passwords

    Previews for your client — not for the whole internet.

  • Temporary or reserved subdomains

    Throwaway URLs by default. Stable names when a webhook config needs to survive restarts.

How it works

One route, plotted end to end.

A request from the internet follows a single charted course down to your machine — and never the other way around.

The agent dials out and keeps one encrypted connection open. Nothing on your machine listens for inbound traffic, no router ports open, no firewall edits — close the terminal and the URL is gone.

Features

Everything a tunnel should do. Nothing it shouldn't.

Instant HTTPS tunnels

A public URL with a valid certificate, seconds after the command.

Webhook testing

A stable public endpoint for provider callbacks, pointed at your laptop.

Request inspector

Headers, bodies, and timing for every request that comes through.

Replay requests

Re-send any captured request after you fix the handler.

Docker Compose aware

Expose a service by name — no port-mapping arithmetic.

Password-protected tunnels

Basic auth in front of any tunnel, set with one flag.

Reserved subdomains

Keep bright-fox, or pick a name that sticks.

Custom domainslater

Bring api.yourapp.com when v1.0 lands.

CLI-first workflow

Everything from the terminal. No dashboard required.

Built for VPS developers

Pairs with the server, Compose stack, and Traefik you already run.

Use cases

The unglamorous problems it actually solves.

Stripe Test Stripe webhooks locally

Paste your tunnel URL into the Stripe dashboard and catch checkout.session.completed on your own machine, with the real payload.

Telegram Receive Telegram bot callbacks

Point setWebhook at your tunnel and iterate on the handler live — no redeploy between attempts.

Client demo Share a local app with a client

Send a link instead of shipping a deploy. Add --auth so only the client sees it.

Mobile Test mobile apps against local APIs

Your phone on LTE talks to the API on your laptop over plain HTTPS — no simulator networking tricks.

Compose Expose a Docker Compose service

rundock expose web puts one service online. The rest of the stack stays private on the Docker network.

Staging Create temporary staging previews

A URL that lives exactly as long as the demo — then disappears without cleanup.

The CLI

Four commands cover most days.

The terminal is the interface. The inspector is there when you need to see what actually arrived.

$rundock tunnel 3000
https://bright-fox.rundock.dev → localhost:3000
$rundock tunnel --name api --port 8080
https://api.rundock.dev → localhost:8080
$rundock expose web
# reads docker-compose.yml, tunnels the "web" service
$rundock tunnel 3000 --auth
# same tunnel, behind a password prompt
requests — bright-fox.rundock.dev concept · v0.2
  • POST/webhooks/stripe 200142 ms REPLAY
  • POST/webhooks/stripe 50089 ms REPLAY
  • POST/bot/callback 20061 ms REPLAY
  • GET/health 2003 ms REPLAY
  • POST/webhooks/stripe 200118 ms REPLAY

Where it fits

A narrow tool, on purpose.

ngrok is powerful and broad. Cloudflare Tunnel is a great fit when your infrastructure already lives on Cloudflare. RunDock aims narrower: simple tunnels for Docker apps, webhook testing, and indie-dev VPS workflows — and nothing beyond that.

Feature Generic tunnel tools RunDock
Local HTTP tunnels Standard One command
Webhook debugging Varies by tool and plan Inspector + replay, built in
Docker Compose workflow Manual port mapping rundock expose <service>
Request replay Sometimes available Core feature
Indie VPS workflow Not the focus The target user
Simple CLI-first setup Config files and dashboards Zero-config default

Roadmap

Charted course, honest waypoints.

RunDock is in early development. This is the plan as it stands — waypoints may shift as the water gets real.

  1. v0.1 building now
    HTTP tunnelsrandom subdomainsrequest logs
  2. v0.2
    dashboardrequest replaypassword protection
  3. v0.3
    Docker Compose autodetectreserved subdomains
  4. v1.0
    custom domainsteamspaid plansself-hosted gateway

Waitlist

Start testing webhooks without deploying.

Leave an email and we'll write once there's something to run.

RunDock is currently in early development.