Hi all 👋
I built a small AAPanel plugin that manages Cloudflare Tunnel (cloudflared)
end-to-end from the panel UI — useful if your server has no public IP, sits
behind NAT/CGNAT, or you'd rather not open 80/443 directly.
GitHub: https://github.com/fdciabdul/Cloudflare-Tunnel-aaPanel

What it does
The UI walks you through 4 steps and most of them auto-fill:
- cloudflared binary — one click downloads the latest release from GitHub
- Cloudflare credentials — browser login or API token. If the
cloudflare_manage plugin is already set up, it reuses those creds
automatically (no need to paste anything)
- Tunnel — create a new tunnel or pick an existing one
- Hostnames — type
app.example.com → http://127.0.0.1:8080,
tick "Auto-create CNAME", click Add. Plugin:
- upserts the public CNAME on Cloudflare (proxied)
- writes
/etc/cloudflared/config.yml
- installs + restarts the systemd service
- rolls back the ingress row if anything fails (atomic add)
Advanced section has service start/stop/restart and a live journalctl viewer.
Why I built it
- Existing
cloudflare_manage plugin handles DNS/CDN but not tunnels
- The Zero Trust dashboard works, but I wanted the workflow next to my sites
- Got tired of editing
config.yml and running cloudflared service install
by hand every time I added a hostname
Install
- Grab
cloudflare_tunnel-1.0.7.zip from the GitHub release
- AAPanel → App Store → Third Party Plugin top-right Import → pick the zip
- Open the plugin → Step 1 → click Install cloudflared → follow the wizard
Supports x86_64 and arm64. Tested on AAPanel 7.x with Python 3.12.
Source / issues / PRs
https://github.com/fdciabdul/Cloudflare-Tunnel-aaPanel
License: MIT
Feedback / bug reports welcome 🙏