DevPanel
Documentation
Core Concepts

Domains & SSL

DevPanel uses Cloudflare Tunnels to expose services to the internet — no inbound ports, no static IP required. SSL is handled automatically by Cloudflare.

Quick Tunnel

Get a free temporary *.trycloudflare.com URL with one click. No Cloudflare account needed. Great for testing.

Custom Domain

Map your own domain (e.g. app.example.com) via a persistent Cloudflare Tunnel. Requires Cloudflare account + API credentials.

Using a Quick Tunnel

Quick tunnels are zero-config — no Cloudflare account required. They are ideal for sharing a service temporarily or verifying connectivity.

  1. 1Open a service and go to the Domains tab.
  2. 2Make sure the service has a host port configured (set it in the Overview tab).
  3. 3Click Start Tunnel — DevPanel starts a cloudflared process and returns a *.trycloudflare.com URL.
  4. 4The URL is valid while the tunnel is running. Click Stop Tunnel to tear it down.

Note: Quick tunnel URLs change every time you start the tunnel. For a permanent address, use a custom domain.

Prerequisites for custom domains

  • A domain managed in Cloudflare
  • A Cloudflare API token with DNS + Tunnel edit permissions
  • Your Cloudflare Account ID
  • A Cloudflare Tunnel ID (created in Zero Trust → Networks → Tunnels)

How to get a Cloudflare API Token

DevPanel needs an API token to manage DNS records and tunnel ingress rules on your behalf.

  1. 1

    Log in to Cloudflare

    Go to dash.cloudflare.com and sign in.

  2. 2

    Go to API Tokens

    Click your profile avatar (top right) → My ProfileAPI Tokens.

  3. 3

    Create a Custom Token

    Click Create Token → scroll to the bottom → Get started next to Create Custom Token.

  4. 4

    Add the following permissions

    ScopeResourceAccess
    AccountAccount SettingsRead
    AccountCloudflare TunnelEdit
    ZoneZoneRead
    ZoneDNSEdit
  5. 5

    Copy the token immediately

    Click Continue to summaryCreate Token. Cloudflare shows the token only once — copy it now.

How to find your Account ID

  1. 1Log in to dash.cloudflare.com.
  2. 2Click on any domain in your account.
  3. 3In the right-hand sidebar, scroll down to the API section — your Account ID is listed there.

How to create a Cloudflare Tunnel

The tunnel is a persistent outbound connection from your server to Cloudflare — no open inbound ports required.

  1. 1

    Log in to Cloudflare

    Go to dash.cloudflare.com and sign in.

  2. 2

    Go to Zero Trust

    In the left sidebar click Zero Trust. Select your account if prompted.

  3. 3

    Navigate to Networks → Tunnels

    In the Zero Trust sidebar, expand Networks and click Tunnels.

  4. 4

    Click "Create a Tunnel"

    Choose Cloudflared as the connector type and click Next.

  5. 5

    Name your tunnel and save

    Enter a name (e.g. devpanel-prod) and click Save tunnel.

  6. 6

    Copy the Tunnel ID

    After saving, the tunnel detail page shows a Tunnel ID (UUID format). Copy it — you will need it in DevPanel settings.

Configure Cloudflare in DevPanel

  1. 1Open the DevPanel dashboard and go to Settings → Cloudflare.
  2. 2Enter your API Token, Account ID, and Tunnel ID.
  3. 3Click Save — DevPanel validates the credentials immediately.

Assigning a custom domain to a service

  1. 1Open the service and go to the Overview tab. Set a host port (e.g. 8080) — the tunnel routes traffic to this port.
  2. 2Go to the Domains tab.
  3. 3Click Add Domain, enter a hostname (e.g. app.example.com), and confirm.
  4. 4DevPanel updates the tunnel ingress config and creates a proxied CNAME DNS record pointing to your tunnel.
  5. 5The domain is live within seconds. Cloudflare handles SSL automatically — no Let's Encrypt or Certbot needed.

How it works

Cloudflare Tunnel (cloudflared)

The cloudflared daemon runs on your server and maintains an outbound connection to Cloudflare's edge. No inbound ports 80 or 443 need to be open.

Ingress routing

When you add a domain, DevPanel calls the Cloudflare API to append an ingress rule: incoming requests for that hostname are forwarded to http://localhost:<hostPort> on your server.

DNS (CNAME, not A record)

DevPanel creates a proxied CNAME record pointing your hostname at {tunnelId}.cfargotunnel.com. Traffic reaches Cloudflare first, then travels through the tunnel to your server.

SSL / TLS

Because the DNS record is Cloudflare-proxied, TLS is terminated at Cloudflare's edge. There is no Certbot or Let's Encrypt involved — HTTPS just works automatically.

Quick tunnels

For testing without a custom domain, DevPanel can start a temporary *.trycloudflare.com tunnel per service. These are free, ephemeral, and require no Cloudflare account.