Hello,
For some years, I have been trying to set up RTC between machines, with varying degrees of succes. Unfortunately, so far it never really worked; at best it worked a bit. Daniel Pocock recently wrote on a Debian list that he was willing to help people with this, so I asked him. He suggested me (among other things) to subscribe here, so I did.
About me: I'm a member of the Debian project (a "DD"), and I try to run only free software on my computers. I was born and raised in the Netherlands, and am currently a graduate student in the USA. For this reason, my interest in RTC got a new push.
What I want seems simple to me: - I want to have audio and video contact with a select group of friends. - I have full control over all computers. They all run Debian GNU/Linux and I can install anything I need. - I want all communication to be encrypted. - I want no communication to be routed through third party servers (such as Google), apart from the ones which make up the direct connection between the hosts, of course.
This would all work without problems (I think), except for: - All computers in the Netherlands are behind masquerading firewalls over which I have no control.
That shouldn't be a big problem; there's STUN and TURN and lots of people have that problem, so it is certainly solved by now. Or is it?
Here are some things I have tried in various combinations, with an explanation of the result:
Ekiga (SIP): video just won't work. Audio used to work most of the time when I was in the Netherlands, but doesn't work nowadays.
Empathy (XMPP): Using my own jabber server (jabberd14), I have good results for text messages and until recently I had good results with audio. Video is totally broken, which seems to be a gstreamer issue: when the other user switches their video on, my camera is activated. Images from long ago are interleaved with current images; sometimes with images from slightly less long ago, or with the standard "no signal" still image. The other way (from the masqueraed hosts) video used to work sometimes. Calling only worked one way; the other way I could call, but they couldn't pick it up. Despite all the problems, this is by far the best result I've had, where we actually had audio contact and even some limited video contact. Unfortunately, with a recent system update I have been unable to have any contact other than text messages using Empathy.
Empathy (SIP): SIP connections just don't work with masquerading, it seems. I've set up an asterisk server, which works as long as no masqueraded hosts are using it. The masqueraded hosts can call the server, get automated answers, but cannot be connected to other users (which doesn't make much sense to me, because asterisk would pass on all the traffic, so I don't see the difference between an automated answer generated by asterisk itself and a real person answering). Anyway, it didn't work well. Also, Asterisk seems to have very limited support for video, but I didn't really get around to trying it out.
Jitsi (SIP and XMPP): Jitsi is written in Java, which seems to be a problem on its own. When started from a terminal, it spews a lot of warnings and errors, but it does seem to work. Then again, it crashes at random times. It seems I need to disable several settings to make sure it doesn't contact Google; I really don't like that. As for how it works: so far it doesn't really (or at least not with the masquerated hosts), but perhaps I have to try harder.
As I wrote above, I tried setting up several servers to make things work. My experience so far:
jabberd14: It takes some trouble to configure it, but it's pretty straightforward. When it's set up, it works. It supports encrypted messaging, which is good. I'm not sure if the audio and video calls are encrypted as well; I'm guessing they might not be. It would be good if clients would warn about this (if my guess is right).
ejabberd: I just tried setting this up, as Daniel wrote he had been using it for years. I find it very hard to set up, and there is virtually no documentation. It has ejabberdctl, but I had to learn about its existence from a web search on how to set the system up. This really should be a lot less painful. Anyway, I got a local client connected to it now, but I'm trying to connect the other client through a local turn server (see below), which doesn't work; I think the problem is with the turn server, not with ejabberd. I tried not using the turn server, at which point jitsi crashed and I gave up for now. I'll try again later.
asterisk: This seems to work well for what it is intended for: audio only. Also, I found it disappointing that the conference room plugin (to make a conference call with multiple users) depends on the dahdi plugin, which cannot be loaded if you don't have the hardware in your computer. Anyway, as I wrote above asterisk also mysteriously failed to work when used from a masqueraded host. Asterisk's documentation is very complete, but targeted at people who want to run a telephone network with hundreds of users, many of which have physical SIP phones and want to call other PSTN lines. This makes it a bit hard to read sometimes.
resiprocate-turn-server: Daniel wrote I might need this, which makes sense; after all, TURN is supposed to solve all problems related to masquerading. But this one is impossible to set up, it seems. I installed the package; it didn't ask any questions, so I hoped it would just work. It didn't. I looked at the man page (which I found by looking at the list of files installed by the package...), but that only gave a link to the project's web page, which has surprisingly little information. The only information about the turn server is that there is a config file. That's still useful, because the man page didn't mention it, but really I'd like a "how to use this program" recipe. Or what I really want is that debconf asks me a few questions on install, and I don't have to touch anything; it just works. Anyway, after changing some settings in the config file and restarting it, it still doesn't work. I don't know why not.
Finally, some good news: after all the failures with XMPP and SIP, I looked at something entirely different: mumble. It's written to allow communication during multiplayer games, and works fine. But it doesn't support video, doesn't do echo cancellation, and you can't "call" anyone; you must have arranged to meet through some other channel. So certainly not the ideal solution, but it's currently the only way I can get working audio communication.
I suppose this story sounds like a lot of misery. But there is hope: I really want it to work, and I want it to work for others as well. So if you can help me to make it work, I'll try to document things, and send patches to Debian packages (and upstream, if applicable) to make things better.
But before I can do that, it has to work for me. So please advise me on how to get there.
Thanks, Bas