Oleg Koretsky Oleg Koretsky

Cloudflare Tunnel for Umbrel

Cloudflare has a service called Tunnels – a lightweight VPN-like daemon, cloudflared, once installed on a machine creates outbound-only connections to their global network, making possible serving content accessible from the Internet without having a dedicated (white) IP address.

I wanted to use Tunnel to make few apps on my Umbrel home server accessible from the Internet. The tunneling daemon can only be set up from a terminal, which is totally fine, but I had an idea that a human-friendly user interface for it could be nice and useful for me and other people. I found only one project called cloudflared-web providing a simple web UI, but I strongly disliked it loading the daemon as an NPM dependency – as this software may handle sensitive unencrypted data, I wanted to only run the official binaries. Having no alternative implementations, I've made a web UI myself. The app was styled according to Umbrel's design system, hence, in my humble opinion, it nicely fits the Umbrel ecosystem.

Screenshots Screenshots from Umbrel app store

App in the Umbrel store Project on GitHub

From a technical perspective, the app is a Docker Compose deployment with two containers:

  1. Web UI controlling the tunnel – a SvelteKit app with backend and frontend
  2. Connector – the official cloudflared binary combined with a simple control loop bash script

If you like this app and want to support the project, you can make a donation with your preferred payment method. I am very grateful to everyone supporting my work ♥