$cd ../troubleshooting/
NetworkingFree Solution
No Public IP β Use Cloudflare Tunnel
// Behind CGNAT? No static IP? Cloudflare Tunnel exposes your server for free.
β What you get
β’ Free HTTPS endpoint: https://your-name.trycloudflare.com
β’ No port forwarding, no router config
β’ Works behind CGNAT, residential ISPs
β’ Persistent subdomain with named tunnels (free Cloudflare account)
setup.sh
β Setup in 5 Minutes
1. Install cloudflared
# macOS
$ brew install cloudflared
# Linux (Debian/Ubuntu)
$ curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cf.deb
$ sudo dpkg -i cf.deb
2. Quick tunnel (no account needed)
$ cloudflared tunnel --url http://localhost:18789
# Output:
https://random-name-abc123.trycloudflare.com
# Use this URL as your webhook endpoint
3. Persistent named tunnel (recommended)
$ cloudflared tunnel login
$ cloudflared tunnel create openclaw
$ cloudflared tunnel route dns openclaw your-domain.com
$ cloudflared tunnel run openclaw
4. Run as system service (auto-start)
$ sudo cloudflared service install
$ sudo systemctl enable cloudflared
β FAQ
Q1. Is it free?
Yes. Cloudflare Tunnels are free for unlimited bandwidth. You only need a free Cloudflare account and a domain.
Q2. Is it safer than port forwarding?
Much safer. No ports are opened on your firewall. Traffic is encrypted end-to-end through Cloudflare's network.