For one-to-many communication (lectures), the behaviour is linear, and Galène should be able to serve about 400 participants per core
Scaling wise what are you trying to do?* You can put different rooms on different servers. They don't have to aware of each other.
* If you want to scale out the broadcast case you will probably want to follow the ingest pattern. Have one server forward to n with viewers.
* If you want really large conference calls you will need to think about the experience. Residential internet can only accept so many incoming feeds. Do you want to enable/disable them on the fly? Do you want to have 'active speaker' only view etc.. not just a scaling problem but also UX.
Yes. You could then use a reverse HTTPS proxy to route each client to the right instance of Galène.
For very large groups, that need to be split between multiple servers, you'll need to wait until we implement server federation (distributing a group over multiple, geographically distant servers). I know for a fact that Jitsi implements federation, not sure about Ion-SFU.
galene -http 0.0.0.0:8443
Using a nginx server as a reverse proxy, I have the following that works for HTTP but not WebSocket: server {
server_name galene.domain.com;
location / {
proxy_pass https://127.0.0.1:8443/;
proxy_set_header Host $host;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/natfan.io/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/natfan.io/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Thoughts? Happy to move this to Github if that's easier too.An alternative to reverse proxying is to use HTTP redirects: you can define a group as
{"redirect":"https://otherserver.example.com:8443/group/groupname"}
and Galène will send an HTTP redirect whenever somebody attempts to join this group.
I'll be glad to continue this conversation on the mailing list (https://lists.galene.org/postorius/lists/galene.lists.galene...).
Does this mean that the server has to send n identical packets for every packet that would have been sent in a 1:1 situation? I don't know if a different solution exists, but this seems wasteful.
How does this work when e.g. the BBC broadcasts an internet live stream with millions of viewers? Shouldn't a conference call work in essentially the same way?
Most large-scale broadcasts use technologies such as HTTP Live Streaming (HLS) or MPEG-DASH, which carve a video into 3-second intervals that are then distributed using ordinary HTTP over a CDN. The problem with these technologies is that they have a latency of a few seconds, which means that you cannot have a meaningful conversation over them.