Enjoy Plex with your friends. In Sync. Together.
Go to file
Travis Shivers 77d1306bdc build(lint): use lint-staged to fix staged lint issues 2020-08-30 18:16:31 -05:00
.github ci(lint): add extra -- to properly pass argument 2020-08-30 00:05:00 -05:00
config fix(socketserver): use local server by default 2020-08-27 20:31:31 -05:00
public fix(logo): put logo in public to allow static link in servers 2020-08-27 20:22:55 -05:00
src feat(links): link to proper github repo and commits/versions 2020-08-30 16:52:26 -05:00
.browserslistrc Lighten deps 2020-07-31 15:45:20 -05:00
.commitlintrc.js build(commitlint): add commitlint 2020-08-23 21:07:31 -05:00
.dockerignore build(lint): use lint-staged to fix staged lint issues 2020-08-30 18:16:31 -05:00
.editorconfig Initial vuecli conversion. Still much broken. 2020-05-25 17:12:22 -05:00
.eslintrc.js refactor(package): move dev dependendencies to proper place 2020-08-23 21:07:31 -05:00
.gitignore Dynamic runtime config 2020-07-21 16:28:48 -05:00
.huskyrc build(lint): use lint-staged to fix staged lint issues 2020-08-30 18:16:31 -05:00
.lintstagedrc build(lint): use lint-staged to fix staged lint issues 2020-08-30 18:16:31 -05:00
.releaserc build(release): add releaserc and syncloungeweb 2020-08-25 21:10:13 -05:00
.stylelintignore Add stylelint 2020-08-06 15:27:40 -05:00
.stylelintrc.js Add stylelint 2020-08-06 15:27:40 -05:00
.travis.yml Add stylelint 2020-08-06 15:27:40 -05:00
Dockerfile fix(version): pass version through to docker webapp build 2020-08-30 15:05:37 -05:00
Dockerfile.web fix(version): pass version through to docker webapp build 2020-08-30 15:05:37 -05:00
LICENSE Version 2.0.0 2018-07-20 14:31:44 +10:00
README.md docs: add discussion about this fork and differences to main 2020-08-27 20:40:19 -05:00
babel.config.js Fix webpack issues until we get webpack 5 2020-08-01 15:16:33 -05:00
package-lock.json build(lint): use lint-staged to fix staged lint issues 2020-08-30 18:16:31 -05:00
package.json build(lint): use lint-staged to fix staged lint issues 2020-08-30 18:16:31 -05:00
server.js build(docker): use bundled socket server 2020-08-23 21:07:31 -05:00
vue.config.js feat(background): use random background on create room and join pages 2020-08-26 21:48:30 -05:00

README.md

SyncLounge

Release Version Size Pulls License

This is a fork of https://github.com/samcm/synclounge with improved stability and features like direct stream and direct play support. Some of the configuration is different than the main version, so that documentation may not always apply here.

I run an instance of this version at https://synclounge.ttshivers.com which you are free to use.

Features over main version

- Simplified room creation and joining process
- Better web player (same as what Plex web uses)
	- Direct play and direct stream support
	- Native subtitle support
	- Skip next / previous controls to easily navigate episodes in a show
	- Better high bitrate support with no more "appendBuffer" errors
- Skip intro / auto skip intro
- Auto Host (Anyone can start playing new content rather than just the host)
- Sound / desktop notifications for chat
- Major rewrite / cleanup of sync logic

SyncLounge (Previously PlexTogether) is a tool to sync Plex content across multiple players in multiple locations.

How it works

SyncLounge aims to keep multiple viewing sessions in sync regardless of whether the clients are in the same room or across the globe. To do this SyncLounge utilizes a middle-man server to communicate between each of the SyncLounge clients. Users choose their Plex client, decide on a SyncLounge Server and Room name and join up. Your friends/family can do the same. Whoever joins the room first will become the host.

The host has complete control over a room. Commands they send to their client will be sent through to other people in the room (Play, Pause, Seek etc). If the host starts playing something different, SyncLounge will search all of your available Plex Media Servers for an equiavalent copy, even if it is not from the same Plex Media Server as the Host.

Features

  • Syncing between Plex Clients over the Internet
  • SyncLounge Player
    • Plays content directly within SyncLounge.
    • Built specifically for syncing.
  • Settings to tune SyncLounge to your environment
    • Client Polling Interval - Sets how frequently SyncLounge will poll the client for new information.
    • Sync Flexability - Sets the acceptable distance away from the host in milliseconds.
    • Sync method:
      • Clean seek - Seeks straight to where the host is.
      • Skip ahead - Seeks 10 seconds ahead, pauses and then resumes 10 seconds later.
    • Plex Media Server blocking - allows you to restrict the servers SyncLounge searches for content.
  • Autoplay content
    • SyncLounge will automatically search all of your available Plex Media Servers for content that is similar to the Host.
  • Plex Media Server Browsing - find, search and fling content to Plex Clients from within SyncLounge.
  • Metadata fetching from Plex Media Server
  • Chat to others in your room
  • Password locked rooms
  • Invite others via generated short link
  • Movies and TV Shows (Music not supported)

Screenshots

Head to the website

Supported Plex Clients

Theoretically, all Plex Clients that implement the Plex Client Protocol will work. As some clients have this implemented slightly differently, compability with SyncLounge may vary. If you have access to one of the untested clients please let us know so we can update our list below.

Some low powered clients may be hard to achieve a perfect sync with (for example: Raspberry Pi clients).

Unsupported

  • Plex Web Player (Chrome/Safari/Firefox)

Supported

  • Plex Media Player
  • Plex Home Theater
  • OpenPHT
  • Rasplex
  • Roku
  • Android
  • Nvidia Shield
  • iOS (iPhone & iPad)
  • AppleTV

Broken

  • Xbox One
  • Xbox 360
  • PS3
  • PS4

Documentation

This fork has diverged some from the main SyncLounge repository, so not all the documentation for it is applicable here.

Installation

By default, it listens on port 8088. All the paths are relative, so you can use a reverse proxy at any subdirectory or subdomain without any additional configuration to SyncLounge. In this version, the webapp and socket server are combined so you only need to proxy that one port if you are using a reverse proxy.

Docker

Using the Docker image is the easiest path because it works out of the box. You can get it running immediately by

docker pull ttshivers/synclounge
docker run -p 8080:8088 ttshivers/synclounge:latest

You can use environment variables to change any of the default configuration.

Linux (Without Docker)

Make sure you have git, nodejs, and npm installed. Then, clone and build the repository

git clone https://github.com/ttshivers/synclounge.git
cd synclounge
# Install dependencies
npm ci
npm run build

Once it's build, you can run it

./server.js

If you want to change any of the default configuration, you can either use environment variables with the same name, use command line arguments, or edit dist/config.json. If you rebuild, dist/config.json will be overwritten, so be aware.

Older Help

The FAQ, Self-Hosting, Development, Contributing, and other documentation has been move to docs.synclounge.tv! Head there for more information!

Contributors

samcm - Developer

gcordalis - User Interface

Brandz - Design

TheGrimmChester - Developer/Tester

MagicalCodeMonkey - Developer/Tester

Starbix - Docker Support

kg6jay - Tester

Contact

Discord Server

Twitter: SyncLounge

License

SyncLounge is licensed under MIT License. See the LICENSE.txt file. SyncLounge is in no way affiliated with Plex Inc.

Using Material Design libraries provided under CC-BY 4.0