sablierapp / sablier

Start your containers on demand, shut them down automatically when there's no activity. Docker, Docker Swarm Mode and Kubernetes compatible.
https://sablierapp.dev/
GNU Affero General Public License v3.0
1.46k stars 48 forks source link

Add `[CADDY]` reverse proxy integration for TCP/UDP traffic #400

Open vbrandl opened 2 months ago

vbrandl commented 2 months ago

Describe the reverse proxy you'd like This is just a request for an additional feature for Caddy. This also relates to this issue for Traefik: https://github.com/acouvreur/sablier/issues/152

Does the reverse proxy provides middleware/module/extension support With the caddy-l4 extension, caddy can be used to proxy TCP and UDP traffic. It would be nice to extend the sablier caddy extension to support that, too.

acouvreur commented 2 months ago

Sablier middlewares should be suited for layer 4, as they do not use any information from the incoming request.

Do you know if Caddy supports WASM plugins ? E.g.: the proxywasm ABI ?

Having to develop a single middleware is easier to maintain than to understand how every reverse proxy works.

Otherwise, do you think you could try to contribute ?

vbrandl commented 2 months ago

A quick search gave me https://github.com/brendandburns/caddy-wasm. Would this work with the proxywasm API? Otherwise I don't think I can contribute much to this directly, since I'm not too good with golang.

But I just started hacking on a naive TCP proxy that could be used with sablier instead of a full blown reverse proxy. This should be kinda easy and I haven't found a way yet to use sablier with TCP based services...

Edit: I just published https://github.com/vbrandl/sablier-proxy which currently works for TCP services. I'm looking to extend it to support UDP, too.