You are not logged in.
So I want to set up a self-hosted video chat to not be dependent on Discord.
I am already hosting multiple bare-metal services without problems.
For starters a Caddy instance, behind which are a bunch of application servers such as Paperless-NGX, Etebase, Jellyfin, Navidrome. Then also some self-contained things like a ProFTPD instance and Syncthing.
As a half-assed security measure I keep everything out of the line-of-fire by not hosting them on the default ports and (where applicable) hosting them on hard-to-guess subdomains, so they cannot easily be detected by port scanners.
Unfortunately it appears that I have found my match with this video chat thing.
The FOSS solutions of good repute that I know of, e. g. Jitsi, seem like complexity behemoths with multiple cooperating services and heavy requirements regarding internet connectivity:
No NAT supported (?)
Must use default ports to work
Require an ungodly amount of ports forwarded exclusively to them
Require an external TURN server (which is a complex beast and needs to be secured against unauthorized use)
Cannot handle public IP address changes by themselves
(...)
It is enough to make your head spin. Like, what the hell.
What I have is the run-of-the-mill consumer internet connection of the self-hosting aficionado:
VDSL broadband (40 MBit/s up and 100 MBit/s down, maybe upgrade to 300-up 600-down fiber soon)
1 full IPv4 address with NAT in my router (no CGNAT or other funny business)
Full IPv6 connectivity
Forced reconnect after 24 hours that changes all public IP addresses
A capable server with a private IPv4 and a public IPv6 address
The ability to forward ports to the server's internal IPv4 address
The ability to open the router's firewall's ports towards the server's public IPv6 address
A dynamic DNS record with the router's public IPv4 address and the server's public IPv6 address that updates itself after a reconnect
A Let's Encrypt certificate for the domain name and any of its subdomains with automatic renewal
A Caddy reverse proxy on the server, as mentioned
What do I want? Nothing that I perceive to be over the top:
Video chat for 3..4, maybe sometimes 6..7 people
TLS between clients and the server
A browser-based client so no apps can get bit rot
Local, manual user and group management
Hosting on both IPv4 and IPv6
Hosting on a subdomain
Hosting on a non-standard port
Hosting on a sane number of forwarded ports
No containers, must be bare-metal; I need to understand and control what is happening
No 3rd party services (you know, "self hosting")
What I do not need:
Federation
User registration from outside
End-to-end encryption
Client-to-client (P2P) video connections (everything can bounce off the server for all I care)
Reasonable stuff. Imagine Mumble but with video and a web client.
I have found Galène [1] [2], supposedly a no-frills battle-hardenend FOSS video chat server that has its roots in French academia during Covid.
It fits the scope well and does not even require a reverse proxy; you run a self-contained executable that has access to some Let's Encrypt certificate and you open some ports for it, and that should be that.
I got Galène to run its web frontend on a custom subdomain on a custom port with the Let's Encrypt certificate and everything, and I can log in with my users no problem. It is lightning fast.
What does *not* work though is video chat with anybody from outside my LAN. For example, from my smartphone over mobile internet.
When I try that, the Galène server spits out a bunch of log text about how its built-in TURN server tries and fails to broker a video connection between the local and the remote client using something called Interactive Connectivity Establishment (ICE).
So okay, this did not work. But that is what the built-in TURN server is for, no? To relay the video? That is why the server has open ports after all.
But the relay never gets going. Maybe because this built-in TURN server only supports IPv4 for whatever reason.
I have forwarded the UDP and TCP ports 14400..14499 for Galène, and I am starting Galène like this:
/usr/bin/galene -static /usr/share/galene/static -http :14400 -turn vchat.my.domain.net:14401 -udp-range 14402-14499In Galène's data/config.json is also:
"proxyURL": "https://vchat.my.domain.net:14400/"Has anybody gotten to make Galène work properly in an environment like mine, or for that matter another FOSS video chat server?
If so, how did you do it?
[1] https://galene.org/
[2] https://aur.archlinux.org/packages/galene
Offline
matrix supports video chats
Offline
matrix supports video chats
So I have heard, but hosting a Matrix server looks like another such complexity behemoth, possibly even worse than Jitsi.
The field reports that I have found do not instill confidence. [1]
Offline
its actually really easy when i did it
Offline
all these video chat services are going to require the WAN ip address thats just how it works, i hate using docker and always try to run and configure my services by myself but in the case of jitsi as you say its a config nightmare so i use docker-compose in this case.
i will try to explain how i get this done but im not sharing my scripts as they are very old from when i knew very little and they are ugly as hell lol.
-i have a DUC (dynamic update client) running that updates my domain DNS at regular intervals and im guessing you must too as you have a dynamic wan ip like i do (although mine can stay the same for months)
-i have a script that checks this ip from the DUC log and saves it to a file if and when it changes and triggers a restart of the jitsi-docker-compose service
-my custom jitsi-docker-compose service runs a script that updates the jtisi .env file with the current ip and also checks for internet connectivity before starting jitsi
-jitsi has port 10000 forwarded, thats it, everything else runs through nginx reverse proxy
from what i gather video chat isnt simple hence the 'behemoth' solutions...
Offline