Signal's "source available" infra can be self-hosted but it's huge effort and relies on a bunch of cloud-specific services which need to be replaced with self-hostslable alternatives. It's also extremely poorly documented and the code quality is fairly mediocre. I wouldn't recommend trying to host Signal infra yourself; it can be done; I've done it at work and it took some months of effort, and maintaining it is a nightmare (or was, then at least) because they'd only push one huge update to GitHub quarterly or less often.
https://github.com/jitsi/docker-jitsi-meet
Put nginx in front of it with Let's Encrypt and it shouldn't take more than half an hour to set up. After that you basically get a clone of meet.jit.si.
I'm using it with the low level JS library in order to build a product that contains video chat. There was a bit more messing about for me, but only a bit.
Which I had, yet for maintenance reasons a container-based solution had my preference: https://github.com/jitsi/docker-jitsi-meet