Jam: my initial take on a FOSS alternative to Clubhouse

Screenshot of Jam

I'm interested in all sorts of communications systems, and I was recently looking for a free and open source, self-hosted, alternative to the excellent Jitsi video conference platform, but for audio-only conferences.

Luckily, someone on Mastodon mentioned Jam.

It's early days for my tinkering with it but, so far, I'm impressed.

Installing Jam

I installed Jam on a Ubuntu 20.01 VM, with 2GB of RAM.

I followed the instructions on Jam's gitlab page.

They did not quite work for me "as is", and I've submitted a small patch, to hopefully help others.

My key changes were:

  • you'll need to set the branch to stable in /jam, and then switch to /jam/deployment to edit the .env config file
  • my server has an RFC1918 IP address, so is behind NAT. I needed to add the external-ip parameter to the turnserver.conf config file
  • for domains, I needed to set A records for stun.jam.example.com, turn.jam.example.com and stunturn.jam.example.com. (I'm not wholly sure that this last one is required...)
  • I also change the password for grafana, to keep others out, although I've no idea how to configure / use this bit :)

It's a docker-based installation, and I'm not that familiar with docker, but it seemed to work. The main challenge was that I managed to overwite the turnserver.conf config file without realising it, and was then wondering why I had issues with audio. Once I realised that, changed the config, and restarted coturn, it was fine.

Using Jam

It's as simple as going to the web page at the domain you've specified in the .env config, and creating a room.

If you've picked a room name which someone has already picked, that's fine — your chosen name is combined by some random characters, with the goal of creating a room name which should be functionally impossible for someone to guess.

When you create the room, you are the only moderator, but you can grant that power to others.

You need to give the room's name to anyone you want to join. Currently, there's no password, or ability to prevent someone from joining. You can't kick someone out either.

A nice feature is that, until a moderator has given a guest permission to speak, they can listen but not speak.

A moderator can give a guest permission to speak, and they can take it away whenever they want too.

The UI is intuitive and easy to use.

What Jam does really well

It's easy to use

I would be confident sending the link to anyone, and that they could just use it. The UI is intuitive, and optimised for a mobile device.

You don't need an app, and it has worked on all the browsers I've tested so far (which, admittedly, is not many).

I tested it with a friend earlier today, and he had a bit of a fight with his headphones to get them working with Jam within his browser, but that's not a problem I have had.

Jitsi has controls for audio output and input within the service itself, so perhaps that's something for the future?

Only you can speak, unless you grant permission to someone else

You — or anyone else to whom you give moderator permissions — can grant, or revoke, speaking permission whenever you like.

So if you're worried about someone bombing your meeting / event, the scope for this is minimal.

Seamless automatic https

It uses traefik as the https-terminating proxy and, as part of the installation, it installs a TLS certifcate without you even realising it.

It's privacy-friendly

It's a self-hosted service (although you can use the official hosted instance if you prefer.

You don't need to register or hand over any personal data to use it, either to create a room, or to join someone else's room.

profile page

When you join, you get a random name, which you can change to your own name, or any other string, if you want. You also get a random gravatar profile picture, but you can upload your own if you prefer.

The backend does not, as far as I can tell, collect unnecessary data.

Do bear in mind that anyone with the URL can join the room and listen in. That’s a feature, not a bug, but it's important to bear it in mind. The system admin can see which rooms are open, and so could, if they wanted, join any of the rooms and listen in.

The only bit I'm not too keen on is the use of gravatar, since it means everyone talks with gravatar's server. But even that is on the roadmap, I think.

Earn Money

screenshot of call to action button

A room moderator can easily add a "call to action" button, which appears under the room name.

You can add any URL you want here (e.g. a link to your homepage, or your YouTube channel, or albums on iTunes, or whatever). That's a neat feature.

If you specify a PayPal.me address, or a Bitcoin wallet address, it will show a matching image, which is a nice touch, in case you are using the room for money-making purposes (e.g. for tips, if people like the song you're singing).

Things Jam doesn't do (yet)

Anyone can open a room

At the moment, if your instance of Jam is publicly avialable, anyone can open a room, and invite their friends.

Since it is audio-only, this may not be too problematic: bandwidth and server resource utilisation is probably not too high, and the likelihood of abuse seems pretty low.

A moderator can downgrade any other moderator

If you give someone moderator powers, they can immediately downgrade your own mod status (so that you're no longer a moderator).

So only give the power to someone you trust.

Customising the UI is easy but I'm not sure if the changes will stick

I would like to make some changes to the landing page, to remove the references to it being hosted in Germany (the official instance is; my hosted instance is not!), and to add some GDPR-compliant transparency language.

I can do this quite easily, by editing one of the .jsx files in the UI directory, but my feeling is that this would get overwritten (or is at risk of being overwritten) when there's an update.

Ideally, most of the text would be incorporated by reference, using a user-editable dictionary for strings.

You cannot limit access to identified users

I don't have a particular use case for this but, if you wanted to limit access to people who provide an email address, or using some other authentication mechanism, that's not available.

Other bits

Give the official instance of Jam a try!

You can also follow Jam Systems on Twitter.

There's an "early access" / "pro" plan, if you want to support the project, pr have them host a customised instance for you. (It's less than $10 per month to have someone else do the hard work for you.)


Author: neil

I'm Neil. By day, I run a law firm, decoded.legal, giving advice on Internet, telecoms, and tech law. This is my personal blog, so will be mostly about tech stuff, cycling, and other hobbies.