Self-Hosting Made Simple: A Throwback to the Heroku Days, Without Deployments

10:53 PM August 23 2025 self-hosting

I really miss the era of git push herkou master and getting my apps online without having to think about extra costs or much else.

But thanks to cloudflared tunnels, I think we have an even easier solution for quickly iterating on ideas and making them available online.

This is a quick overview, but I also wrote a step-by-step guide if you want a more visual and straightforward alternative to the docs. You can find that here

What are cloudflared tunnels

Cloudflared tunnels let you expose your local app (like localhost:3000) to the internet through Cloudflare without opening ports on your router.

If you ever used ngrok before, is like that but cooler.

Getting started

To get started you can just follow this documentation, which basically requires you to:

  • Have your domain DNS managed by cloudflare
  • Log in to zero trust and enable it (requires payment information but is free)
  • Install cloudflared cli on your end.

You can manage these tunnels in 3 ways: Remotely via Zero Trust dashboard, remotely via their API, or locally-managed with the configuration stored in your local environment.

For simplicity I am using the remotely-managed configuration using their dashboard. I found it more straightforward, and tunnels are running via the daemon process without me running any more CLI commands manually.

For a step-by-step guide on how I have that in my environment click here.

How am I using it

Every time I want to deploy something, I just start the server process with a custom port, and then I add that as a public hostname in my cloudflare tunnel. In Rails, I just need to whitelist the subdomain URL in the config.hosts for the environment that I am working on, but not much else.