Host your game servers and web apps on the public internet — securely, without opening a single port at home. One GUI for Cloudflare Tunnels, WireGuard game-port DNAT and Kubernetes app ingress.
curl -fsSL https://proxyctl.cc/install.sh | bash
Cloudflare Tunnel for web apps. WireGuard + iptables for game ports. One UI for both. Runs on k3s (or any Kubernetes).
Stop hand-editing wg0.conf, iptables and cloudflared YAML. Click an app, click a target, click apply.
Hostname → app, one click. Cloudflare terminates TLS; cloudflared dials out from home. No public ports. No certs to renew.
Players hit a public droplet ($4/mo is plenty); ProxyCTL renders the droplet wg0.conf and the in-cluster wg-gateway rules so packets land on the right Service.
Hook up a scoped Cloudflare API token and ProxyCTL writes the DNS itself — A records for game servers, proxied CNAMEs for web apps. Associate domains to servers in one app.
Browse namespaces and Services in your cluster, see ports + pod readiness, pick a target — no ClusterIP copy-paste.
Running servers with GameCTL? ProxyCTL sees the Services it creates — pick one, pick the ports, Apply. Live per-tunnel counters show players connecting.
Your home network never exposes anything. The droplet and Cloudflare are the front door; everything dials out.
API + embedded UI in a single container. Stdlib HTTP, no plugin runtime, no agent to install on the target.
Apply uses your ambient ssh-agent and kubectl context. Private keys are never read, rendered, or held in memory.
A real control plane — live tunnels with traffic counters, and a setup wizard that preps the droplet for you.



Two real paths, one control plane: web traffic via Cloudflare, game traffic via WireGuard. ProxyCTL is the GUI that drives both.
Anything you want online but don't want to expose at home.
On the roadmap
ProxyCTL's sibling, GameCTL, deploys and manages the game servers themselves — 13 games with guided wizards, live status, RCON controls and scheduled backups, on your own Kubernetes cluster. Deploy with GameCTL, publish with ProxyCTL.
curl -fsSL https://gamectl.cc/install.sh | bash
gamectl.cc ↗ — same single-binary design, same one-command install.