falconiere/Toolu Cloudflare Tunnel — Start
Boots a Cloudflare Tunnel directly on the runner host (Linux + macOS), exposing a local HOST:PORT to the public internet. Quick tunnels (no account, ephemeral *.trycloudflare.com URL) by default; set `tunnel-token` to use a named tunnel. Because cloudflared runs on the host (not in a container), HOST:PORT resolves to your app and the tunnel survives across steps. Pair with the matching `stop` step (use `if: always()`) to clean up.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| name | Tunnel instance name. Namespaces PID/URL tmpfiles so multiple tunnels can run in the same job. | no | default |
| host | Local host to expose (quick mode only — ignored when `tunnel-token` is set). Resolves on the runner host. | no | localhost |
| port | Local port to expose (quick mode only — ignored when `tunnel-token` is set). | no | 3000 |
| tunnel-token | Cloudflare Tunnel token (from the dashboard or `cloudflared tunnel token`). When set, switches to named-tunnel mode. | no | "" |
| tunnel-config | Path to a cloudflared config.yml with custom ingress rules (named mode only). Copied to /etc/cloudflared/config.yml. | no | "" |
| cloudflared-version | cloudflared release tag to download (see cloudflare/cloudflared releases). | no | 2024.12.2 |
| verify-checksum | Verify cloudflared binary SHA256 against the release checksums.txt before installing. Defaults to false because the checksums.txt format is brittle (variable whitespace, optional BSD `*` prefix); opt in when you control the parser or have a pinned version known to parse cleanly. | no | false |
| protocol | cloudflared transport protocol (`quic`, `http2`, or `auto`). Leave empty for cloudflared's default (QUIC). Set to `http2` on networks that block outbound UDP 7844 — otherwise cloudflared retries QUIC for ~5min before falling back, stalling registration past start-timeout. | no | "" |
| start-timeout | Seconds to wait for the tunnel URL/ID to appear, then (separately) for the edge connection to register, before failing. Worst case is roughly twice this value. | no | 30 |
Outputs
| name | description |
|---|---|
| tunnel-url | Public URL of the tunnel (quick mode only; empty in named mode unless ingress exposes a hostname). |
| tunnel-id | Tunnel ID (named mode only). Extracted by parsing the UUID from cloudflared stderr line matching `Registered tunnel connection.*<uuid>`. |
| tunnel-pid | PID of the cloudflared process. Diagnostic only — stop reads its own tmpfile keyed by name, not this output. |
| tunnel-name | Echo of the name input (slugified), for downstream step convenience. |