Hacker News new | past | comments | ask | show | jobs | submit login
Jam – Self-Hosted Clubhouse (github.com/jam-systems)
221 points by synergy20 47 days ago | hide | past | favorite | 59 comments

Ahaaa ! I see you setup your docker compose with traefik for the reverse proxy, with automatic http-to-https ! Really cool to see a docker-compose file almost ready-to-deploy without passing the buck of configuring the reverse proxy to users :).

This is the feature that docker-compose lacks but is needed the most. There should be something like traefik-compose or caddy-compose with simple YAML config. I forget how the traefik labels work all the time.

You will not get that. Proxying traffic has many parameters because the protocol itself has many options to do things differently. Best you can have is a default sane traefik config for your usual hosting solution.

I wonder if sub-groups would be a good feature. Sort of like "tables" you could join to speak to others at the table. You would still be able to hear the speakers on stage but users at tables can only speak to each other.

Great idea, we do not have support for sub-groups yet but I can see how this could be very useful for meetups and other formats. We'll think about it!

This has a MST3K vibe to it, I love it!

I'm still new to Clubhouse and trying to understand the appeal. Is Clubhouse basically like the old radio call-in talk radio (live talk radio shows) where you basically can have your audience "call in" and join the hosts? Is it anything more than live podcasting with an audience that can also be made to be guests and you get their reactions? Am I missing something? Or is Clubhouse more of a free-for-all group voice chat with no real leader, like just getting onto a Discord channel and talking? Clue me in!

I'm still new to Clubhouse as well but my understanding of the ecosystem is that it's a lot more interactive than just a "live podcast" as there's ability for more audience engagement, community interviews, and basically a two-way interaction space where the audience can participate in the "live event". It's basically a discord channel but with more structure on who has the floor and moderation tools.

I think it's definitely an interesting approach to community creation and engaging with your audience. What I'm still trying to learn and understand is where it's going, as I don't think I use it enough yet to fully see the "road to monetization, profitability, and sustainability" of the platform. I kind of wish room discovery was a bit easier beyond the network-based approach that they're using, but I'm just being nitpicky now.

Any pointers to some good overviews on well-run Clubhouse groups and the sort of interaction that happens? Any recorded sessions that might be somehow viewed to see how the interaction happened during that session?

Wow, I just woke up to this. Glad to see Jam here on hn. We've come a long way since the initial release earlier this year (Show HN: https://news.ycombinator.com/item?id=26131123).

Most of our efforts since february went into making the rooms more reliable which sounds simple but there are actually countless of different reasons for why audio might not work or not work as well as it could (switching from wifi to mobile data, microphone permissions, bandwidth problems, OS forces app into background, …) some are solvable others at least need to be documented and tracked.

What else is new other than reliability?:

# Support for large rooms (think: thousands of people in the audience) using an SFU

Initially Jam only had support for p2p rooms which is great for small rooms (up to like ~20 people depending on upstream bandwidth of the speakers) but for online conferences, meetups and so on you often need rooms that support 100s or 1000s of participants so we added an SFU where the speakers still send audio to each other p2p to keep conversations low-latency but we use a server to stream audio to all users that are in the audience.

(That said: you can still run Jam p2p-only if you prefer that)

# Locally recorded multi-track audio (think: podcasts with multiple guests, where you get one high quality audio track per speaker)

You can try multi-track audio recordings on our public beta server (https://beta.jam.systems). Tap on our own user and then "Start Podcast Recording". When you tap on your own user again and then "Stop Podcast Recording" the browser will prompt you with downloads for all audio tracks (we will make this more smooth going forward).

# Custom UI

For everyone who wants to add audio rooms to their own app but needs full control over the look and feel we have added an API and JavaScript library (and NPM package) so you can "build your own" ui for Jam. This basically means that Jam is running "headless" as an audio room server and makes sure audio works while you can build exactly the ui that you want.

E.g. let's say you have an app like Google Docs and you want to allow people to talk about a document. In this case you might want something that doesn't look like a room on Clubhouse or Twitter Spaces but rather like a line of avatars and with the API and library you can build this yourself now:



# Managed hosting

For everyone who wants to use Jam but doesn't want to install and maintain Jam themselves we are run and support Jam for you (think: what Wordpress.com is to Wordpress.org):


This is interesting, thanks for sharing.

How do you stream the audio to the people in the audience? Are you still using WebRTC or do you add some latency and use something like HLS? If WebRTC do you know the number of maximum listeners you can get to on the SFU?

We were able to serve 500-1000 participants from a mid-sized VPS a few weeks ago and were CPU constrained iirc so a beefier server should go further than that.

There's no mention of privacy I can find; should you mention anything in the README about encryption? In particular with an SFU.

What's with the emoji vomit in the README?

It's 2021, and people use and like emoji, and you probably need to find a way to accept this.

How about using them in reasonable amounts? They mostly only add visual clutter without conveying any meaningful information.

Point taken, I'll look into whether we can tone down the feature comparison table to make it easier to read.

It looks like there was a party last night and every emoji in existence was invited.

I see no mention of federation capabilities in the readme. Is something like that planned? It would be nice to have the possibility to join across hosted instances.

We're interested in federation and discussed it a couple of times but we don't fully support it yet. Happy to learn more about what you have in mind.

Hi, nice to hear that. I first thought you'd need an account to join, but it's very cool to see that this works without accounts!

With ActivityPub[1] federation it might be possible to show account informations of users if they decide to join with their federated account.

It is for example possible to comment on a PeerTube instance on one server by using a Mastodon account from another server.

I'd love to help but I have no experience at all with such protocols and how servers do the magic :) If you do manage to implement something I will be very impressed, too.

Thanks for creating such a nice tool!

[1] https://www.w3.org/TR/activitypub/

Pity there's no issue tracker on the repo. I am not on Discord or Slack but maybe it was discussed there, and maybe that can still be found.

The main repo is over at Gitlab: https://gitlab.com/jam-systems/jam/ which also has the issue tracker (we could do a better job keeping that up to date though tbh).

Thanks! I also missed that and missed the issue tracker at github.

Thanks. Completely missed that.

No host and guest speaker functionality and a bit unpolished, but free p2p chat/screenshare/video chat in the browser https://teamvideo.app/

i gave this a shot. you have some kind of weird bug, if you click share and try to share teamvideo you get this infinity hall of mirrors - https://imgur.com/a/ymujedG

Now that one can roll their own 'Clubhouse' alternative for free using Jam, how is the original Clubhouse remotely worthy of being valued at $4B with users running to the competitors like Twitter Spaces, Discord Stage Channels, etc and no route to making money?

Perhaps Clubhouse is on a similar road like Genius; a devalued exit. All because this concept has been copied to death, users still running to alternatives and now reduced to an open-source contraption on GitHub for everyone to self-host themselves.

Quite unsurprising.

Clubhouse’s free fall has nothing to do with open source alternatives. Social apps are powered by the user base, not the technology.

Yep. Despite the initial few interesting talks it’s now just self promoters and NFT cultists.

So they should do an ICO exit

True. That explains why tons of users are still using Twitter Spaces, Discord Stage Channels and the rest of the competition and Clubhouse is still struggling even after opening the invites late; as predicted. [0]

I consider Jam, the second last nail in the coffin for Clubhouse.

[0] https://news.ycombinator.com/item?id=27490149

Unsurprising indeed. You can't fly that high on technological merits, at least as long as it's just some web software thing and not something as extraordinary as reusable space rockets. It's all about brand on that level. And sure, a brand as fresh as Clubhouse can drop to irrelevancy in weeks because everybody who is already connected to the brand is, by definition, an early adopter. And early adopters are the quickest to jump ship when something new and shiny appears elsewhere.

Jam is to Clubhouse (and Twitter Spaces) a bit like what Magento is to Amazon.

I'm quite optimistic when it comes to Clubhouse. Discovery is definitely a challenge but I think with replays (room recordings) and mixing those into the feed next to live rooms they are on the right track.

To be fair, none of these competitors are making money either. It's hard to make money from "growth and engagement" in a world already saturated with advertising.

Nice, knew about Jam before, but just learned about jam-core. Will integrate into our app, thanks for sharing.

I kind want a asynchronized audio social network. like a forum where content can persist.

Can you explain a little more? Do you mean like a threaded audio stream, so anyone at a future point can reply to a specific recording/response by someone? E.g. Interjecting your own thought, that could notify the OP that the reply was made, etc?

neat, you can join instantly for discussions no fuss with registrations and with no video possible it there's no awkward cams on/cams off dynamic.

Needs websitecode to be public, if this AGPL-Programm is shown in an I-Frame?

Clubhouse is so earlier 2021

is this p2p?

You can run Jam in p2p mode where all users in a room are connected to each other. That's great for scenarios where you have lots of small rooms and also great if you want to save cost.

If you want to support large rooms with hundreds or thousands of participants well be aware that p2p might run into issues if speakers are bandwidth constrained (since every speaker has to send their audio to every other participant). That's why we've added a mode where the speakers are p2p (low latency) and also send their audio to the server which then sends it to the audience members (SFU).

Edit: out of the box you get p2p for speakers and SFU for audience members, you can configure Jam to not use the SFU

that's a neat solution!

I hate to be this guy, but why is this better than using teamspeak, ventrilo, discord, or any of the other group voice chat programs?

For users: Jam works in the browser without having to install anything (Discord does too though) and without having to create an account. You just need the URL of a room and you can join.

Jam is open source so you can look at the code but also make changes if you want to (e.g. if you prefer different reaction emoji). While not trivial it definitely is a great option to have imho.

Last but not least we designed Jam in a way that works well stand-alone but also makes it easy to integrate in existing web and mobile apps. For example there are people who run forums/communities or saas b2b apps (e.g. productivity tools) who want to add audio rooms as a feature and with Jam they can just grab the code and add rooms using an iframe (or use the JavaScript library for more advanced integrations). Not sure if that's possible with teamspeak, ventrilo or discord?

Jam is p2p WebRTC w/ low-latency and high-quality audio (opus) so it _should_ work well for competitive gaming. If you are looking for an audio chat tool designed for gaming the existing solutions you mentioned might be a better fit but happy to learn more about how we could make Jam better there as well.

What do I do if a troll joins the room and starts playing Rick Astley non-stop?

You join in the audience (others only can hear you if you are on stage), moderators can move trolls back to the audience. Simple but works quite well.

Glad to see this mentioned.

I'd like to try a server with it and test a bit, but wonder if I self hosted, could I tell the software to use a TURN server only and block the p2p?

( For my use cases I need to prevent people from getting easy access to other people's ip addys )

You can't self-host them. They're not even options. It's like saying "why is your car better than Amtrak." Maybe it's not better -- it's certainly worth less money -- but you're not shopping for a railroad. The only way to self-host Discord is to buy the entire company, valued $15B.

IIRC you can self-host Teamspeak and Ventrillo.

You can, so they're more similar to Jam as far as software. On the licensing, not so much. Teamspeak requires a recurring payment.

I have definitely done so with both of them, but it was quite a while ago, not sure if that has changed.

Unlike all the software you listed, it's open source and can be self-hosted in a way that you can be relatively confident that you're running what you intended to run?

You cannot self-host those.

Instead, how is it better than Jitsi and Mumble, given that they are already well tested and widespread?

In the beginning we actually were looking at whether we can use Jitsi for the audio part of Jam and just focus on the ui but Jitsi is huge and difficult to get into so we (arguably) naively started from scratch and then had to solve many problems that Jitsi probably already solves (?).

That said: if you are looking for something that has room concepts close to Clubhouse or Twitter Spaces (you see who is in the room, who is speaking, you can move people between audience and stage and so on) and an easy way to add those rooms to existing (web) or mobile apps then Jam is great out of the box. If you are looking for screen sharing or video then Jitsi is a better starting point right now I think.

Mumble I am not very familiar with but it looks interesting. As far as I understand it is not web based but like Jam it also is p2p and uses opus for audio (low latency, high quality)? Perhaps someone who knows Mumble can do a comparison.

Mumble isn't exactly P2P. It has a server (murmurd) that handles all the streams. I think it could work as SFU. And, actually, there is a web frontend: https://github.com/Johni0702/mumble-web

Your use of Opus and the option to run a SFU makes this a suitable replacement of Mumble for meetings, like in the Pirate Parties around the world. We are heavy users of Mumble.

Is Clubhouse still a thing?

I was wondering too. Since the little hype no one talk about it.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact