aerni/cloudflared

A Laravel package to create and manage Cloudflare Tunnels for local development

Maintainers

Package info

github.com/aerni/laravel-cloudflared

pkg:composer/aerni/cloudflared

Statistics

Installs: 4 868

Dependents: 0

Suggesters: 0

Stars: 86

Open Issues: 1

v2.1.1 2026-04-21 18:42 UTC

This package is auto-updated.

Last update: 2026-04-21 18:44:37 UTC


README

A simple package to create and manage Cloudflare Tunnels for your Laravel projects. Cloudflare Tunnels give you instant public access to your local development environment, similar to Expose or ngrok, but powered by Cloudflare. Perfect for testing webhooks and sharing work-in-progress.

Pair it with Cloudflared for Vite to get seamless tunneled access to both your Laravel app and Vite's dev server, making it effortless to debug your frontend on real devices like your iPhone.

Prerequisites

  1. Install cloudflared
  2. Run cloudflared tunnel login to authenticate the desired domain
  3. Install Laravel Herd

Installation

Install the package using Composer:

composer require aerni/cloudflared

Keep APP_URL set to your local Herd URL (e.g. http://myapp.test). Do not set it to the public tunnel hostname. That would make cloudflared forward traffic to itself. While the tunnel is running, the package automatically rewrites URL generation to the public Cloudflare URL in web requests, queue workers, and scheduled commands. You never need to edit .env whether the tunnel is active or not.

Basic Usage

Creating a tunnel

Create a tunnel for your project with a single command. This will create a Cloudflare tunnel, configure DNS records, set up a Herd link, and save the configuration to .cloudflared.yaml in your project root.

php artisan cloudflared:install

Note: Run this command again to modify the existing installation. Change the subdomain, create or repair DNS records, or delete and recreate the tunnel.

Running the tunnel

Start the tunnel to make your local site publicly accessible.

php artisan cloudflared:run

Deleting the tunnel

Remove the tunnel, DNS records, and configuration when you no longer need it.

php artisan cloudflared:uninstall

Good to know

Trusted proxies

Signed URL validation and HTTPS detection through the tunnel rely on Laravel honoring X-Forwarded-Proto from Cloudflare. This is the same TrustProxies setup you'd use behind any TLS-terminating proxy. Most production apps already have this configured.

Long-running queue workers

The URL rewrite is captured once when the worker boots. Restart long-running workers after starting or stopping the tunnel so new URLs pick up the change.

Config caching

Make sure your config isn't cached while the tunnel is up. The rewrite runs during bootstrap, so the tunnel URL would get serialized into the cached config and pin there. Clear your config cache if this happens.

License

This package is open-sourced software licensed under the MIT license.

Credits

Developed by Michael Aerni

Support

For issues and questions, please use the GitHub Issues page.