A TeamSpeak server running as a Cloudflare Container, managed by a Cloudflare Worker.
The Worker (src/index.ts) manages a single TeamSpeak container instance via a Durable Object. It exposes the TeamSpeak HTTP ServerQuery API (port 10080) through the Worker's fetch handler.
GET /— Returns container status as JSON- All other requests are proxied to the container's HTTP ServerQuery interface
Note: Voice traffic (UDP 9987) is not supported through Cloudflare's HTTP-only routing. This setup exposes the ServerQuery API only.
- Node.js (v18+)
- pnpm (v10)
- Docker (for local development)
- A Cloudflare account with Containers enabled
pnpm installpnpm devRequires Docker running locally. Visit the Worker URL to see the container status.
pnpm deployFirst deploy takes a few minutes for container image provisioning. Check status with:
pnpm wrangler containers listsrc/index.ts # Worker entrypoint and TeamSpeakContainer class
Dockerfile # TeamSpeak server image config
wrangler.jsonc # Cloudflare Containers / Worker config
The container runs with these defaults:
| Setting | Value |
|---|---|
| Instance type | basic (1/4 vCPU, 1 GiB RAM) |
| Max instances | 1 |
| Sleep after | 24h of inactivity |
| ServerQuery protocol | HTTP (port 10080) |
ISC