Skip to content

About

Self-hosted watch party: a private room to watch something together with screen sharing and audio over WebRTC. Derived from Jitsi Meet.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

14,179 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Watch Party

Share a screen with sound and watch it together, in a private room.


Watch Party is a self-hosted web app for watching something together over a call. One person shares a screen (or a browser tab) with its audio, the other person watches it live, and you talk over it with your microphone, camera and chat. It is built for small private rooms, mainly two people.

It is built on the Jitsi stack and derived from Jitsi Meet. See Credits.

How it works

Watch Party is a live screen and audio share over WebRTC, not a synchronized player. Everyone sees whatever is playing on the sharer's screen, so there is nothing to keep in sync: the sharer presses play and the others see it.

Features

  • Screen share with audio. Share a screen or tab together with its sound. Frame-rate and bitrate ceilings are raised so that video playback stays smooth.
  • Audio mix control. The sharer can adjust the level of the shared audio against their microphone, and shared audio is attenuated by default so it does not bury the voice.
  • Session status. The room says what it is waiting for (the other person, or a screen share) and explains when sharing was interrupted or no audio was captured.
  • Automatic room passphrase. When WATCHPARTY_ROOM_PASSWORD is set, each new room is locked with that shared passphrase as soon as it is created.
  • A reduced interface. The toolbar is limited to microphone, camera, screen share, share audio, chat, participants, tile view, settings and hang up. Polls, reactions, the welcome page, deep linking and the self-view tile are turned off, and the filmstrip is disabled. Tile view is available.
  • Camera off by default, with the microphone on.
  • Chat and a participants panel.
  • Configurable name. The app name shown in the UI is set at container start with WATCHPARTY_APP_NAME; it is not hard-coded.

Limitations

  • The two-person limit is not enforced. The session screen tells you when more than two people are in the room, but the server does not block anyone.
  • Audio capture depends on the browser and on what you share. When no audio track is present, the app says so.
  • Web only. The Docker and infrastructure code here builds and deploys the web client. The repository still contains upstream's React Native code, which is not built or supported.

Running it

For anything at the Jitsi platform level that this project does not change (XMPP, Jicofo, Videobridge, Prosody), the Jitsi handbook is the reference.

Repository layout

Path What it is
react/, modules/, css/, conference.js, config.js, interface_config.js The web client (Jitsi Meet, modified)
docker/jitsi-core/ Docker Compose stack and image configuration: web, Prosody, Jicofo, Jitsi Videobridge
infra/terraform/, infra/ansible/ DigitalOcean provisioning and deployment
docs/ Runbooks and notes

Security

  • Rooms are locked with a passphrase set automatically when the room is created (docker/jitsi-core/prosody/prosody-plugins-custom/mod_muc_default_password.lua), provided WATCHPARTY_ROOM_PASSWORD is non-empty and the muc_default_password module is enabled. If the variable is empty, the plugin only logs a warning and rooms are not locked.
  • The production example sets enable_p2p: false, so media goes through your own Jitsi Videobridge rather than directly between participants.
  • Beyond that, the security model is Jitsi's. See Jitsi's security overview and its E2EE whitepaper.

SECURITY.md is inherited from upstream and sends reports to the Jitsi security team. That is the right place for a vulnerability in Jitsi's own components. For a vulnerability in this project's changes, such as the room passphrase or the deployment code, contact the maintainer (@edvardsanta) directly instead of the Jitsi channels, and please do not post details publicly first.

Credits

Watch Party would not exist without Jitsi Meet, Jicofo, Jitsi Videobridge, lib-jitsi-meet and docker-jitsi-meet, created and maintained by the Jitsi team at 8x8 and the Jitsi community. CREDITS.md lists every upstream project, the revisions we use, the copyright holders, what we changed, and the trademark notice.

This is an independent project. It is not affiliated with, sponsored by, or endorsed by 8x8, Inc. or the Jitsi project.

License

Apache License 2.0. See LICENSE. Upstream components and bundled third-party code keep their own licenses; see CREDITS.md.

Contributing

Issues and pull requests are welcome. Commits follow Conventional Commits with a scope, for example fix(screen-share): …. Before opening a PR, run npm run lint:ci and npm run tsc:web.

CONTRIBUTING.md is inherited from upstream and describes contributing to Jitsi Meet itself, not this project.

About

Self-hosted watch party: a private room to watch something together with screen sharing and audio over WebRTC. Derived from Jitsi Meet.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages