9cab8c7bc7
The host-network tunnel approach had issues because localhost inside the tunnel container wasn't reaching the host-published ports correctly. This reverts to running cloudflared as a Docker container on the 'backend' network, where Docker DNS resolves container names reliably. The tunnel connects to http://{container_name}:{container_port}. - apps/api/src/services/tunnel.py: use --network backend instead of host - apps/api/src/api/tool_instances.py: pass container_port (default_port) instead of published_port (host port) to tunnel functions Quality gates: ruff clean