Skip to content

Watch Parties

RadicalMuffinMan edited this page Nov 12, 2026 · 2 revisions

Watch Parties

Watch Parties let people on your server watch the same movie or episode together in the Moonfin apps, each on their own device. Moonbase hosts the rooms, on Jellyfin, Emby and Plex. Someone starts a party, friends join from the list of open rooms, with a short code or with an invite link, and Moonbase keeps everyone's player in step. The lobby can vote on what to watch, the start waits for everyone's player and then counts down 3, 2, 1, and during playback there's chat, six reactions, and a note naming whoever paused or skipped.

Jellyfin's own SyncPlay is still there. On Jellyfin each user picks which kind of party they start, and the apps list rooms of both kinds side by side. On Emby and Plex, Watch Parties are the only way to watch together. How each app looks and works is covered in that app's wiki.

On Silo, Silo's own Watch Party is used, and Moonbase for Silo doesn't show this tab.

What you need

Moonbase with Watch Parties, on Jellyfin or Emby, or Moonbase for Plex. They're on by default, and there's nothing else to install. On Jellyfin and Emby, party alerts reach phones through the same push as Seerr Notifications, which works out of the box.

An app that can't find Moonbase, or finds an older one without Watch Parties, says Watch Parties need Moonbase on this server. On Jellyfin, SyncPlay still works without it.

Settings

In the Moonbase admin page, Watch Parties tab:

Setting Default What it does
Turn on Watch Parties On The main switch. Turning it off closes every open room within a second, and nobody can start or join one until it's back on. The settings below it, apart from SyncPlay relay for Roku, only show while it's ticked
Let hosts turn on Everyone can control playback On Whether a host may let every guest play, pause and skip. Off keeps playback with the host
Chat On Chat in the room. Messages live in memory while the room is open and are never written to disk or to logs
Reactions On The six reactions people can send over the video
Party alerts On Lets users who turned on Party alerts in their app hear about new parties. See Party alerts
People per room 20 How many people fit in one room, from 2 to 100
SyncPlay relay for Roku On Jellyfin only. Roku can't open Jellyfin's socket on a server reached over https, so Moonbase passes SyncPlay messages on to it. Moonbase's own Watch Parties don't need it

Live rooms, under the settings, lists every open room: what it's watching (or "Nothing picked yet"), who hosts, how many people are in it, when it started, whether it's in the lobby, starting, playing or paused, and whether it has a PIN. Close room ends it for everyone. People opens the member list, where Remove takes a guest out. Refresh loads the list again. SyncPlay groups are Jellyfin's own and aren't listed here. Rooms live in memory, so a server restart ends them.

What each user decides

Each user's Watch Parties settings are in their app under Settings > Playback > Watch Parties, and they sync like the rest of Moonfin's settings. You can set defaults for them on the User defaults tab, under Playback > Watch Parties:

Default What it sets
Watch Parties The switch that turns Watch Parties on in the apps. It's the same setting that used to turn SyncPlay on and off, so a default you set for SyncPlay carries over. The apps have it on unless you set it
Start Parties With Jellyfin only. Whether Start a watch party makes a Watch Party (Moonbase) or a SyncPlay group. Rooms of both kinds show up in the apps either way. The apps start Watch Parties unless you set it
Show Chat Over the Video Whether new chat messages show over the video for a few seconds. On in the apps unless you set it
Party Alerts Whether the user hears about new parties. Off in the apps unless you set it

Like every default, these only reach users who haven't saved their own choice yet. Apply Defaults To Users on the Actions tab pushes them onto everyone else, see Admin Guide. Moonfin for Android, Apple, Windows and Linux used to start with SyncPlay off and saved that to the server, so people who signed in before Watch Parties may find them off. They can turn them on in the app, or you can set the Watch Parties default to Yes and apply it.

Who can see a room

A room only shows to users who can play what it's watching, by their library access and parental limits, and only they can join it. Rooms with nothing picked yet show to everyone. When the host picks something a member can't play, that member stays in the room and sits that one out.

  • Each user can host one room at a time. Starting another one closes the first.
  • A host can put a Room PIN of 4 to 8 digits on a room. After five wrong PINs in a minute, that person has to wait. PINs are kept salted and hashed, in memory only.
  • When the host leaves, the person who joined earliest takes over. Someone whose app stops checking in for two minutes is taken out of the room, and a room closes once the last person leaves.
  • The server holds up to 200 rooms at once.

Chat, PINs and room tokens are never written to the logs.

Invite links

Every room has a six-character code, which the apps show as K7Q 29M, and an invite link such as https://jellyfin.example.com/Moonfin/Party/K7Q29M. Phones and computers copy the link, Android TV, Apple TV and the Samsung and LG apps show it as a QR code to scan with a phone, and Roku shows it as text under the code.

The link opens a small page on your server that needs no sign-in. It shows your server's name and address, an Open in Moonfin button, the code with Copy, and three steps for someone who doesn't have Moonfin yet. Open in Moonfin opens the Moonfin app on that device and joins the party, switching to your server first, or offering to add it when the app doesn't have it yet. Where the button can't open an app, such as on a TV, people type the code into Join with a code instead. Every app takes the whole link there too.

The page never looks the code up, so it doesn't show what's playing, who hosts or who's in the room. Pasted into a chat app, the link shows a preview card titled "Join a watch party", with "Open in Moonfin to join. Room code K7Q 29M." under it.

Which address the link uses

Moonbase builds each invite link from the first of these it finds:

  1. Public Server URL on the Web Client tab, under Connecting to this server. Seerr uses the same setting for its notifications.
  2. On Jellyfin, the published server URL from Jellyfin's own networking settings, preferring the entry for all or external clients. On Emby, the external domain from Emby's network settings, with its public port.
  3. The address the person's app used to reach the server. Behind a reverse proxy, the X-Forwarded-Proto and X-Forwarded-Host headers are honored.

So with none of the first two set, someone at home who signed in with http://192.168.1.10:8096 sends an invite that friends outside the house can't open. Set one of them to the address people use from outside, such as https://jellyfin.example.com.

Behind a reverse proxy, /Moonfin/Party/ has to be forwarded along with the rest of /Moonfin/, since it serves the page and its preview image. See Reverse Proxy and Seerr.

Party alerts

The first time a room gets something to watch, Moonbase sends "Maya started a watch party", with the title and how many people are in the lobby. It goes to every user who:

  • turned on Party alerts in their app, which is off until they do unless you set a default,
  • can play what the room picked,
  • isn't in the room already.

Each host sets off at most one alert every 10 minutes.

On Jellyfin and Emby the alert is a push notification on phones and tablets, and tapping it opens the party. Moonfin apps that are open also look for new rooms every minute while Home is showing and show their own banner. On TVs it never takes focus, and the room moves to the front of the Watch Parties row on Home.

Turning off Party alerts on this tab stops the push notifications and the banners in every app except Roku, where the user's own Party alerts switch decides.

If push works for Seerr but not for party alerts, check that the user turned on Party alerts. If push never arrives on an Android phone at all, see Common Problems.

Plex

Moonbase for Plex hosts Watch Parties too, with the same Watch Parties tab and defaults on its admin page, except Start Parties With, since Plex has no SyncPlay.

  • Who can see and join a room is checked with Plex Media Server, using each person's own access.
  • Moonbase for Plex doesn't send party alerts as pushes, so they only show as banners in apps that are open.
  • Invite links always use the address the app reached Moonbase for Plex at. Port 32500 shouldn't be open to the internet, so for friends outside your home, put Moonbase for Plex behind a reverse proxy with HTTPS. See Installation.

Troubleshooting

"Watch Parties need Moonbase on this server." The app couldn't reach Moonbase, or the Moonbase it found is too old for Watch Parties. Update Moonbase and restart the server. On Plex, check that the app can reach Moonbase for Plex, see Installation.

A room doesn't show up for someone. They can't play what the room is watching, or Watch Parties are off in their app under Settings > Playback > Watch Parties.

Friends outside the house can't open the invite link. The link uses a local address. See Which address the link uses.

A host can't turn on Everyone can control playback. Let hosts turn on Everyone can control playback is off on this tab.

Party alerts never arrive. The user has to turn on Party alerts in their app, and it has to be on here too. Push only reaches phones and tablets. On Android, see Common Problems.

The routes are listed in the API Reference.

Clone this wiki locally