diff --git a/search/search_index.json b/search/search_index.json index 1200048..039213e 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"\u00b6 Documentation Welcome to the SyncLounge Documentation! In the top navigation you will find useful links. Get started by checking out the Frequently Asked Questions !","title":"Docs Home"},{"location":"#_1","text":"Documentation Welcome to the SyncLounge Documentation! In the top navigation you will find useful links. Get started by checking out the Frequently Asked Questions !","title":""},{"location":"faq/","text":"FAQ \u00b6 General \u00b6 Do I need to have a Plex account to use SyncLounge? Why? \u00b6 Yes. SyncLounge uses your Plex account to fetch details about your Plex Clients and Media Servers to use within the app. Without this information, SyncLounge would be unable to play your selected media and sync with your friends and family. For security concerns, see the 'Security' section below. Do the other users in my room need access to my Plex Server? \u00b6 You don't have to share your Plex server if they have access to the same media on their own or another Plex server. If they don't have access to a Plex server with the same media, you will need to share your Plex server with them. What clients are supported? \u00b6 SyncLounge tries to maintain support as many clients as possible. However, changes to implementation on Plex's or the client's side can cause them to no longer work properly. Below are the supported clients and some known issues and solutions, where possible. If a solution doesn't work, an update to the Plex Client probably broke its compatibility. Also, due to the way some of the Plex clients have been made they can only operate using HTTP. If the site is using HTTPS and allows for HTTP use, like the hosted Synclounge does , then try that to see if it will work. Supported Clients \u00b6 Plex Media Player : The original Plex Media Player for Windows and MacOS is, as of writing this, still supported. Follow the link and scroll down to the newest to download. Plex Desktop app : You may encounter issues using this. Try the original Plex Media Player application above for better results. New Plex Player : If you are using the new Plex Player on a device, Plex changed the way it operates. Try changing back to the \"old player\" and see if it works better for you. Android based players (Roku, Android TV, Fire TV, etc.) : These players can't remote start media properly. Some have had success starting the media and pausing it, then having the host start the media. Plex Home Theater OpenPHT Rasplex iOS (iPhone & iPad) Unsupported or Broken Clients \u00b6 AppleTV : A recent update broken compatibility with SyncLounge Smart TVs Plex Web Player (Chrome/Safari/Firefox) Xbox Playstation How do I ...? \u00b6 If you are trying to figure out how to do something when using SyncLounge, check the how-to section of the documentation. This will show you how to change hosts, user Party Pausing, etc. If you are trying to figure out how to do something when running SyncLounge, check the how-to and Self-hosting sections. This will tell you how to setup and configure your servers. Common Issues \u00b6 I can't log in to SyncLounge \u00b6 This is most likely due to Popup Blocking or an Adblocker. If you press the \"Click me\" button and nothing happens, make sure that your browser isn't blocking popups for the site. If you get a new window with the Plex logo, but nothing else happens, make sure that you don't have an AdBlocker or other plugin that is interfering with Plex completing the OAuth request. My client isn't working! \u00b6 See What clients are supported? for information. Unable to connect to Plex Server \u00b6 When trying to connect to your server, if you get a message of \"Unable to connect\" \"Try disabling your adblocker\" it indicates that SyncLounge was unable to connect to the server properly. Here are known reasons why the connection may be blocked or not work properly: An adblocker, firewall, network configuration, ISP, or some other software on your computer is blocking the connection. The server owner's firewall, network configuration, ISP, or some other software is blocking the connection. Remote access is not enabled on the server or it isn't working properly. To enable remote access or to check if remote access is enabled succesfully, see the Plex's Remote Access article SyncLounge Player issues and errors \u00b6 Issue: The SyncLounge player is continually buffering Error Message: The quota has been exceeded Error Message: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers. Lower the bitrate (aka streaming quality) on the client. If you are using the SyncLounge Player, you can do this by clicking the settings cog in the upper-right of the player. Error Message: The media could not be loaded, either because the server or network failed or because the format is not supported Turn off force transcode by going to the menu in the top left > synclounge settings > force transcode Error Message: Failed to find a compatible copy of . If you have access to the content try manually playing it. SyncLounge is unable to retrieve information for the currently selected media on the server the user has access to. This is usually caused by the user not having access to the media that the host is playing. See Do the other users in my room need access to my Plex Server? for more information. Other Issues or Questions \u00b6 If any of the above don't answer your question or address your issue, see the How-to: Report an Issue page. Security \u00b6 Won't you have access to my username, password? \u00b6 No. SyncLounge uses Plex's OAuth to log in, so your username and password are never seen by SyncLounge. Won't you have access to my Plex Account? \u00b6 All details provided by Plex are stored client side (in your browser). Absolutely none of your confidential data is sent to our server. You can verify this by inspecting the Network tab within Chrome developer tools. If you would like, you can host SyncLounge yourself . What is sent then? \u00b6 When you've connected to a SyncLounge room, a few details are sent back and forth to the SyncLounge Server to enable syncing. The data sent contains the following: Plex Username Plex User Thumbnail URL Content playing title (Eg. Lord of the Rings: The Fellowship of the Ring) Current timestamp (Eg. 00:35:02) Maximum timestamp (Eg. 03:48:18) Host content ratingKey Host machineIdentifier Playerstate (Eg. paused, stopped, playing) Client response time (Ping time between you and your Plex Client) SL Server address, SL Server Room and SL Server Room Password are sent to the WebApp when you join a room to create shortened invite links. What about the public server provided by SyncLounge? Is my data safe? \u00b6 As noted above, SyncLounge gets none of your confidential data and we log absolutely nothing to disk. Data is kept within the room instance until you leave or the server restarts. We have enabled SSL on our public servers but if privacy is a concern for you we strongly suggest running your own server . Speaking of SSL, why isn't the site served over HTTPS? \u00b6 By default SyncLounge is served via HTTP. While we do offer HTTPS, doing so forces modern browsers in to blocking all HTTP connections. This effectively stops all communication with some Plex Clients that only operate using HTTP.","title":"FAQ"},{"location":"faq/#faq","text":"","title":"FAQ"},{"location":"faq/#general","text":"","title":"General"},{"location":"faq/#do-i-need-to-have-a-plex-account-to-use-synclounge-why","text":"Yes. SyncLounge uses your Plex account to fetch details about your Plex Clients and Media Servers to use within the app. Without this information, SyncLounge would be unable to play your selected media and sync with your friends and family. For security concerns, see the 'Security' section below.","title":"Do I need to have a Plex account to use SyncLounge? Why?"},{"location":"faq/#do-the-other-users-in-my-room-need-access-to-my-plex-server","text":"You don't have to share your Plex server if they have access to the same media on their own or another Plex server. If they don't have access to a Plex server with the same media, you will need to share your Plex server with them.","title":"Do the other users in my room need access to my Plex Server?"},{"location":"faq/#what-clients-are-supported","text":"SyncLounge tries to maintain support as many clients as possible. However, changes to implementation on Plex's or the client's side can cause them to no longer work properly. Below are the supported clients and some known issues and solutions, where possible. If a solution doesn't work, an update to the Plex Client probably broke its compatibility. Also, due to the way some of the Plex clients have been made they can only operate using HTTP. If the site is using HTTPS and allows for HTTP use, like the hosted Synclounge does , then try that to see if it will work.","title":"What clients are supported?"},{"location":"faq/#supported-clients","text":"Plex Media Player : The original Plex Media Player for Windows and MacOS is, as of writing this, still supported. Follow the link and scroll down to the newest to download. Plex Desktop app : You may encounter issues using this. Try the original Plex Media Player application above for better results. New Plex Player : If you are using the new Plex Player on a device, Plex changed the way it operates. Try changing back to the \"old player\" and see if it works better for you. Android based players (Roku, Android TV, Fire TV, etc.) : These players can't remote start media properly. Some have had success starting the media and pausing it, then having the host start the media. Plex Home Theater OpenPHT Rasplex iOS (iPhone & iPad)","title":"Supported Clients"},{"location":"faq/#unsupported-or-broken-clients","text":"AppleTV : A recent update broken compatibility with SyncLounge Smart TVs Plex Web Player (Chrome/Safari/Firefox) Xbox Playstation","title":"Unsupported or Broken Clients"},{"location":"faq/#how-do-i","text":"If you are trying to figure out how to do something when using SyncLounge, check the how-to section of the documentation. This will show you how to change hosts, user Party Pausing, etc. If you are trying to figure out how to do something when running SyncLounge, check the how-to and Self-hosting sections. This will tell you how to setup and configure your servers.","title":"How do I ...?"},{"location":"faq/#common-issues","text":"","title":"Common Issues"},{"location":"faq/#i-cant-log-in-to-synclounge","text":"This is most likely due to Popup Blocking or an Adblocker. If you press the \"Click me\" button and nothing happens, make sure that your browser isn't blocking popups for the site. If you get a new window with the Plex logo, but nothing else happens, make sure that you don't have an AdBlocker or other plugin that is interfering with Plex completing the OAuth request.","title":"I can't log in to SyncLounge"},{"location":"faq/#my-client-isnt-working","text":"See What clients are supported? for information.","title":"My client isn't working!"},{"location":"faq/#unable-to-connect-to-plex-server","text":"When trying to connect to your server, if you get a message of \"Unable to connect\" \"Try disabling your adblocker\" it indicates that SyncLounge was unable to connect to the server properly. Here are known reasons why the connection may be blocked or not work properly: An adblocker, firewall, network configuration, ISP, or some other software on your computer is blocking the connection. The server owner's firewall, network configuration, ISP, or some other software is blocking the connection. Remote access is not enabled on the server or it isn't working properly. To enable remote access or to check if remote access is enabled succesfully, see the Plex's Remote Access article","title":"Unable to connect to Plex Server"},{"location":"faq/#synclounge-player-issues-and-errors","text":"Issue: The SyncLounge player is continually buffering Error Message: The quota has been exceeded Error Message: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers. Lower the bitrate (aka streaming quality) on the client. If you are using the SyncLounge Player, you can do this by clicking the settings cog in the upper-right of the player. Error Message: The media could not be loaded, either because the server or network failed or because the format is not supported Turn off force transcode by going to the menu in the top left > synclounge settings > force transcode Error Message: Failed to find a compatible copy of . If you have access to the content try manually playing it. SyncLounge is unable to retrieve information for the currently selected media on the server the user has access to. This is usually caused by the user not having access to the media that the host is playing. See Do the other users in my room need access to my Plex Server? for more information.","title":"SyncLounge Player issues and errors"},{"location":"faq/#other-issues-or-questions","text":"If any of the above don't answer your question or address your issue, see the How-to: Report an Issue page.","title":"Other Issues or Questions"},{"location":"faq/#security","text":"","title":"Security"},{"location":"faq/#wont-you-have-access-to-my-username-password","text":"No. SyncLounge uses Plex's OAuth to log in, so your username and password are never seen by SyncLounge.","title":"Won't you have access to my username, password?"},{"location":"faq/#wont-you-have-access-to-my-plex-account","text":"All details provided by Plex are stored client side (in your browser). Absolutely none of your confidential data is sent to our server. You can verify this by inspecting the Network tab within Chrome developer tools. If you would like, you can host SyncLounge yourself .","title":"Won't you have access to my Plex Account?"},{"location":"faq/#what-is-sent-then","text":"When you've connected to a SyncLounge room, a few details are sent back and forth to the SyncLounge Server to enable syncing. The data sent contains the following: Plex Username Plex User Thumbnail URL Content playing title (Eg. Lord of the Rings: The Fellowship of the Ring) Current timestamp (Eg. 00:35:02) Maximum timestamp (Eg. 03:48:18) Host content ratingKey Host machineIdentifier Playerstate (Eg. paused, stopped, playing) Client response time (Ping time between you and your Plex Client) SL Server address, SL Server Room and SL Server Room Password are sent to the WebApp when you join a room to create shortened invite links.","title":"What is sent then?"},{"location":"faq/#what-about-the-public-server-provided-by-synclounge-is-my-data-safe","text":"As noted above, SyncLounge gets none of your confidential data and we log absolutely nothing to disk. Data is kept within the room instance until you leave or the server restarts. We have enabled SSL on our public servers but if privacy is a concern for you we strongly suggest running your own server .","title":"What about the public server provided by SyncLounge? Is my data safe?"},{"location":"faq/#speaking-of-ssl-why-isnt-the-site-served-over-https","text":"By default SyncLounge is served via HTTP. While we do offer HTTPS, doing so forces modern browsers in to blocking all HTTP connections. This effectively stops all communication with some Plex Clients that only operate using HTTP.","title":"Speaking of SSL, why isn't the site served over HTTPS?"},{"location":"contributing/contributing/","text":"Contributing \u00b6 Contributions to SyncLounge are welcome and there are a few ways to contribute! Donating You can help SyncLounge by donating . All donations to SyncLounge go directly towards running the SyncLounge public servers and the continued development of the application. Documentation Help SyncLounge by updating this documentation! You can get started by reading the Documenation Guidelines Development Interested in getting your hands dirty? Head to the Developing section to get started!","title":"Contributing"},{"location":"contributing/contributing/#contributing","text":"Contributions to SyncLounge are welcome and there are a few ways to contribute! Donating You can help SyncLounge by donating . All donations to SyncLounge go directly towards running the SyncLounge public servers and the continued development of the application. Documentation Help SyncLounge by updating this documentation! You can get started by reading the Documenation Guidelines Development Interested in getting your hands dirty? Head to the Developing section to get started!","title":"Contributing"},{"location":"contributing/developing/","text":"Developing \u00b6 We'll gladly merge Pull requests if you're keen to get hands on with the development! Requirements \u00b6 Node v8.4.0+ Running \u00b6 Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install Run the development server: npm run dev Once Webpack has finished compiling, navigate to http://localhost:8080 in your web browser. Notes: Hot reload is enabled! It is suggested to install Vue.js Devtools Chrome Extension Firefox Addon If you use VS Code, see VueJS's Debugging in VS Code","title":"Developing"},{"location":"contributing/developing/#developing","text":"We'll gladly merge Pull requests if you're keen to get hands on with the development!","title":"Developing"},{"location":"contributing/developing/#requirements","text":"Node v8.4.0+","title":"Requirements"},{"location":"contributing/developing/#running","text":"Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install Run the development server: npm run dev Once Webpack has finished compiling, navigate to http://localhost:8080 in your web browser. Notes: Hot reload is enabled! It is suggested to install Vue.js Devtools Chrome Extension Firefox Addon If you use VS Code, see VueJS's Debugging in VS Code","title":"Running"},{"location":"contributing/documentation-guidelines/","text":"Documentation Guidelines \u00b6 Almost all of the pages in this documentation are written in markdown and conform to the rules of markdownlint . You can easily make edits to existing pages by clicking the Pencil icon to the right of the page's header. If you contribute to the documentation, make sure that your edits pass linting which will automatically occur once you submit you changes. When creating documentation, please try to do the following: Follow logical groupings for sections and pages. E.g. - All documentation for How-tos is under docs/how-tos/ Place images in the docs/img/ following the same logical groupings as above. E.g. - All images for How-tos are under docs/img/how-tos If you run into any linting issues, you may find a full list of linting rules, and examples, in the markdownlint repository Highlights: Heading levels should only increment by one level at a time. No hard tabs. All indentation should use spaces and be consistent. There should be no more than 1 blank line between text or elements. Unordered lists elements should start with - . Ordered list should all start with 1. regardless of the order. Markdown will handle the proper numbering sequence when rendering. Headings, lists, and code blocks (possibly more) should be surrounded by blank lines. Images should have alternate text (alt text). Files should end with a blank line. Disabled rules: Line length No Inline HTML First line in file should be a top level heading","title":"Documetation Guidelines"},{"location":"contributing/documentation-guidelines/#documentation-guidelines","text":"Almost all of the pages in this documentation are written in markdown and conform to the rules of markdownlint . You can easily make edits to existing pages by clicking the Pencil icon to the right of the page's header. If you contribute to the documentation, make sure that your edits pass linting which will automatically occur once you submit you changes. When creating documentation, please try to do the following: Follow logical groupings for sections and pages. E.g. - All documentation for How-tos is under docs/how-tos/ Place images in the docs/img/ following the same logical groupings as above. E.g. - All images for How-tos are under docs/img/how-tos If you run into any linting issues, you may find a full list of linting rules, and examples, in the markdownlint repository Highlights: Heading levels should only increment by one level at a time. No hard tabs. All indentation should use spaces and be consistent. There should be no more than 1 blank line between text or elements. Unordered lists elements should start with - . Ordered list should all start with 1. regardless of the order. Markdown will handle the proper numbering sequence when rendering. Headings, lists, and code blocks (possibly more) should be surrounded by blank lines. Images should have alternate text (alt text). Files should end with a blank line. Disabled rules: Line length No Inline HTML First line in file should be a top level heading","title":"Documentation Guidelines"},{"location":"contributing/donating/","text":"Donating \u00b6 How to donate: PayPal Cryptocurrency: ETH: 0xC886a3b94867AC12901220BBcbFD407e60E009A5 LTC: LQkfMbcFGQgMZWw13hbzbYkRkSM6n1fZjE BTC: 3Q7wZnUdJMQi53eH3dErms9Tno7VGmTHZL BCH: 1K3ULWzW9dLyGbtpnNqUysHuj1suZFXtx4 If you make a donation, stop by the Discord and message samcm#2715 to get your Donator role. Thank you!","title":"Donating"},{"location":"contributing/donating/#donating","text":"How to donate: PayPal Cryptocurrency: ETH: 0xC886a3b94867AC12901220BBcbFD407e60E009A5 LTC: LQkfMbcFGQgMZWw13hbzbYkRkSM6n1fZjE BTC: 3Q7wZnUdJMQi53eH3dErms9Tno7VGmTHZL BCH: 1K3ULWzW9dLyGbtpnNqUysHuj1suZFXtx4 If you make a donation, stop by the Discord and message samcm#2715 to get your Donator role. Thank you!","title":"Donating"},{"location":"how-tos/how-tos/","text":"How-tos \u00b6 Use the navigation to the left to find how-tos of interest.","title":"How-to Home"},{"location":"how-tos/how-tos/#how-tos","text":"Use the navigation to the left to find how-tos of interest.","title":"How-tos"},{"location":"how-tos/report-an-issue/","text":"Report an Issue \u00b6 Check/search the Issue Tracker and Discord to see if your issue has been reported/resolved already. If not: Make sure that you have read through the FAQ . Answers to many common issues can be found there. If you are self-hosting, make sure that you have read through all of the Self-Hosting documentation . It is preferred that issues are reported on the Issue Tracker and then raise it on Discord . When reporting an issues, please try to be as detailed as possible. If needed, you can generate logs from your client device (player). Information can be found in the troubleshooting section of the How-tos. If you aren't going to report the issue on the Issue Tracker , copy/paste and complete the following into the Issues channel in Discord: **Web App** You can remove this section if your issue isn't related to the Web App __System Details__ - Operating System: - Web Browser name and version: __Plex Media Server details__ - Version: - Operating System (Windows/Linux/Mac): - Running in Docker? (Yes/No): - Location (Local/Remote): - Remote Access Enabled (Yes/No)?: __Plex Client details__ - Name: - Version: - Network connection (Wired/Wifi): - Platform: **Self-Hosting** You can remove this section if your issue isn't related to Self-Hosting __System Details__ - Operating System: __SyncLounge Details__ - Running in Docker? (Yes/No): - Using a Reverse Proxy (Yes/No): If Yes, which Reverse Proxy (Nginx, Apache, Caddy, etc.): **Issue Details** __To Reproduce__ Steps to reproduce the behavior: - Go to '...' - Click on '....' - Scroll down to '....' - See error __Describe your issues(s)__ Please describe your issues below:","title":"Report an Issue"},{"location":"how-tos/report-an-issue/#report-an-issue","text":"Check/search the Issue Tracker and Discord to see if your issue has been reported/resolved already. If not: Make sure that you have read through the FAQ . Answers to many common issues can be found there. If you are self-hosting, make sure that you have read through all of the Self-Hosting documentation . It is preferred that issues are reported on the Issue Tracker and then raise it on Discord . When reporting an issues, please try to be as detailed as possible. If needed, you can generate logs from your client device (player). Information can be found in the troubleshooting section of the How-tos. If you aren't going to report the issue on the Issue Tracker , copy/paste and complete the following into the Issues channel in Discord: **Web App** You can remove this section if your issue isn't related to the Web App __System Details__ - Operating System: - Web Browser name and version: __Plex Media Server details__ - Version: - Operating System (Windows/Linux/Mac): - Running in Docker? (Yes/No): - Location (Local/Remote): - Remote Access Enabled (Yes/No)?: __Plex Client details__ - Name: - Version: - Network connection (Wired/Wifi): - Platform: **Self-Hosting** You can remove this section if your issue isn't related to Self-Hosting __System Details__ - Operating System: __SyncLounge Details__ - Running in Docker? (Yes/No): - Using a Reverse Proxy (Yes/No): If Yes, which Reverse Proxy (Nginx, Apache, Caddy, etc.): **Issue Details** __To Reproduce__ Steps to reproduce the behavior: - Go to '...' - Click on '....' - Scroll down to '....' - See error __Describe your issues(s)__ Please describe your issues below:","title":"Report an Issue"},{"location":"how-tos/app/change-host/","text":"Change the host of a room \u00b6 The host controls what video is watched and if it is playing or paused. If you accidentally make someone the host, you'll have ask them to set you to be host again. To make another user the host, you can do either of the following: Double-click the user's avatar Use the menu to the right of their name","title":"Change the Host"},{"location":"how-tos/app/change-host/#change-the-host-of-a-room","text":"The host controls what video is watched and if it is playing or paused. If you accidentally make someone the host, you'll have ask them to set you to be host again. To make another user the host, you can do either of the following: Double-click the user's avatar Use the menu to the right of their name","title":"Change the host of a room"},{"location":"how-tos/app/party-pausing/","text":"Party Pausing \u00b6 The host can enable or disable Party Pausing using the toggle at the top of the User list. Regardless of if party pausing is enabled, the host can always pause or play a video using the button on the player (bottom-left). If Party Pausing is enabled, the guests will see the play/pause button at the top of the User list. This button will allow them to pause/play the video for everyone in the room.","title":"Party Pausing"},{"location":"how-tos/app/party-pausing/#party-pausing","text":"The host can enable or disable Party Pausing using the toggle at the top of the User list. Regardless of if party pausing is enabled, the host can always pause or play a video using the button on the player (bottom-left). If Party Pausing is enabled, the guests will see the play/pause button at the top of the User list. This button will allow them to pause/play the video for everyone in the room.","title":"Party Pausing"},{"location":"self-hosted/docker/","text":"Running with Docker \u00b6 There are two containers for running SyncLounge using Docker: LinuxServer.io's container and Starbix's container. Linuxserver.io's container \u00b6 The Linuxserver.io container for SyncLounge is located at https://hub.docker.com/r/linuxserver/synclounge and full documentation can be found there. If you are running linux, DockSTARTer supports this container and makes it quick and easy to get up and running with Docker. DockSTARTer SyncLounge documentation will help you get set up. Even if you aren't using DockSTARTer, there is some information under the Advanced that may be useful. Starbix's container \u00b6 The original Docker container for SyncLounge can be found on Docker Hub made by Starbix . Note: If you have issues with the ENV variables in Settings , trying using the argument syntax instead for the environment variable syntax. E.g. - webroot instead of WEB_ROOT The following tags are available: latest / alpine: webapp and server based on alpine server: only server based on alpine dev: development version of webapp and server based on alpine nginx: latest + nginx reverse proxy To use the latest docker run \\ --name=synclounge \\ -p 8088:8088 \\ -p 8089:8089 \\ -e DOMAIN=example.com \\ starbix/synclounge To use a tagged version: docker run \\ --name=plextogether_nginx \\ -p 80:80 \\ -e DOMAIN=example.com \\ starbix/synclounge:TAG If you are running DockSTARTer , you can run this container by using overrides to add SyncLounge. Here is a sample override file: version: \"3.4\" services: synclounge: image: starbix/synclounge container_name: synclounge environment: - DOMAIN=synclounge.domain.tld logging: driver: json-file options: max-file: ${DOCKERLOGGING_MAXFILE} max-size: ${DOCKERLOGGING_MAXSIZE} ports: - 8088:8088 - 8089:8089 restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - ${DOCKERCONFDIR}/synclounge/settings.json:/opt/synclounge/settings.json","title":"Running with Docker"},{"location":"self-hosted/docker/#running-with-docker","text":"There are two containers for running SyncLounge using Docker: LinuxServer.io's container and Starbix's container.","title":"Running with Docker"},{"location":"self-hosted/docker/#linuxserverios-container","text":"The Linuxserver.io container for SyncLounge is located at https://hub.docker.com/r/linuxserver/synclounge and full documentation can be found there. If you are running linux, DockSTARTer supports this container and makes it quick and easy to get up and running with Docker. DockSTARTer SyncLounge documentation will help you get set up. Even if you aren't using DockSTARTer, there is some information under the Advanced that may be useful.","title":"Linuxserver.io's container"},{"location":"self-hosted/docker/#starbixs-container","text":"The original Docker container for SyncLounge can be found on Docker Hub made by Starbix . Note: If you have issues with the ENV variables in Settings , trying using the argument syntax instead for the environment variable syntax. E.g. - webroot instead of WEB_ROOT The following tags are available: latest / alpine: webapp and server based on alpine server: only server based on alpine dev: development version of webapp and server based on alpine nginx: latest + nginx reverse proxy To use the latest docker run \\ --name=synclounge \\ -p 8088:8088 \\ -p 8089:8089 \\ -e DOMAIN=example.com \\ starbix/synclounge To use a tagged version: docker run \\ --name=plextogether_nginx \\ -p 80:80 \\ -e DOMAIN=example.com \\ starbix/synclounge:TAG If you are running DockSTARTer , you can run this container by using overrides to add SyncLounge. Here is a sample override file: version: \"3.4\" services: synclounge: image: starbix/synclounge container_name: synclounge environment: - DOMAIN=synclounge.domain.tld logging: driver: json-file options: max-file: ${DOCKERLOGGING_MAXFILE} max-size: ${DOCKERLOGGING_MAXSIZE} ports: - 8088:8088 - 8089:8089 restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - ${DOCKERCONFDIR}/synclounge/settings.json:/opt/synclounge/settings.json","title":"Starbix's container"},{"location":"self-hosted/getting-started/","text":"Getting Started \u00b6 Prerequisites \u00b6 An understanding of, or willingness to learn, some basic tech stuff A computer to run these applications However you decide to run SyncLounge yourself, to run the webapp you need to set the Access URL using one of these methods: In settings.json Via argument. E.g. - node webapp.js --accessUrl= Environment Variable All of the variables and what they do can be found on the Settings page. Issues \u00b6 If you encounter any issues setting up SyncLounge, see the Report an Issue page. Running \u00b6 Docker \u00b6 The recommended way of self-hosting SyncLounge is Running with Docker . Docker is an application that runs software in containers making it easier to get applications running. You can learn more by going to Docker's website . Locally \u00b6 You may also run it directly on a machine using a local install .","title":"Getting Started"},{"location":"self-hosted/getting-started/#getting-started","text":"","title":"Getting Started"},{"location":"self-hosted/getting-started/#prerequisites","text":"An understanding of, or willingness to learn, some basic tech stuff A computer to run these applications However you decide to run SyncLounge yourself, to run the webapp you need to set the Access URL using one of these methods: In settings.json Via argument. E.g. - node webapp.js --accessUrl= Environment Variable All of the variables and what they do can be found on the Settings page.","title":"Prerequisites"},{"location":"self-hosted/getting-started/#issues","text":"If you encounter any issues setting up SyncLounge, see the Report an Issue page.","title":"Issues"},{"location":"self-hosted/getting-started/#running","text":"","title":"Running"},{"location":"self-hosted/getting-started/#docker","text":"The recommended way of self-hosting SyncLounge is Running with Docker . Docker is an application that runs software in containers making it easier to get applications running. You can learn more by going to Docker's website .","title":"Docker"},{"location":"self-hosted/getting-started/#locally","text":"You may also run it directly on a machine using a local install .","title":"Locally"},{"location":"self-hosted/linux/","text":"joecot made this awesome how-to for linux! The original gist can be found here This is a quick howto for self-hosting SyncLounge, a useful tool for hosting watch parties for your Plex server, on Linux natively. If you just want to host a plex party, you can use the public app.synclounge.tv servers. If you want to use Docker instead of mucking about with Node, see Running with Docker . This is for running the NodeJS yourself. You don't need programming experience to set SyncLounge up, but without a passable experience configuring linux, you're probably better off using synclounge.tv instead. Server Pre-Reqs \u00b6 Linux : These docs assume a debian/ubuntu distro, but it should be easy enough to install packages on the distro of your choice. nodejs should run on Windows, and feel free to write a different guide for that. A domain pointed at your server in DNS. Here I'll be using synclounge.yourdomain.com as the example domain, but whichever one you use should point at your server. You could also just use your server's public IP if you don't have a domain nginx or another comparable web server. I prefer nginx. Any web server that works for reverse proxying (including web sockets!) will be fine, but I'm only giving config for nginx, since nginx also handles web sockets well especially. Feel free to hit me up with a working apache2 or similar config git To check out the synclounge code. If you're running ubuntu/debian, this is as easy as: sudo apt-get install git nodejs and npm with Node at least v8.4.0. Preferred method is probably using nvm (node version manager), which will install a local version of node in your home directory. Here's a guide for NVM installation. You can use the distro package version most likely, or at least find a repo or PPA for them. Here's a sample Ubuntu guide. Note that if using packages, you'll need to use sudo when we install global npm packages. Either way, run, node -v and npm -v to confirm you have them. Note : While you can run synclounge over https with an ssl certificate, I'm not going to do that here. You could easily use https instead of http in your URL, and setup your ssl certificate in your web server config. But unless you setup your plex server using https as well, connecting to your plex will fail. Setting up SyncLounge Code Directory \u00b6 Check out the synclounge project: git clone https://github.com/samcm/synclounge enter directory: cd synclounge install node libraries using npm: npm install settings.json file \u00b6 See the Settings page for more detail on each of the settings. While you can potentially set these using command line arguments or environmental variables, editing the settings.json file directly is by far the most reliable way. Here's an example settings.json file: { \"webroot\":\"\", \"serverroot\":\"\", \"accessUrl\":\"http://synclounge.yourdomain.com\", \"webapp_port\":8280, \"server_port\":8281, \"authentication\":{ \"mechanism\":\"plex\", \"type\":[ \"server\" ], \"authorized\":[ \"YOUR_PLEX_MACHINE_ID\" ] }, \"servers\":[ { \"name\":\"Your Super Cool Plex Party Server\", \"location\":\"Space, the Final Frontier\", \"url\":\"http://synclounge.yourdomain.com/slserver\", \"image\":\"\" } ], \"autoJoin\":false, \"autoJoinServer\":\"\", \"autoJoinRoom\":\"\", \"autoJoinPassword\":\"\" } I've made some opinionated assumptions for simplicity here, and again read the whole SyncLounge documentation for more details, but the highlights are: accessUrl - Set this to the url you want synclounge to be at, and replace http://synclounge.yourdomain.com with that wherever you see it. - Server ports *. These can be whatever you want. I've changed them from the default 8080 and 8081 since they're most commonly used. If you change these just keep them in mind when we do nginx/apache setup webapp_port - The local port the web frontend will be served at. server_port - The local port the backend will be served at. authentication - sets who is allowed to use your SyncLounge. I have this set so that if someone has access to your plex server, they have access to your synclounge server (presuming you're trying to stream from your own plex server library!) If you want to do that, set YOUR_PLEX_MACHINE_ID to your server ID. If you launch plex.tv and go to Settings -> Manage -> Libraries, you can see your server ID in the URL. It'll be the XXXX in https://app.plex.tv/desktop#!/settings/server/XXXX/manage/libraries . Put that hex code as your plex machine id. If you don't want to authenticate that users have access to your plex server, you can either remove the authentication part of the settings, or replace it with \"authentication\":{\"mechanism\":\"none\"}, HOWEVER , the user will still need to log in with their plex account, because SyncLounge opens videos via plex using their plex account. Leaving authentication as none just means they can log in to your SyncLounge without their user having been given shared access to your plex server. However, unless they have access to a different plex server with the exact same videos you're trying to play, SyncLounge won't work for them anyway. I'd say for 95% of use cases, you're trying to use SyncLounge with your own plex server you've shared with other people, so authenticating they have access to your plex server let's you know there's a problem when they go to sign in, as opposed to waiting til they get into the room with you and nothing will play for them. In 95% of cases, you want them to give you their plex account email address, you want to add them to sharing in your plex server (and them confirm it via email), and then you want to give them the SyncLounge invite link. If you fall into that case, leave the authentication as I described and add your machine id in. servers - I'm replacing the default server list with the custom server. If you want the other servers you can set this server object to customServer as shown in the official docs. The upside of replacing all the servers is your users can skip picking a server. Set the name, location, and url details here, and optionally a thumbnail which won't get shown if you only have one server anyway. Build SyncLounge web files \u00b6 Now that we have the settings.json setup, it's time to build the web frontend files. This is easy. Run: npm run build Then go get a drink or a snack, because it will take a minute. You may or may not need to re-run the build if you edit settings.json later, but probably not? I haven't tested that out. Run SyncLounge \u00b6 To Test \u00b6 This is just to test out that it's all working while you can see the console output. If you're a confident person you can just switch to the Production options. But you might want to try these if it's not working. You need to both run the SyncLounge web and server instances. You can do this is multiple ssh windows, but I suggest using screen . If you don't have screen installed, you can get it with sudo apt-get install screen . As a quick screen tutorial: List any existing screen sessions: screen -ls Open a new named screen session: screen -S YourName Send the screen session you're in to the background: Hold down the CTRL key, then press and release A, then D Resume a screen session running in the background: screen -r YourName So when running the server commands I suggest running screen -S sl-server to open a screen for that, then CTRL-A-D to get out of it, then screen -S sl-web to run the web commands. Then you can rejoin the screens with screen -r sl-web or screen -r sl-server . But I'm a guide writer, not a cop, so do whatever's easiest for you. To run the synclounge server, run: node server.js and leave it running. You'll see output like: Setting up with serverRoot of /slserver SyncLounge Server successfully started on port 8281 Connected users: 0 With whatever server port you set. To run the synclounge web files, run: node webapp.js and leave it running. You'll see it output your Settings and such, followed by: SyncLounge WebApp successfully started on port 8280 Access URL is http://synclounge.yourdomain.com With whatever url and web port you set Web Server Setup \u00b6 NGINX \u00b6 Here's a sample nginx site config (this is essentially the same as the one in the synclounge documentation): server { listen 80; server_name synclounge.yourdomain.com; # you can make a separate access log if you want, # or just leave it to the default nginx/access.log #access_log /var/log/nginx/synclounge.yourdomain.com_access.log; proxy_redirect off; proxy_buffering off; location / { include proxy_params; proxy_pass http://localhost:8280; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } location /slserver { include proxy_params; proxy_pass http://localhost:8281/slserver; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } } This should go in your /etc/nginx/sites-available/ directory, likely named synclounge.yourdomain.com.conf . Update the domain you're using in the config and the filename, and if you changed web or server ports in your synclounge config, change them in the location / and /slserver sections respectively. This also assumes you have a /etc/nginx/proxy_params file. If you don't, make one with: proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; Once you have the config setup how you want: Symlink it to sites-enabled: sudo ln -s /etc/nginx/sites-available/synclounge.yourdomain.com.conf /etc/nginx/sites-enabled/ Check your nginx config for errors: sudo nginx -t If everything looks good, reload nginx with your changes: sudo service nginx reload Then try going to your synclounge install in your browser! For \"Production\" (Serious Business Plex Watching) \u00b6 Once you've tested out running this and see it's working (or immediately if you're feeling lucky), you probably want this to just run in the background all the time, including starting up with your server. To do that we'll be using a node utility called pm2 To install pm2 run npm install -g pm2 to install it globally. If you're not running npm with nvm, you probably need to do sudo npm install -g pm2 If you're running the server or web files still from testing, stop them (just ctrl-c will do it). Then from the synclounge directory, we just need to run 2 commands: pm2 start webapp.js --name=sl-web pm2 start server.js --name=sl-server If you run pm2 list , you should see two processes running: \u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 id \u2502 name \u2502 namespace \u2502 version \u2502 mode \u2502 pid \u2502 uptime \u2502 \u21ba \u2502 status \u2502 cpu \u2502 mem \u2502 user \u2502 watching \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 2 \u2502 \u25c9 sl-server \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4521 \u2502 107m \u2502 0 \u2502 online \u2502 0.1% \u2502 17.2mb \u2502 joe \u2502 disabled \u2502 \u2502 1 \u2502 \u25c9 sl-web \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4548 \u2502 107m \u2502 2 \u2502 online \u2502 0.1% \u2502 12.8mb \u2502 joe \u2502 disabled \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 Now go try your synclounge site again and confirm it's still working. If it's not working, you can still see the output from the programs in the pm2 logs. look in ~/.pm2/logs/ for the output and error logs for each of your processes. If it's working, you probably want this to launch on startup now. To do that, first run pm2 save , which will save your 2 processes to run when pm2 starts up. Then call pm2 startup . pm2 will give you a command to run to add your user's pm2 to the server setup. It'll probably look something like this: sudo env PATH=$PATH:/home/user/.nvm/versions/node/v12.7.0/bin /home/user/.nvm/versions/node/v12.7.0/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user Run that, and now your pm2 will start with the server. That's all folks \u00b6 If something doesn't appear to work, check the output of the web or server terminal/log outputs, or your nginx access and error log, and ask on Discord .","title":"Running on Linux"},{"location":"self-hosted/linux/#server-pre-reqs","text":"Linux : These docs assume a debian/ubuntu distro, but it should be easy enough to install packages on the distro of your choice. nodejs should run on Windows, and feel free to write a different guide for that. A domain pointed at your server in DNS. Here I'll be using synclounge.yourdomain.com as the example domain, but whichever one you use should point at your server. You could also just use your server's public IP if you don't have a domain nginx or another comparable web server. I prefer nginx. Any web server that works for reverse proxying (including web sockets!) will be fine, but I'm only giving config for nginx, since nginx also handles web sockets well especially. Feel free to hit me up with a working apache2 or similar config git To check out the synclounge code. If you're running ubuntu/debian, this is as easy as: sudo apt-get install git nodejs and npm with Node at least v8.4.0. Preferred method is probably using nvm (node version manager), which will install a local version of node in your home directory. Here's a guide for NVM installation. You can use the distro package version most likely, or at least find a repo or PPA for them. Here's a sample Ubuntu guide. Note that if using packages, you'll need to use sudo when we install global npm packages. Either way, run, node -v and npm -v to confirm you have them. Note : While you can run synclounge over https with an ssl certificate, I'm not going to do that here. You could easily use https instead of http in your URL, and setup your ssl certificate in your web server config. But unless you setup your plex server using https as well, connecting to your plex will fail.","title":"Server Pre-Reqs"},{"location":"self-hosted/linux/#setting-up-synclounge-code-directory","text":"Check out the synclounge project: git clone https://github.com/samcm/synclounge enter directory: cd synclounge install node libraries using npm: npm install","title":"Setting up SyncLounge Code Directory"},{"location":"self-hosted/linux/#settingsjson-file","text":"See the Settings page for more detail on each of the settings. While you can potentially set these using command line arguments or environmental variables, editing the settings.json file directly is by far the most reliable way. Here's an example settings.json file: { \"webroot\":\"\", \"serverroot\":\"\", \"accessUrl\":\"http://synclounge.yourdomain.com\", \"webapp_port\":8280, \"server_port\":8281, \"authentication\":{ \"mechanism\":\"plex\", \"type\":[ \"server\" ], \"authorized\":[ \"YOUR_PLEX_MACHINE_ID\" ] }, \"servers\":[ { \"name\":\"Your Super Cool Plex Party Server\", \"location\":\"Space, the Final Frontier\", \"url\":\"http://synclounge.yourdomain.com/slserver\", \"image\":\"\" } ], \"autoJoin\":false, \"autoJoinServer\":\"\", \"autoJoinRoom\":\"\", \"autoJoinPassword\":\"\" } I've made some opinionated assumptions for simplicity here, and again read the whole SyncLounge documentation for more details, but the highlights are: accessUrl - Set this to the url you want synclounge to be at, and replace http://synclounge.yourdomain.com with that wherever you see it. - Server ports *. These can be whatever you want. I've changed them from the default 8080 and 8081 since they're most commonly used. If you change these just keep them in mind when we do nginx/apache setup webapp_port - The local port the web frontend will be served at. server_port - The local port the backend will be served at. authentication - sets who is allowed to use your SyncLounge. I have this set so that if someone has access to your plex server, they have access to your synclounge server (presuming you're trying to stream from your own plex server library!) If you want to do that, set YOUR_PLEX_MACHINE_ID to your server ID. If you launch plex.tv and go to Settings -> Manage -> Libraries, you can see your server ID in the URL. It'll be the XXXX in https://app.plex.tv/desktop#!/settings/server/XXXX/manage/libraries . Put that hex code as your plex machine id. If you don't want to authenticate that users have access to your plex server, you can either remove the authentication part of the settings, or replace it with \"authentication\":{\"mechanism\":\"none\"}, HOWEVER , the user will still need to log in with their plex account, because SyncLounge opens videos via plex using their plex account. Leaving authentication as none just means they can log in to your SyncLounge without their user having been given shared access to your plex server. However, unless they have access to a different plex server with the exact same videos you're trying to play, SyncLounge won't work for them anyway. I'd say for 95% of use cases, you're trying to use SyncLounge with your own plex server you've shared with other people, so authenticating they have access to your plex server let's you know there's a problem when they go to sign in, as opposed to waiting til they get into the room with you and nothing will play for them. In 95% of cases, you want them to give you their plex account email address, you want to add them to sharing in your plex server (and them confirm it via email), and then you want to give them the SyncLounge invite link. If you fall into that case, leave the authentication as I described and add your machine id in. servers - I'm replacing the default server list with the custom server. If you want the other servers you can set this server object to customServer as shown in the official docs. The upside of replacing all the servers is your users can skip picking a server. Set the name, location, and url details here, and optionally a thumbnail which won't get shown if you only have one server anyway.","title":"settings.json file"},{"location":"self-hosted/linux/#build-synclounge-web-files","text":"Now that we have the settings.json setup, it's time to build the web frontend files. This is easy. Run: npm run build Then go get a drink or a snack, because it will take a minute. You may or may not need to re-run the build if you edit settings.json later, but probably not? I haven't tested that out.","title":"Build SyncLounge web files"},{"location":"self-hosted/linux/#run-synclounge","text":"","title":"Run SyncLounge"},{"location":"self-hosted/linux/#to-test","text":"This is just to test out that it's all working while you can see the console output. If you're a confident person you can just switch to the Production options. But you might want to try these if it's not working. You need to both run the SyncLounge web and server instances. You can do this is multiple ssh windows, but I suggest using screen . If you don't have screen installed, you can get it with sudo apt-get install screen . As a quick screen tutorial: List any existing screen sessions: screen -ls Open a new named screen session: screen -S YourName Send the screen session you're in to the background: Hold down the CTRL key, then press and release A, then D Resume a screen session running in the background: screen -r YourName So when running the server commands I suggest running screen -S sl-server to open a screen for that, then CTRL-A-D to get out of it, then screen -S sl-web to run the web commands. Then you can rejoin the screens with screen -r sl-web or screen -r sl-server . But I'm a guide writer, not a cop, so do whatever's easiest for you. To run the synclounge server, run: node server.js and leave it running. You'll see output like: Setting up with serverRoot of /slserver SyncLounge Server successfully started on port 8281 Connected users: 0 With whatever server port you set. To run the synclounge web files, run: node webapp.js and leave it running. You'll see it output your Settings and such, followed by: SyncLounge WebApp successfully started on port 8280 Access URL is http://synclounge.yourdomain.com With whatever url and web port you set","title":"To Test"},{"location":"self-hosted/linux/#web-server-setup","text":"","title":"Web Server Setup"},{"location":"self-hosted/linux/#nginx","text":"Here's a sample nginx site config (this is essentially the same as the one in the synclounge documentation): server { listen 80; server_name synclounge.yourdomain.com; # you can make a separate access log if you want, # or just leave it to the default nginx/access.log #access_log /var/log/nginx/synclounge.yourdomain.com_access.log; proxy_redirect off; proxy_buffering off; location / { include proxy_params; proxy_pass http://localhost:8280; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } location /slserver { include proxy_params; proxy_pass http://localhost:8281/slserver; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } } This should go in your /etc/nginx/sites-available/ directory, likely named synclounge.yourdomain.com.conf . Update the domain you're using in the config and the filename, and if you changed web or server ports in your synclounge config, change them in the location / and /slserver sections respectively. This also assumes you have a /etc/nginx/proxy_params file. If you don't, make one with: proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; Once you have the config setup how you want: Symlink it to sites-enabled: sudo ln -s /etc/nginx/sites-available/synclounge.yourdomain.com.conf /etc/nginx/sites-enabled/ Check your nginx config for errors: sudo nginx -t If everything looks good, reload nginx with your changes: sudo service nginx reload Then try going to your synclounge install in your browser!","title":"NGINX"},{"location":"self-hosted/linux/#for-production-serious-business-plex-watching","text":"Once you've tested out running this and see it's working (or immediately if you're feeling lucky), you probably want this to just run in the background all the time, including starting up with your server. To do that we'll be using a node utility called pm2 To install pm2 run npm install -g pm2 to install it globally. If you're not running npm with nvm, you probably need to do sudo npm install -g pm2 If you're running the server or web files still from testing, stop them (just ctrl-c will do it). Then from the synclounge directory, we just need to run 2 commands: pm2 start webapp.js --name=sl-web pm2 start server.js --name=sl-server If you run pm2 list , you should see two processes running: \u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 id \u2502 name \u2502 namespace \u2502 version \u2502 mode \u2502 pid \u2502 uptime \u2502 \u21ba \u2502 status \u2502 cpu \u2502 mem \u2502 user \u2502 watching \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 2 \u2502 \u25c9 sl-server \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4521 \u2502 107m \u2502 0 \u2502 online \u2502 0.1% \u2502 17.2mb \u2502 joe \u2502 disabled \u2502 \u2502 1 \u2502 \u25c9 sl-web \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4548 \u2502 107m \u2502 2 \u2502 online \u2502 0.1% \u2502 12.8mb \u2502 joe \u2502 disabled \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 Now go try your synclounge site again and confirm it's still working. If it's not working, you can still see the output from the programs in the pm2 logs. look in ~/.pm2/logs/ for the output and error logs for each of your processes. If it's working, you probably want this to launch on startup now. To do that, first run pm2 save , which will save your 2 processes to run when pm2 starts up. Then call pm2 startup . pm2 will give you a command to run to add your user's pm2 to the server setup. It'll probably look something like this: sudo env PATH=$PATH:/home/user/.nvm/versions/node/v12.7.0/bin /home/user/.nvm/versions/node/v12.7.0/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user Run that, and now your pm2 will start with the server.","title":"For \"Production\" (Serious Business Plex Watching)"},{"location":"self-hosted/linux/#thats-all-folks","text":"If something doesn't appear to work, check the output of the web or server terminal/log outputs, or your nginx access and error log, and ask on Discord .","title":"That's all folks"},{"location":"self-hosted/locally/","text":"Running Locally \u00b6 Requirements \u00b6 Git Node v8.4.0+ First steps \u00b6 Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install Running the webapp \u00b6 Build the webapp: npm run build Notes: This must be done anytime you change the webroot setting Run the webapp using node webapp.js Don't forget that you need to set Access URL as described in Getting Started . The SL web app will be running at http://ip:8088/ or http://ip:8088/WEBROOT if you set webroot . Running the server \u00b6 Run the server using npm run server The SL server will be running at http://ip:8089/slserver .","title":"Running Locally"},{"location":"self-hosted/locally/#running-locally","text":"","title":"Running Locally"},{"location":"self-hosted/locally/#requirements","text":"Git Node v8.4.0+","title":"Requirements"},{"location":"self-hosted/locally/#first-steps","text":"Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install","title":"First steps"},{"location":"self-hosted/locally/#running-the-webapp","text":"Build the webapp: npm run build Notes: This must be done anytime you change the webroot setting Run the webapp using node webapp.js Don't forget that you need to set Access URL as described in Getting Started . The SL web app will be running at http://ip:8088/ or http://ip:8088/WEBROOT if you set webroot .","title":"Running the webapp"},{"location":"self-hosted/locally/#running-the-server","text":"Run the server using npm run server The SL server will be running at http://ip:8089/slserver .","title":"Running the server"},{"location":"self-hosted/reverse-proxy/","text":"Reverse Proxy \u00b6 If you want to host SyncLounge on your own domain and not having to give out your IP address, you will want to use a reverse proxy. There are many different options such as nginx, haproxy, traefik, etc. The following assume that you are running SyncLounge with default settings. If you have changed any of the default settings, like the port or root, you will want to modify the configurations provided here accordingly. Nginx \u00b6 If you are using the Let's Encrypt container by LinuxServer.io (LSIO) , you can use the provided configs found in LSIO's reverse proxy repo . If you aren't using LSIO's Let's Encrypt container , the configurations found in LSIO's reverse proxy repo for subdomain and subfolder configurations will still be helpful. NOTES: The subdomain conf assumes that you are running the webapp with the default webroot ( / ) and server with default serverroot ( /slserver ). The subfolder conf assumes that you are running the webapp with the webroot set to /slweb and server with default serverroot ( /slserver ). Both assume that you are using the container name synclounge and default ports. If you have changed any of the above, you will need to change the conf file you are using Apache \u00b6 Users have had luck with the following: Apache Subdomain \u00b6 #SyncLounge Server ProxyPass /slserver/socket.io http://:8089/slserver/socket.io/ ProxyPass /slserver http://:8089/slserver/ ProxyPassReverse /slserver http://:8089/slserver/ # SyncLounge Web ProxyPass / http://:8088/ ProxyPassReverse / http://:8088/ Apache Subfolder \u00b6 If you have a working subfolder created, please contribute! Caddy \u00b6 Caddy Subdomain \u00b6 This was provided by LostSoulfly in this comment . { gzip log logs/synclounge.access.log proxy / :8088 { except /socket.io except /slserver websocket transparent } proxy /slserver :8089 { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } proxy /socket.io :8089/slserver/socket.io/ { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } } Caddy 2 Subdomain \u00b6 { encode gzip log { output file } route /slserver/* { reverse_proxy :8089 } reverse_proxy :8088 } Caddy Subfolder \u00b6 If you have a working subfolder created, please contribute!","title":"Using a Reverse Proxy"},{"location":"self-hosted/reverse-proxy/#reverse-proxy","text":"If you want to host SyncLounge on your own domain and not having to give out your IP address, you will want to use a reverse proxy. There are many different options such as nginx, haproxy, traefik, etc. The following assume that you are running SyncLounge with default settings. If you have changed any of the default settings, like the port or root, you will want to modify the configurations provided here accordingly.","title":"Reverse Proxy"},{"location":"self-hosted/reverse-proxy/#nginx","text":"If you are using the Let's Encrypt container by LinuxServer.io (LSIO) , you can use the provided configs found in LSIO's reverse proxy repo . If you aren't using LSIO's Let's Encrypt container , the configurations found in LSIO's reverse proxy repo for subdomain and subfolder configurations will still be helpful. NOTES: The subdomain conf assumes that you are running the webapp with the default webroot ( / ) and server with default serverroot ( /slserver ). The subfolder conf assumes that you are running the webapp with the webroot set to /slweb and server with default serverroot ( /slserver ). Both assume that you are using the container name synclounge and default ports. If you have changed any of the above, you will need to change the conf file you are using","title":"Nginx"},{"location":"self-hosted/reverse-proxy/#apache","text":"Users have had luck with the following:","title":"Apache"},{"location":"self-hosted/reverse-proxy/#apache-subdomain","text":"#SyncLounge Server ProxyPass /slserver/socket.io http://:8089/slserver/socket.io/ ProxyPass /slserver http://:8089/slserver/ ProxyPassReverse /slserver http://:8089/slserver/ # SyncLounge Web ProxyPass / http://:8088/ ProxyPassReverse / http://:8088/","title":"Apache Subdomain"},{"location":"self-hosted/reverse-proxy/#apache-subfolder","text":"If you have a working subfolder created, please contribute!","title":"Apache Subfolder"},{"location":"self-hosted/reverse-proxy/#caddy","text":"","title":"Caddy"},{"location":"self-hosted/reverse-proxy/#caddy-subdomain","text":"This was provided by LostSoulfly in this comment . { gzip log logs/synclounge.access.log proxy / :8088 { except /socket.io except /slserver websocket transparent } proxy /slserver :8089 { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } proxy /socket.io :8089/slserver/socket.io/ { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } }","title":"Caddy Subdomain"},{"location":"self-hosted/reverse-proxy/#caddy-2-subdomain","text":" { encode gzip log { output file } route /slserver/* { reverse_proxy :8089 } reverse_proxy :8088 }","title":"Caddy 2 Subdomain"},{"location":"self-hosted/reverse-proxy/#caddy-subfolder","text":"If you have a working subfolder created, please contribute!","title":"Caddy Subfolder"},{"location":"self-hosted/settings/","text":"Settings \u00b6 The following can be used to change some of the settings in the application via command-line arguments, environment variables (ENV), or the settings.json file. Arguments are passed to the application by using --= when running the application. ENV variables are mostly for Docker but can be set locally on your system. The settings.json file is used by both the Server and Webapp. NOTE: Argument and ENV should be able to be used interchangeably. If you have issues with the ENV, use the argument value in its place. Server \u00b6 Argument ENV Description servers SERVERS Set your own servers list. See below for more information. Optional serverroot SERVER_ROOT Change the base URL of the server app. Ex - /server . Defaults to /slserver server_port SERVER_PORT Change the port the server app uses. Defaults to 8089 Webapp \u00b6 Argument ENV Description webroot WEB_ROOT Change the base URL of the web app. Ex - /lounge webapp_port WEB_PORT Change the port the web app uses. Defaults to 8088 accessUrl WEB_ACCESSURL Set the URL the web app uses for things like invites. Examples: http://IP:8088 http://mysynclounge.com If webroot is set http://IP:8088/ http://mysynclounge.com/ autoJoin AUTOJOIN_ENABLED Set to true to enable auto joining. Defaults to false autoJoinServer AUTOJOIN_SERVERURL Set this to the server URL you want the user to auto join. Required if auto join is enabled. Ex - http://mysynclounge.com/slserver autoJoinRoom AUTOJOIN_ROOM Set this to the room name in the server that you want the users to auto join. Optional autoJoinPassword AUTOJOIN_PASSWORD Set this to the room's password, if it has one. Optional authentication AUTHENTICATION Configure authentication for the server. See below for more information. Optional customServer CUSTOM_SERVER Override the custom server entry in the servers list. See below for more information. Optional Authentication \u00b6 To enable authentication, the following setting and format is used \"authentication\": { \"mechanism\": \"plex\", \"type\": [\"server\", \"user\"], \"authorized\": [ \"PLEX_SERVER_MACHINE_ID\", \"PLEX_USER_EMAIL\", \"PLEX_USER_NAME\", ] } Field Description mechanism Specifies how SyncLounge should authenticate a user. This is mostly for future-proofing to allow other authentication mechanisms to be provided. Values: plex - Authenticate against Plex Defaults to none type This determines how the mechanism provides authentication Values: server , user server checks against the plex server machine identifier ( PLEX_SERVER_MACHINE_ID ). If the user has access to a server matching any of the IDs in the authorized list, they will be granted access. See \"Get your Plex Server's Machine Identifier\" below for details. user checks against the user's email ( PLEX_USER_EMAIL ) or username ( PLEX_USER_NAME ). If either matches a value in the authorized list, they will be granted access. authorized This is a list of information for who is authorized, per the above setting. Get your Plex Server's Machine Identifier \u00b6 To get the Plex Server's Machine Identifier ( machineIdentifier ) for your server you will need to get your Plex Authentication Token and put this into your browser, replacing YourTokenGoesHere with your token: https://plex.tv/pms/servers.xml?includeHttps=1&X-Plex-Token=YourTokenGoesHere You should then see something like this: In the entry that starts with / . image Specifies the URL of the image to use. defaultRoom Specifies the name of the room to send the user to after clicking \"Connect\". Optional defaultPassword Specifies the password of the room, if needed. Optional Customize the Custom Server entry \u00b6 The Custom Server entry can be modified by adding this to your settings. This takes a single server object and will override the the custom server in the server list. \"customServer\": { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" } Customize the entire list \u00b6 The entire servers list can be modified with your own list of servers. If this setting is provided, it will ignore the customServer setting above. Also, if only one server is provided, it will automatically join it! \"servers\": [ { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://1.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" }, { \"name\": \"Custom Server 2\", \"location\": \"Custom Location\", \"url\": \"https://2.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-2.png\", \"defaultRoom\": \"DefaultRoom\" }, { \"name\": \"Custom Server 3\", \"location\": \"Custom Location\", \"url\": \"https://3.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-3.png\", \"defaultRoom\": \"DefaultRoom\", \"defaultPassword\": \"DefaultPassword123\" } ]","title":"Settings"},{"location":"self-hosted/settings/#settings","text":"The following can be used to change some of the settings in the application via command-line arguments, environment variables (ENV), or the settings.json file. Arguments are passed to the application by using --= when running the application. ENV variables are mostly for Docker but can be set locally on your system. The settings.json file is used by both the Server and Webapp. NOTE: Argument and ENV should be able to be used interchangeably. If you have issues with the ENV, use the argument value in its place.","title":"Settings"},{"location":"self-hosted/settings/#server","text":"Argument ENV Description servers SERVERS Set your own servers list. See below for more information. Optional serverroot SERVER_ROOT Change the base URL of the server app. Ex - /server . Defaults to /slserver server_port SERVER_PORT Change the port the server app uses. Defaults to 8089","title":"Server"},{"location":"self-hosted/settings/#webapp","text":"Argument ENV Description webroot WEB_ROOT Change the base URL of the web app. Ex - /lounge webapp_port WEB_PORT Change the port the web app uses. Defaults to 8088 accessUrl WEB_ACCESSURL Set the URL the web app uses for things like invites. Examples: http://IP:8088 http://mysynclounge.com If webroot is set http://IP:8088/ http://mysynclounge.com/ autoJoin AUTOJOIN_ENABLED Set to true to enable auto joining. Defaults to false autoJoinServer AUTOJOIN_SERVERURL Set this to the server URL you want the user to auto join. Required if auto join is enabled. Ex - http://mysynclounge.com/slserver autoJoinRoom AUTOJOIN_ROOM Set this to the room name in the server that you want the users to auto join. Optional autoJoinPassword AUTOJOIN_PASSWORD Set this to the room's password, if it has one. Optional authentication AUTHENTICATION Configure authentication for the server. See below for more information. Optional customServer CUSTOM_SERVER Override the custom server entry in the servers list. See below for more information. Optional","title":"Webapp"},{"location":"self-hosted/settings/#authentication","text":"To enable authentication, the following setting and format is used \"authentication\": { \"mechanism\": \"plex\", \"type\": [\"server\", \"user\"], \"authorized\": [ \"PLEX_SERVER_MACHINE_ID\", \"PLEX_USER_EMAIL\", \"PLEX_USER_NAME\", ] } Field Description mechanism Specifies how SyncLounge should authenticate a user. This is mostly for future-proofing to allow other authentication mechanisms to be provided. Values: plex - Authenticate against Plex Defaults to none type This determines how the mechanism provides authentication Values: server , user server checks against the plex server machine identifier ( PLEX_SERVER_MACHINE_ID ). If the user has access to a server matching any of the IDs in the authorized list, they will be granted access. See \"Get your Plex Server's Machine Identifier\" below for details. user checks against the user's email ( PLEX_USER_EMAIL ) or username ( PLEX_USER_NAME ). If either matches a value in the authorized list, they will be granted access. authorized This is a list of information for who is authorized, per the above setting.","title":"Authentication"},{"location":"self-hosted/settings/#get-your-plex-servers-machine-identifier","text":"To get the Plex Server's Machine Identifier ( machineIdentifier ) for your server you will need to get your Plex Authentication Token and put this into your browser, replacing YourTokenGoesHere with your token: https://plex.tv/pms/servers.xml?includeHttps=1&X-Plex-Token=YourTokenGoesHere You should then see something like this: In the entry that starts with / . image Specifies the URL of the image to use. defaultRoom Specifies the name of the room to send the user to after clicking \"Connect\". Optional defaultPassword Specifies the password of the room, if needed. Optional","title":"Server object"},{"location":"self-hosted/settings/#customize-the-custom-server-entry","text":"The Custom Server entry can be modified by adding this to your settings. This takes a single server object and will override the the custom server in the server list. \"customServer\": { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" }","title":"Customize the Custom Server entry"},{"location":"self-hosted/settings/#customize-the-entire-list","text":"The entire servers list can be modified with your own list of servers. If this setting is provided, it will ignore the customServer setting above. Also, if only one server is provided, it will automatically join it! \"servers\": [ { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://1.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" }, { \"name\": \"Custom Server 2\", \"location\": \"Custom Location\", \"url\": \"https://2.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-2.png\", \"defaultRoom\": \"DefaultRoom\" }, { \"name\": \"Custom Server 3\", \"location\": \"Custom Location\", \"url\": \"https://3.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-3.png\", \"defaultRoom\": \"DefaultRoom\", \"defaultPassword\": \"DefaultPassword123\" } ]","title":"Customize the entire list"},{"location":"self-hosted/synology/","text":"Here's how you set up on SyncLounge with Docker on Synology NAS. jacobmix made this awesome how-to for Synology! The original gist can be found here First make sure you got the Docker Hub in your registry: Download the latest SyncLounge image: Launch the image, and go to advanced settings: Enable auto-restart, and make a shortcut if you want: You can edit settings later by clicking the container, and pressing 'Edit' if it's not running. Configure the network, and ports to use: Just use the same network as Docker, and leave them as default if you can. Set the environment variables: Click Apply, finish the setup, an start it. It will take 20-30 minutes to start every time. If you wanna update the container you have to re-download/overwrite the image. Then clear the container, and restart it: Hope this good enough to get you through the setup. Now if you want to actually use SyncLounge: Connect with IP:PORT1/slweb Log-in with you Plex account Choose your player. Select Custom Server. Enter IP:PORT2/slserver Type in the room name, and password. Then you should be good to go! You can invite people with the button at the top. Other people need access to the same episode/movie/video on their/your/someones Plex server. You can invite people to your Plex like this: They need a Plex account before you can share your server with them. You just need to run the server, and forward the ports. Some notes: You can use the SyncLounge Player (BETA) player in your browser.","title":"Running on Synology NAS"}]} \ No newline at end of file +{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"\u00b6 Documentation Welcome to the SyncLounge Documentation! In the top navigation you will find useful links. Get started by checking out the Frequently Asked Questions !","title":"Docs Home"},{"location":"#_1","text":"Documentation Welcome to the SyncLounge Documentation! In the top navigation you will find useful links. Get started by checking out the Frequently Asked Questions !","title":""},{"location":"faq/","text":"FAQ \u00b6 General \u00b6 Do I need to have a Plex account to use SyncLounge? Why? \u00b6 Yes. SyncLounge uses your Plex account to fetch details about your Plex Clients and Media Servers to use within the app. Without this information, SyncLounge would be unable to play your selected media and sync with your friends and family. For security concerns, see the 'Security' section below. Do the other users in my room need access to my Plex Server? \u00b6 You don't have to share your Plex server if they have access to the same media on their own or another Plex server. If they don't have access to a Plex server with the same media, you will need to share your Plex server with them. What clients are supported? \u00b6 SyncLounge tries to maintain support as many clients as possible. However, changes to implementation on Plex's or the client's side can cause them to no longer work properly. Below are the supported clients and some known issues and solutions, where possible. If a solution doesn't work, an update to the Plex Client probably broke its compatibility. Also, due to the way some of the Plex clients have been made they can only operate using HTTP. If the site is using HTTPS and allows for HTTP use, like the hosted Synclounge does , then try that to see if it will work. Supported Clients \u00b6 Plex Media Player : The original Plex Media Player for Windows and MacOS is, as of writing this, still supported. Follow the link and scroll down to the newest to download. Plex Desktop app : You may encounter issues using this. Try the original Plex Media Player application above for better results. New Plex Player : If you are using the new Plex Player on a device, Plex changed the way it operates. Try changing back to the \"old player\" and see if it works better for you. Android based players (Roku, Android TV, Fire TV, etc.) : These players can't remote start media properly. Some have had success starting the media and pausing it, then having the host start the media. Plex Home Theater OpenPHT Rasplex iOS (iPhone & iPad) Unsupported or Broken Clients \u00b6 AppleTV : A recent update broken compatibility with SyncLounge Smart TVs Plex Web Player (Chrome/Safari/Firefox) Xbox Playstation How do I ...? \u00b6 If you are trying to figure out how to do something when using SyncLounge, check the how-to section of the documentation. This will show you how to change hosts, user Party Pausing, etc. If you are trying to figure out how to do something when running SyncLounge, check the how-to and Self-hosting sections. This will tell you how to setup and configure your servers. Common Issues \u00b6 I can't log in to SyncLounge \u00b6 This is most likely due to Popup Blocking or an Adblocker. If you press the \"Click me\" button and nothing happens, make sure that your browser isn't blocking popups for the site. If you get a new window with the Plex logo, but nothing else happens, make sure that you don't have an AdBlocker or other plugin that is interfering with Plex completing the OAuth request. My client isn't working! \u00b6 See What clients are supported? for information. Unable to connect to Plex Server \u00b6 When trying to connect to your server, if you get a message of \"Unable to connect\" \"Try disabling your adblocker\" it indicates that SyncLounge was unable to connect to the server properly. Here are known reasons why the connection may be blocked or not work properly: An adblocker, firewall, network configuration, ISP, or some other software on your computer is blocking the connection. The server owner's firewall, network configuration, ISP, or some other software is blocking the connection. Remote access is not enabled on the server or it isn't working properly. To enable remote access or to check if remote access is enabled succesfully, see the Plex's Remote Access article SyncLounge Player issues and errors \u00b6 Issue: The SyncLounge player is continually buffering Error Message: The quota has been exceeded Error Message: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers. Lower the bitrate (aka streaming quality) on the client. If you are using the SyncLounge Player, you can do this by clicking the settings cog in the upper-right of the player. Error Message: The media could not be loaded, either because the server or network failed or because the format is not supported Turn off force transcode by going to the menu in the top left > synclounge settings > force transcode Error Message: Failed to find a compatible copy of . If you have access to the content try manually playing it. SyncLounge is unable to retrieve information for the currently selected media on the server the user has access to. This is usually caused by the user not having access to the media that the host is playing. See Do the other users in my room need access to my Plex Server? for more information. Other Issues or Questions \u00b6 If any of the above don't answer your question or address your issue, see the How-to: Report an Issue page. Security \u00b6 Won't you have access to my username, password? \u00b6 No. SyncLounge uses Plex's OAuth to log in, so your username and password are never seen by SyncLounge. Won't you have access to my Plex Account? \u00b6 All details provided by Plex are stored client side (in your browser). Absolutely none of your confidential data is sent to our server. You can verify this by inspecting the Network tab within Chrome developer tools. If you would like, you can host SyncLounge yourself . What is sent then? \u00b6 When you've connected to a SyncLounge room, a few details are sent back and forth to the SyncLounge Server to enable syncing. The data sent contains the following: Plex Username Plex User Thumbnail URL Content playing title (Eg. Lord of the Rings: The Fellowship of the Ring) Current timestamp (Eg. 00:35:02) Maximum timestamp (Eg. 03:48:18) Host content ratingKey Host machineIdentifier Playerstate (Eg. paused, stopped, playing) Client response time (Ping time between you and your Plex Client) SL Server address, SL Server Room and SL Server Room Password are sent to the WebApp when you join a room to create shortened invite links. What about the public server provided by SyncLounge? Is my data safe? \u00b6 As noted above, SyncLounge gets none of your confidential data and we log absolutely nothing to disk. Data is kept within the room instance until you leave or the server restarts. We have enabled SSL on our public servers but if privacy is a concern for you we strongly suggest running your own server . Speaking of SSL, why isn't the site served over HTTPS? \u00b6 By default SyncLounge is served via HTTP. While we do offer HTTPS, doing so forces modern browsers in to blocking all HTTP connections. This effectively stops all communication with some Plex Clients that only operate using HTTP.","title":"FAQ"},{"location":"faq/#faq","text":"","title":"FAQ"},{"location":"faq/#general","text":"","title":"General"},{"location":"faq/#do-i-need-to-have-a-plex-account-to-use-synclounge-why","text":"Yes. SyncLounge uses your Plex account to fetch details about your Plex Clients and Media Servers to use within the app. Without this information, SyncLounge would be unable to play your selected media and sync with your friends and family. For security concerns, see the 'Security' section below.","title":"Do I need to have a Plex account to use SyncLounge? Why?"},{"location":"faq/#do-the-other-users-in-my-room-need-access-to-my-plex-server","text":"You don't have to share your Plex server if they have access to the same media on their own or another Plex server. If they don't have access to a Plex server with the same media, you will need to share your Plex server with them.","title":"Do the other users in my room need access to my Plex Server?"},{"location":"faq/#what-clients-are-supported","text":"SyncLounge tries to maintain support as many clients as possible. However, changes to implementation on Plex's or the client's side can cause them to no longer work properly. Below are the supported clients and some known issues and solutions, where possible. If a solution doesn't work, an update to the Plex Client probably broke its compatibility. Also, due to the way some of the Plex clients have been made they can only operate using HTTP. If the site is using HTTPS and allows for HTTP use, like the hosted Synclounge does , then try that to see if it will work.","title":"What clients are supported?"},{"location":"faq/#supported-clients","text":"Plex Media Player : The original Plex Media Player for Windows and MacOS is, as of writing this, still supported. Follow the link and scroll down to the newest to download. Plex Desktop app : You may encounter issues using this. Try the original Plex Media Player application above for better results. New Plex Player : If you are using the new Plex Player on a device, Plex changed the way it operates. Try changing back to the \"old player\" and see if it works better for you. Android based players (Roku, Android TV, Fire TV, etc.) : These players can't remote start media properly. Some have had success starting the media and pausing it, then having the host start the media. Plex Home Theater OpenPHT Rasplex iOS (iPhone & iPad)","title":"Supported Clients"},{"location":"faq/#unsupported-or-broken-clients","text":"AppleTV : A recent update broken compatibility with SyncLounge Smart TVs Plex Web Player (Chrome/Safari/Firefox) Xbox Playstation","title":"Unsupported or Broken Clients"},{"location":"faq/#how-do-i","text":"If you are trying to figure out how to do something when using SyncLounge, check the how-to section of the documentation. This will show you how to change hosts, user Party Pausing, etc. If you are trying to figure out how to do something when running SyncLounge, check the how-to and Self-hosting sections. This will tell you how to setup and configure your servers.","title":"How do I ...?"},{"location":"faq/#common-issues","text":"","title":"Common Issues"},{"location":"faq/#i-cant-log-in-to-synclounge","text":"This is most likely due to Popup Blocking or an Adblocker. If you press the \"Click me\" button and nothing happens, make sure that your browser isn't blocking popups for the site. If you get a new window with the Plex logo, but nothing else happens, make sure that you don't have an AdBlocker or other plugin that is interfering with Plex completing the OAuth request.","title":"I can't log in to SyncLounge"},{"location":"faq/#my-client-isnt-working","text":"See What clients are supported? for information.","title":"My client isn't working!"},{"location":"faq/#unable-to-connect-to-plex-server","text":"When trying to connect to your server, if you get a message of \"Unable to connect\" \"Try disabling your adblocker\" it indicates that SyncLounge was unable to connect to the server properly. Here are known reasons why the connection may be blocked or not work properly: An adblocker, firewall, network configuration, ISP, or some other software on your computer is blocking the connection. The server owner's firewall, network configuration, ISP, or some other software is blocking the connection. Remote access is not enabled on the server or it isn't working properly. To enable remote access or to check if remote access is enabled succesfully, see the Plex's Remote Access article","title":"Unable to connect to Plex Server"},{"location":"faq/#synclounge-player-issues-and-errors","text":"Issue: The SyncLounge player is continually buffering Error Message: The quota has been exceeded Error Message: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers. Lower the bitrate (aka streaming quality) on the client. If you are using the SyncLounge Player, you can do this by clicking the settings cog in the upper-right of the player. Error Message: The media could not be loaded, either because the server or network failed or because the format is not supported Turn off force transcode by going to the menu in the top left > synclounge settings > force transcode Error Message: Failed to find a compatible copy of . If you have access to the content try manually playing it. SyncLounge is unable to retrieve information for the currently selected media on the server the user has access to. This is usually caused by the user not having access to the media that the host is playing. See Do the other users in my room need access to my Plex Server? for more information.","title":"SyncLounge Player issues and errors"},{"location":"faq/#other-issues-or-questions","text":"If any of the above don't answer your question or address your issue, see the How-to: Report an Issue page.","title":"Other Issues or Questions"},{"location":"faq/#security","text":"","title":"Security"},{"location":"faq/#wont-you-have-access-to-my-username-password","text":"No. SyncLounge uses Plex's OAuth to log in, so your username and password are never seen by SyncLounge.","title":"Won't you have access to my username, password?"},{"location":"faq/#wont-you-have-access-to-my-plex-account","text":"All details provided by Plex are stored client side (in your browser). Absolutely none of your confidential data is sent to our server. You can verify this by inspecting the Network tab within Chrome developer tools. If you would like, you can host SyncLounge yourself .","title":"Won't you have access to my Plex Account?"},{"location":"faq/#what-is-sent-then","text":"When you've connected to a SyncLounge room, a few details are sent back and forth to the SyncLounge Server to enable syncing. The data sent contains the following: Plex Username Plex User Thumbnail URL Content playing title (Eg. Lord of the Rings: The Fellowship of the Ring) Current timestamp (Eg. 00:35:02) Maximum timestamp (Eg. 03:48:18) Host content ratingKey Host machineIdentifier Playerstate (Eg. paused, stopped, playing) Client response time (Ping time between you and your Plex Client) SL Server address, SL Server Room and SL Server Room Password are sent to the WebApp when you join a room to create shortened invite links.","title":"What is sent then?"},{"location":"faq/#what-about-the-public-server-provided-by-synclounge-is-my-data-safe","text":"As noted above, SyncLounge gets none of your confidential data and we log absolutely nothing to disk. Data is kept within the room instance until you leave or the server restarts. We have enabled SSL on our public servers but if privacy is a concern for you we strongly suggest running your own server .","title":"What about the public server provided by SyncLounge? Is my data safe?"},{"location":"faq/#speaking-of-ssl-why-isnt-the-site-served-over-https","text":"By default SyncLounge is served via HTTP. While we do offer HTTPS, doing so forces modern browsers in to blocking all HTTP connections. This effectively stops all communication with some Plex Clients that only operate using HTTP.","title":"Speaking of SSL, why isn't the site served over HTTPS?"},{"location":"contributing/contributing/","text":"Contributing \u00b6 Contributions to SyncLounge are welcome and there are a few ways to contribute! Donating You can help SyncLounge by donating . All donations to SyncLounge go directly towards running the SyncLounge public servers and the continued development of the application. Documentation Help SyncLounge by updating this documentation! You can get started by reading the Documenation Guidelines Development Interested in getting your hands dirty? Head to the Developing section to get started!","title":"Contributing"},{"location":"contributing/contributing/#contributing","text":"Contributions to SyncLounge are welcome and there are a few ways to contribute! Donating You can help SyncLounge by donating . All donations to SyncLounge go directly towards running the SyncLounge public servers and the continued development of the application. Documentation Help SyncLounge by updating this documentation! You can get started by reading the Documenation Guidelines Development Interested in getting your hands dirty? Head to the Developing section to get started!","title":"Contributing"},{"location":"contributing/developing/","text":"Developing \u00b6 We'll gladly merge Pull requests if you're keen to get hands on with the development! Requirements \u00b6 Node v8.4.0+ Running \u00b6 Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install Run the development server: npm run dev Once Webpack has finished compiling, navigate to http://localhost:8080 in your web browser. Notes: Hot reload is enabled! It is suggested to install Vue.js Devtools Chrome Extension Firefox Addon If you use VS Code, see VueJS's Debugging in VS Code","title":"Developing"},{"location":"contributing/developing/#developing","text":"We'll gladly merge Pull requests if you're keen to get hands on with the development!","title":"Developing"},{"location":"contributing/developing/#requirements","text":"Node v8.4.0+","title":"Requirements"},{"location":"contributing/developing/#running","text":"Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install Run the development server: npm run dev Once Webpack has finished compiling, navigate to http://localhost:8080 in your web browser. Notes: Hot reload is enabled! It is suggested to install Vue.js Devtools Chrome Extension Firefox Addon If you use VS Code, see VueJS's Debugging in VS Code","title":"Running"},{"location":"contributing/documentation-guidelines/","text":"Documentation Guidelines \u00b6 Almost all of the pages in this documentation are written in markdown and conform to the rules of markdownlint . You can easily make edits to existing pages by clicking the Pencil icon to the right of the page's header. If you contribute to the documentation, make sure that your edits pass linting which will automatically occur once you submit you changes. When creating documentation, please try to do the following: Follow logical groupings for sections and pages. E.g. - All documentation for How-tos is under docs/how-tos/ Place images in the docs/img/ following the same logical groupings as above. E.g. - All images for How-tos are under docs/img/how-tos If you run into any linting issues, you may find a full list of linting rules, and examples, in the markdownlint repository Highlights: Heading levels should only increment by one level at a time. No hard tabs. All indentation should use spaces and be consistent. There should be no more than 1 blank line between text or elements. Unordered lists elements should start with - . Ordered list should all start with 1. regardless of the order. Markdown will handle the proper numbering sequence when rendering. Headings, lists, and code blocks (possibly more) should be surrounded by blank lines. Images should have alternate text (alt text). Files should end with a blank line. Disabled rules: Line length No Inline HTML First line in file should be a top level heading","title":"Documetation Guidelines"},{"location":"contributing/documentation-guidelines/#documentation-guidelines","text":"Almost all of the pages in this documentation are written in markdown and conform to the rules of markdownlint . You can easily make edits to existing pages by clicking the Pencil icon to the right of the page's header. If you contribute to the documentation, make sure that your edits pass linting which will automatically occur once you submit you changes. When creating documentation, please try to do the following: Follow logical groupings for sections and pages. E.g. - All documentation for How-tos is under docs/how-tos/ Place images in the docs/img/ following the same logical groupings as above. E.g. - All images for How-tos are under docs/img/how-tos If you run into any linting issues, you may find a full list of linting rules, and examples, in the markdownlint repository Highlights: Heading levels should only increment by one level at a time. No hard tabs. All indentation should use spaces and be consistent. There should be no more than 1 blank line between text or elements. Unordered lists elements should start with - . Ordered list should all start with 1. regardless of the order. Markdown will handle the proper numbering sequence when rendering. Headings, lists, and code blocks (possibly more) should be surrounded by blank lines. Images should have alternate text (alt text). Files should end with a blank line. Disabled rules: Line length No Inline HTML First line in file should be a top level heading","title":"Documentation Guidelines"},{"location":"contributing/donating/","text":"Donating \u00b6 How to donate: PayPal Cryptocurrency: ETH: 0xC886a3b94867AC12901220BBcbFD407e60E009A5 LTC: LQkfMbcFGQgMZWw13hbzbYkRkSM6n1fZjE BTC: 3Q7wZnUdJMQi53eH3dErms9Tno7VGmTHZL BCH: 1K3ULWzW9dLyGbtpnNqUysHuj1suZFXtx4 If you make a donation, stop by the Discord and message samcm#2715 to get your Donator role. Thank you!","title":"Donating"},{"location":"contributing/donating/#donating","text":"How to donate: PayPal Cryptocurrency: ETH: 0xC886a3b94867AC12901220BBcbFD407e60E009A5 LTC: LQkfMbcFGQgMZWw13hbzbYkRkSM6n1fZjE BTC: 3Q7wZnUdJMQi53eH3dErms9Tno7VGmTHZL BCH: 1K3ULWzW9dLyGbtpnNqUysHuj1suZFXtx4 If you make a donation, stop by the Discord and message samcm#2715 to get your Donator role. Thank you!","title":"Donating"},{"location":"how-tos/how-tos/","text":"How-tos \u00b6 Use the navigation to the left to find how-tos of interest.","title":"How-to Home"},{"location":"how-tos/how-tos/#how-tos","text":"Use the navigation to the left to find how-tos of interest.","title":"How-tos"},{"location":"how-tos/report-an-issue/","text":"Report an Issue \u00b6 Check/search the Issue Tracker and Discord to see if your issue has been reported/resolved already. If not: Make sure that you have read through the FAQ . Answers to many common issues can be found there. If you are self-hosting, make sure that you have read through all of the Self-Hosting documentation . It is preferred that issues are reported on the Issue Tracker and then raise it on Discord . When reporting an issues, please try to be as detailed as possible. If needed, you can generate logs from your client device (player). Information can be found in the troubleshooting section of the How-tos. If you aren't going to report the issue on the Issue Tracker , copy/paste and complete the following into the Issues channel in Discord: **Web App** You can remove this section if your issue isn't related to the Web App __System Details__ - Operating System: - Web Browser name and version: __Plex Media Server details__ - Version: - Operating System (Windows/Linux/Mac): - Running in Docker? (Yes/No): - Location (Local/Remote): - Remote Access Enabled (Yes/No)?: __Plex Client details__ - Name: - Version: - Network connection (Wired/Wifi): - Platform: **Self-Hosting** You can remove this section if your issue isn't related to Self-Hosting __System Details__ - Operating System: __SyncLounge Details__ - Running in Docker? (Yes/No): - Using a Reverse Proxy (Yes/No): If Yes, which Reverse Proxy (Nginx, Apache, Caddy, etc.): **Issue Details** __To Reproduce__ Steps to reproduce the behavior: - Go to '...' - Click on '....' - Scroll down to '....' - See error __Describe your issues(s)__ Please describe your issues below:","title":"Report an Issue"},{"location":"how-tos/report-an-issue/#report-an-issue","text":"Check/search the Issue Tracker and Discord to see if your issue has been reported/resolved already. If not: Make sure that you have read through the FAQ . Answers to many common issues can be found there. If you are self-hosting, make sure that you have read through all of the Self-Hosting documentation . It is preferred that issues are reported on the Issue Tracker and then raise it on Discord . When reporting an issues, please try to be as detailed as possible. If needed, you can generate logs from your client device (player). Information can be found in the troubleshooting section of the How-tos. If you aren't going to report the issue on the Issue Tracker , copy/paste and complete the following into the Issues channel in Discord: **Web App** You can remove this section if your issue isn't related to the Web App __System Details__ - Operating System: - Web Browser name and version: __Plex Media Server details__ - Version: - Operating System (Windows/Linux/Mac): - Running in Docker? (Yes/No): - Location (Local/Remote): - Remote Access Enabled (Yes/No)?: __Plex Client details__ - Name: - Version: - Network connection (Wired/Wifi): - Platform: **Self-Hosting** You can remove this section if your issue isn't related to Self-Hosting __System Details__ - Operating System: __SyncLounge Details__ - Running in Docker? (Yes/No): - Using a Reverse Proxy (Yes/No): If Yes, which Reverse Proxy (Nginx, Apache, Caddy, etc.): **Issue Details** __To Reproduce__ Steps to reproduce the behavior: - Go to '...' - Click on '....' - Scroll down to '....' - See error __Describe your issues(s)__ Please describe your issues below:","title":"Report an Issue"},{"location":"how-tos/app/change-host/","text":"Change the host of a room \u00b6 The host controls what video is watched and if it is playing or paused. If you accidentally make someone the host, you'll have ask them to set you to be host again. To make another user the host, you can do either of the following: Double-click the user's avatar Use the menu to the right of their name","title":"Change the Host"},{"location":"how-tos/app/change-host/#change-the-host-of-a-room","text":"The host controls what video is watched and if it is playing or paused. If you accidentally make someone the host, you'll have ask them to set you to be host again. To make another user the host, you can do either of the following: Double-click the user's avatar Use the menu to the right of their name","title":"Change the host of a room"},{"location":"how-tos/app/party-pausing/","text":"Party Pausing \u00b6 The host can enable or disable Party Pausing using the toggle at the top of the User list. Regardless of if party pausing is enabled, the host can always pause or play a video using the button on the player (bottom-left). If Party Pausing is enabled, the guests will see the play/pause button at the top of the User list. This button will allow them to pause/play the video for everyone in the room.","title":"Party Pausing"},{"location":"how-tos/app/party-pausing/#party-pausing","text":"The host can enable or disable Party Pausing using the toggle at the top of the User list. Regardless of if party pausing is enabled, the host can always pause or play a video using the button on the player (bottom-left). If Party Pausing is enabled, the guests will see the play/pause button at the top of the User list. This button will allow them to pause/play the video for everyone in the room.","title":"Party Pausing"},{"location":"self-hosted/docker/","text":"Running with Docker \u00b6 There are two containers for running SyncLounge using Docker: LinuxServer.io's container and Starbix's container. Linuxserver.io's container \u00b6 The Linuxserver.io container for SyncLounge is located at https://hub.docker.com/r/linuxserver/synclounge and full documentation can be found there. If you are running linux, DockSTARTer supports this container and makes it quick and easy to get up and running with Docker. DockSTARTer SyncLounge documentation will help you get set up. Even if you aren't using DockSTARTer, there is some information under the Advanced that may be useful. Starbix's container \u00b6 The original Docker container for SyncLounge can be found on Docker Hub made by Starbix . Note: If you have issues with the ENV variables in Settings , trying using the argument syntax instead for the environment variable syntax. E.g. - webroot instead of WEB_ROOT The following tags are available: latest / alpine: webapp and server based on alpine server: only server based on alpine dev: development version of webapp and server based on alpine nginx: latest + nginx reverse proxy To use the latest docker run \\ --name=synclounge \\ -p 8088:8088 \\ -p 8089:8089 \\ -e DOMAIN=example.com \\ starbix/synclounge To use a tagged version: docker run \\ --name=plextogether_nginx \\ -p 80:80 \\ -e DOMAIN=example.com \\ starbix/synclounge:TAG If you are running DockSTARTer , you can run this container by using overrides to add SyncLounge. Here is a sample override file: version: \"3.4\" services: synclounge: image: starbix/synclounge container_name: synclounge environment: - DOMAIN=synclounge.domain.tld logging: driver: json-file options: max-file: ${DOCKERLOGGING_MAXFILE} max-size: ${DOCKERLOGGING_MAXSIZE} ports: - 8088:8088 - 8089:8089 restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - ${DOCKERCONFDIR}/synclounge/settings.json:/opt/synclounge/settings.json","title":"Running with Docker"},{"location":"self-hosted/docker/#running-with-docker","text":"There are two containers for running SyncLounge using Docker: LinuxServer.io's container and Starbix's container.","title":"Running with Docker"},{"location":"self-hosted/docker/#linuxserverios-container","text":"The Linuxserver.io container for SyncLounge is located at https://hub.docker.com/r/linuxserver/synclounge and full documentation can be found there. If you are running linux, DockSTARTer supports this container and makes it quick and easy to get up and running with Docker. DockSTARTer SyncLounge documentation will help you get set up. Even if you aren't using DockSTARTer, there is some information under the Advanced that may be useful.","title":"Linuxserver.io's container"},{"location":"self-hosted/docker/#starbixs-container","text":"The original Docker container for SyncLounge can be found on Docker Hub made by Starbix . Note: If you have issues with the ENV variables in Settings , trying using the argument syntax instead for the environment variable syntax. E.g. - webroot instead of WEB_ROOT The following tags are available: latest / alpine: webapp and server based on alpine server: only server based on alpine dev: development version of webapp and server based on alpine nginx: latest + nginx reverse proxy To use the latest docker run \\ --name=synclounge \\ -p 8088:8088 \\ -p 8089:8089 \\ -e DOMAIN=example.com \\ starbix/synclounge To use a tagged version: docker run \\ --name=plextogether_nginx \\ -p 80:80 \\ -e DOMAIN=example.com \\ starbix/synclounge:TAG If you are running DockSTARTer , you can run this container by using overrides to add SyncLounge. Here is a sample override file: version: \"3.4\" services: synclounge: image: starbix/synclounge container_name: synclounge environment: - DOMAIN=synclounge.domain.tld logging: driver: json-file options: max-file: ${DOCKERLOGGING_MAXFILE} max-size: ${DOCKERLOGGING_MAXSIZE} ports: - 8088:8088 - 8089:8089 restart: unless-stopped volumes: - /etc/localtime:/etc/localtime:ro - ${DOCKERCONFDIR}/synclounge/settings.json:/opt/synclounge/settings.json","title":"Starbix's container"},{"location":"self-hosted/getting-started/","text":"Getting Started \u00b6 Prerequisites \u00b6 An understanding of, or willingness to learn, some basic tech stuff A computer to run these applications However you decide to run SyncLounge yourself, to run the webapp you need to set the Access URL using one of these methods: In settings.json Via argument. E.g. - node webapp.js --accessUrl= Environment Variable All of the variables and what they do can be found on the Settings page. Issues \u00b6 If you encounter any issues setting up SyncLounge, see the Report an Issue page. Running \u00b6 Docker \u00b6 The recommended way of self-hosting SyncLounge is Running with Docker . Docker is an application that runs software in containers making it easier to get applications running. You can learn more by going to Docker's website . Locally \u00b6 You may also run it directly on a machine using a local install .","title":"Getting Started"},{"location":"self-hosted/getting-started/#getting-started","text":"","title":"Getting Started"},{"location":"self-hosted/getting-started/#prerequisites","text":"An understanding of, or willingness to learn, some basic tech stuff A computer to run these applications However you decide to run SyncLounge yourself, to run the webapp you need to set the Access URL using one of these methods: In settings.json Via argument. E.g. - node webapp.js --accessUrl= Environment Variable All of the variables and what they do can be found on the Settings page.","title":"Prerequisites"},{"location":"self-hosted/getting-started/#issues","text":"If you encounter any issues setting up SyncLounge, see the Report an Issue page.","title":"Issues"},{"location":"self-hosted/getting-started/#running","text":"","title":"Running"},{"location":"self-hosted/getting-started/#docker","text":"The recommended way of self-hosting SyncLounge is Running with Docker . Docker is an application that runs software in containers making it easier to get applications running. You can learn more by going to Docker's website .","title":"Docker"},{"location":"self-hosted/getting-started/#locally","text":"You may also run it directly on a machine using a local install .","title":"Locally"},{"location":"self-hosted/linux/","text":"joecot made this awesome how-to for linux! The original gist can be found here This is a quick howto for self-hosting SyncLounge, a useful tool for hosting watch parties for your Plex server, on Linux natively. If you just want to host a plex party, you can use the public app.synclounge.tv servers. If you want to use Docker instead of mucking about with Node, see Running with Docker . This is for running the NodeJS yourself. You don't need programming experience to set SyncLounge up, but without a passable experience configuring linux, you're probably better off using synclounge.tv instead. Server Pre-Reqs \u00b6 Linux : These docs assume a debian/ubuntu distro, but it should be easy enough to install packages on the distro of your choice. nodejs should run on Windows, and feel free to write a different guide for that. A domain pointed at your server in DNS. Here I'll be using synclounge.yourdomain.com as the example domain, but whichever one you use should point at your server. You could also just use your server's public IP if you don't have a domain nginx or another comparable web server. I prefer nginx. Any web server that works for reverse proxying (including web sockets!) will be fine, but I'm only giving config for nginx, since nginx also handles web sockets well especially. Feel free to hit me up with a working apache2 or similar config git To check out the synclounge code. If you're running ubuntu/debian, this is as easy as: sudo apt-get install git nodejs and npm with Node at least v8.4.0. Preferred method is probably using nvm (node version manager), which will install a local version of node in your home directory. Here's a guide for NVM installation. You can use the distro package version most likely, or at least find a repo or PPA for them. Here's a sample Ubuntu guide. Note that if using packages, you'll need to use sudo when we install global npm packages. Either way, run, node -v and npm -v to confirm you have them. Note : While you can run synclounge over https with an ssl certificate, I'm not going to do that here. You could easily use https instead of http in your URL, and setup your ssl certificate in your web server config. But unless you setup your plex server using https as well, connecting to your plex will fail. Setting up SyncLounge Code Directory \u00b6 Check out the synclounge project: git clone https://github.com/samcm/synclounge enter directory: cd synclounge install node libraries using npm: npm install settings.json file \u00b6 See the Settings page for more detail on each of the settings. While you can potentially set these using command line arguments or environmental variables, editing the settings.json file directly is by far the most reliable way. Here's an example settings.json file: { \"webroot\":\"\", \"serverroot\":\"\", \"accessUrl\":\"http://synclounge.yourdomain.com\", \"webapp_port\":8280, \"server_port\":8281, \"authentication\":{ \"mechanism\":\"plex\", \"type\":[ \"server\" ], \"authorized\":[ \"YOUR_PLEX_MACHINE_ID\" ] }, \"servers\":[ { \"name\":\"Your Super Cool Plex Party Server\", \"location\":\"Space, the Final Frontier\", \"url\":\"http://synclounge.yourdomain.com/slserver\", \"image\":\"\" } ], \"autoJoin\":false, \"autoJoinServer\":\"\", \"autoJoinRoom\":\"\", \"autoJoinPassword\":\"\" } I've made some opinionated assumptions for simplicity here, and again read the whole SyncLounge documentation for more details, but the highlights are: accessUrl - Set this to the url you want synclounge to be at, and replace http://synclounge.yourdomain.com with that wherever you see it. - Server ports *. These can be whatever you want. I've changed them from the default 8080 and 8081 since they're most commonly used. If you change these just keep them in mind when we do nginx/apache setup webapp_port - The local port the web frontend will be served at. server_port - The local port the backend will be served at. authentication - sets who is allowed to use your SyncLounge. I have this set so that if someone has access to your plex server, they have access to your synclounge server (presuming you're trying to stream from your own plex server library!) If you want to do that, set YOUR_PLEX_MACHINE_ID to your server ID. If you launch plex.tv and go to Settings -> Manage -> Libraries, you can see your server ID in the URL. It'll be the XXXX in https://app.plex.tv/desktop#!/settings/server/XXXX/manage/libraries . Put that hex code as your plex machine id. If you don't want to authenticate that users have access to your plex server, you can either remove the authentication part of the settings, or replace it with \"authentication\":{\"mechanism\":\"none\"}, HOWEVER , the user will still need to log in with their plex account, because SyncLounge opens videos via plex using their plex account. Leaving authentication as none just means they can log in to your SyncLounge without their user having been given shared access to your plex server. However, unless they have access to a different plex server with the exact same videos you're trying to play, SyncLounge won't work for them anyway. I'd say for 95% of use cases, you're trying to use SyncLounge with your own plex server you've shared with other people, so authenticating they have access to your plex server let's you know there's a problem when they go to sign in, as opposed to waiting til they get into the room with you and nothing will play for them. In 95% of cases, you want them to give you their plex account email address, you want to add them to sharing in your plex server (and them confirm it via email), and then you want to give them the SyncLounge invite link. If you fall into that case, leave the authentication as I described and add your machine id in. servers - I'm replacing the default server list with the custom server. If you want the other servers you can set this server object to customServer as shown in the official docs. The upside of replacing all the servers is your users can skip picking a server. Set the name, location, and url details here, and optionally a thumbnail which won't get shown if you only have one server anyway. Build SyncLounge web files \u00b6 Now that we have the settings.json setup, it's time to build the web frontend files. This is easy. Run: npm run build Then go get a drink or a snack, because it will take a minute. You may or may not need to re-run the build if you edit settings.json later, but probably not? I haven't tested that out. Run SyncLounge \u00b6 To Test \u00b6 This is just to test out that it's all working while you can see the console output. If you're a confident person you can just switch to the Production options. But you might want to try these if it's not working. You need to both run the SyncLounge web and server instances. You can do this is multiple ssh windows, but I suggest using screen . If you don't have screen installed, you can get it with sudo apt-get install screen . As a quick screen tutorial: List any existing screen sessions: screen -ls Open a new named screen session: screen -S YourName Send the screen session you're in to the background: Hold down the CTRL key, then press and release A, then D Resume a screen session running in the background: screen -r YourName So when running the server commands I suggest running screen -S sl-server to open a screen for that, then CTRL-A-D to get out of it, then screen -S sl-web to run the web commands. Then you can rejoin the screens with screen -r sl-web or screen -r sl-server . But I'm a guide writer, not a cop, so do whatever's easiest for you. To run the synclounge server, run: node server.js and leave it running. You'll see output like: Setting up with serverRoot of /slserver SyncLounge Server successfully started on port 8281 Connected users: 0 With whatever server port you set. To run the synclounge web files, run: node webapp.js and leave it running. You'll see it output your Settings and such, followed by: SyncLounge WebApp successfully started on port 8280 Access URL is http://synclounge.yourdomain.com With whatever url and web port you set Web Server Setup \u00b6 NGINX \u00b6 Here's a sample nginx site config (this is essentially the same as the one in the synclounge documentation): server { listen 80; server_name synclounge.yourdomain.com; # you can make a separate access log if you want, # or just leave it to the default nginx/access.log #access_log /var/log/nginx/synclounge.yourdomain.com_access.log; proxy_redirect off; proxy_buffering off; location / { include proxy_params; proxy_pass http://localhost:8280; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } location /slserver { include proxy_params; proxy_pass http://localhost:8281/slserver; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } } This should go in your /etc/nginx/sites-available/ directory, likely named synclounge.yourdomain.com.conf . Update the domain you're using in the config and the filename, and if you changed web or server ports in your synclounge config, change them in the location / and /slserver sections respectively. This also assumes you have a /etc/nginx/proxy_params file. If you don't, make one with: proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; Once you have the config setup how you want: Symlink it to sites-enabled: sudo ln -s /etc/nginx/sites-available/synclounge.yourdomain.com.conf /etc/nginx/sites-enabled/ Check your nginx config for errors: sudo nginx -t If everything looks good, reload nginx with your changes: sudo service nginx reload Then try going to your synclounge install in your browser! For \"Production\" (Serious Business Plex Watching) \u00b6 Once you've tested out running this and see it's working (or immediately if you're feeling lucky), you probably want this to just run in the background all the time, including starting up with your server. To do that we'll be using a node utility called pm2 To install pm2 run npm install -g pm2 to install it globally. If you're not running npm with nvm, you probably need to do sudo npm install -g pm2 If you're running the server or web files still from testing, stop them (just ctrl-c will do it). Then from the synclounge directory, we just need to run 2 commands: pm2 start webapp.js --name=sl-web pm2 start server.js --name=sl-server If you run pm2 list , you should see two processes running: \u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 id \u2502 name \u2502 namespace \u2502 version \u2502 mode \u2502 pid \u2502 uptime \u2502 \u21ba \u2502 status \u2502 cpu \u2502 mem \u2502 user \u2502 watching \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 2 \u2502 \u25c9 sl-server \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4521 \u2502 107m \u2502 0 \u2502 online \u2502 0.1% \u2502 17.2mb \u2502 joe \u2502 disabled \u2502 \u2502 1 \u2502 \u25c9 sl-web \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4548 \u2502 107m \u2502 2 \u2502 online \u2502 0.1% \u2502 12.8mb \u2502 joe \u2502 disabled \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 Now go try your synclounge site again and confirm it's still working. If it's not working, you can still see the output from the programs in the pm2 logs. look in ~/.pm2/logs/ for the output and error logs for each of your processes. If it's working, you probably want this to launch on startup now. To do that, first run pm2 save , which will save your 2 processes to run when pm2 starts up. Then call pm2 startup . pm2 will give you a command to run to add your user's pm2 to the server setup. It'll probably look something like this: sudo env PATH=$PATH:/home/user/.nvm/versions/node/v12.7.0/bin /home/user/.nvm/versions/node/v12.7.0/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user Run that, and now your pm2 will start with the server. That's all folks \u00b6 If something doesn't appear to work, check the output of the web or server terminal/log outputs, or your nginx access and error log, and ask on Discord .","title":"Running on Linux"},{"location":"self-hosted/linux/#server-pre-reqs","text":"Linux : These docs assume a debian/ubuntu distro, but it should be easy enough to install packages on the distro of your choice. nodejs should run on Windows, and feel free to write a different guide for that. A domain pointed at your server in DNS. Here I'll be using synclounge.yourdomain.com as the example domain, but whichever one you use should point at your server. You could also just use your server's public IP if you don't have a domain nginx or another comparable web server. I prefer nginx. Any web server that works for reverse proxying (including web sockets!) will be fine, but I'm only giving config for nginx, since nginx also handles web sockets well especially. Feel free to hit me up with a working apache2 or similar config git To check out the synclounge code. If you're running ubuntu/debian, this is as easy as: sudo apt-get install git nodejs and npm with Node at least v8.4.0. Preferred method is probably using nvm (node version manager), which will install a local version of node in your home directory. Here's a guide for NVM installation. You can use the distro package version most likely, or at least find a repo or PPA for them. Here's a sample Ubuntu guide. Note that if using packages, you'll need to use sudo when we install global npm packages. Either way, run, node -v and npm -v to confirm you have them. Note : While you can run synclounge over https with an ssl certificate, I'm not going to do that here. You could easily use https instead of http in your URL, and setup your ssl certificate in your web server config. But unless you setup your plex server using https as well, connecting to your plex will fail.","title":"Server Pre-Reqs"},{"location":"self-hosted/linux/#setting-up-synclounge-code-directory","text":"Check out the synclounge project: git clone https://github.com/samcm/synclounge enter directory: cd synclounge install node libraries using npm: npm install","title":"Setting up SyncLounge Code Directory"},{"location":"self-hosted/linux/#settingsjson-file","text":"See the Settings page for more detail on each of the settings. While you can potentially set these using command line arguments or environmental variables, editing the settings.json file directly is by far the most reliable way. Here's an example settings.json file: { \"webroot\":\"\", \"serverroot\":\"\", \"accessUrl\":\"http://synclounge.yourdomain.com\", \"webapp_port\":8280, \"server_port\":8281, \"authentication\":{ \"mechanism\":\"plex\", \"type\":[ \"server\" ], \"authorized\":[ \"YOUR_PLEX_MACHINE_ID\" ] }, \"servers\":[ { \"name\":\"Your Super Cool Plex Party Server\", \"location\":\"Space, the Final Frontier\", \"url\":\"http://synclounge.yourdomain.com/slserver\", \"image\":\"\" } ], \"autoJoin\":false, \"autoJoinServer\":\"\", \"autoJoinRoom\":\"\", \"autoJoinPassword\":\"\" } I've made some opinionated assumptions for simplicity here, and again read the whole SyncLounge documentation for more details, but the highlights are: accessUrl - Set this to the url you want synclounge to be at, and replace http://synclounge.yourdomain.com with that wherever you see it. - Server ports *. These can be whatever you want. I've changed them from the default 8080 and 8081 since they're most commonly used. If you change these just keep them in mind when we do nginx/apache setup webapp_port - The local port the web frontend will be served at. server_port - The local port the backend will be served at. authentication - sets who is allowed to use your SyncLounge. I have this set so that if someone has access to your plex server, they have access to your synclounge server (presuming you're trying to stream from your own plex server library!) If you want to do that, set YOUR_PLEX_MACHINE_ID to your server ID. If you launch plex.tv and go to Settings -> Manage -> Libraries, you can see your server ID in the URL. It'll be the XXXX in https://app.plex.tv/desktop#!/settings/server/XXXX/manage/libraries . Put that hex code as your plex machine id. If you don't want to authenticate that users have access to your plex server, you can either remove the authentication part of the settings, or replace it with \"authentication\":{\"mechanism\":\"none\"}, HOWEVER , the user will still need to log in with their plex account, because SyncLounge opens videos via plex using their plex account. Leaving authentication as none just means they can log in to your SyncLounge without their user having been given shared access to your plex server. However, unless they have access to a different plex server with the exact same videos you're trying to play, SyncLounge won't work for them anyway. I'd say for 95% of use cases, you're trying to use SyncLounge with your own plex server you've shared with other people, so authenticating they have access to your plex server let's you know there's a problem when they go to sign in, as opposed to waiting til they get into the room with you and nothing will play for them. In 95% of cases, you want them to give you their plex account email address, you want to add them to sharing in your plex server (and them confirm it via email), and then you want to give them the SyncLounge invite link. If you fall into that case, leave the authentication as I described and add your machine id in. servers - I'm replacing the default server list with the custom server. If you want the other servers you can set this server object to customServer as shown in the official docs. The upside of replacing all the servers is your users can skip picking a server. Set the name, location, and url details here, and optionally a thumbnail which won't get shown if you only have one server anyway.","title":"settings.json file"},{"location":"self-hosted/linux/#build-synclounge-web-files","text":"Now that we have the settings.json setup, it's time to build the web frontend files. This is easy. Run: npm run build Then go get a drink or a snack, because it will take a minute. You may or may not need to re-run the build if you edit settings.json later, but probably not? I haven't tested that out.","title":"Build SyncLounge web files"},{"location":"self-hosted/linux/#run-synclounge","text":"","title":"Run SyncLounge"},{"location":"self-hosted/linux/#to-test","text":"This is just to test out that it's all working while you can see the console output. If you're a confident person you can just switch to the Production options. But you might want to try these if it's not working. You need to both run the SyncLounge web and server instances. You can do this is multiple ssh windows, but I suggest using screen . If you don't have screen installed, you can get it with sudo apt-get install screen . As a quick screen tutorial: List any existing screen sessions: screen -ls Open a new named screen session: screen -S YourName Send the screen session you're in to the background: Hold down the CTRL key, then press and release A, then D Resume a screen session running in the background: screen -r YourName So when running the server commands I suggest running screen -S sl-server to open a screen for that, then CTRL-A-D to get out of it, then screen -S sl-web to run the web commands. Then you can rejoin the screens with screen -r sl-web or screen -r sl-server . But I'm a guide writer, not a cop, so do whatever's easiest for you. To run the synclounge server, run: node server.js and leave it running. You'll see output like: Setting up with serverRoot of /slserver SyncLounge Server successfully started on port 8281 Connected users: 0 With whatever server port you set. To run the synclounge web files, run: node webapp.js and leave it running. You'll see it output your Settings and such, followed by: SyncLounge WebApp successfully started on port 8280 Access URL is http://synclounge.yourdomain.com With whatever url and web port you set","title":"To Test"},{"location":"self-hosted/linux/#web-server-setup","text":"","title":"Web Server Setup"},{"location":"self-hosted/linux/#nginx","text":"Here's a sample nginx site config (this is essentially the same as the one in the synclounge documentation): server { listen 80; server_name synclounge.yourdomain.com; # you can make a separate access log if you want, # or just leave it to the default nginx/access.log #access_log /var/log/nginx/synclounge.yourdomain.com_access.log; proxy_redirect off; proxy_buffering off; location / { include proxy_params; proxy_pass http://localhost:8280; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } location /slserver { include proxy_params; proxy_pass http://localhost:8281/slserver; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; } } This should go in your /etc/nginx/sites-available/ directory, likely named synclounge.yourdomain.com.conf . Update the domain you're using in the config and the filename, and if you changed web or server ports in your synclounge config, change them in the location / and /slserver sections respectively. This also assumes you have a /etc/nginx/proxy_params file. If you don't, make one with: proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; Once you have the config setup how you want: Symlink it to sites-enabled: sudo ln -s /etc/nginx/sites-available/synclounge.yourdomain.com.conf /etc/nginx/sites-enabled/ Check your nginx config for errors: sudo nginx -t If everything looks good, reload nginx with your changes: sudo service nginx reload Then try going to your synclounge install in your browser!","title":"NGINX"},{"location":"self-hosted/linux/#for-production-serious-business-plex-watching","text":"Once you've tested out running this and see it's working (or immediately if you're feeling lucky), you probably want this to just run in the background all the time, including starting up with your server. To do that we'll be using a node utility called pm2 To install pm2 run npm install -g pm2 to install it globally. If you're not running npm with nvm, you probably need to do sudo npm install -g pm2 If you're running the server or web files still from testing, stop them (just ctrl-c will do it). Then from the synclounge directory, we just need to run 2 commands: pm2 start webapp.js --name=sl-web pm2 start server.js --name=sl-server If you run pm2 list , you should see two processes running: \u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 id \u2502 name \u2502 namespace \u2502 version \u2502 mode \u2502 pid \u2502 uptime \u2502 \u21ba \u2502 status \u2502 cpu \u2502 mem \u2502 user \u2502 watching \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524 \u2502 2 \u2502 \u25c9 sl-server \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4521 \u2502 107m \u2502 0 \u2502 online \u2502 0.1% \u2502 17.2mb \u2502 joe \u2502 disabled \u2502 \u2502 1 \u2502 \u25c9 sl-web \u2502 default \u2502 2.0.0 \u2502 fork \u2502 4548 \u2502 107m \u2502 2 \u2502 online \u2502 0.1% \u2502 12.8mb \u2502 joe \u2502 disabled \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 Now go try your synclounge site again and confirm it's still working. If it's not working, you can still see the output from the programs in the pm2 logs. look in ~/.pm2/logs/ for the output and error logs for each of your processes. If it's working, you probably want this to launch on startup now. To do that, first run pm2 save , which will save your 2 processes to run when pm2 starts up. Then call pm2 startup . pm2 will give you a command to run to add your user's pm2 to the server setup. It'll probably look something like this: sudo env PATH=$PATH:/home/user/.nvm/versions/node/v12.7.0/bin /home/user/.nvm/versions/node/v12.7.0/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user Run that, and now your pm2 will start with the server.","title":"For \"Production\" (Serious Business Plex Watching)"},{"location":"self-hosted/linux/#thats-all-folks","text":"If something doesn't appear to work, check the output of the web or server terminal/log outputs, or your nginx access and error log, and ask on Discord .","title":"That's all folks"},{"location":"self-hosted/locally/","text":"Running Locally \u00b6 Requirements \u00b6 Git Node v8.4.0+ First steps \u00b6 Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install Running the webapp \u00b6 Build the webapp: npm run build Notes: This must be done anytime you change the webroot setting Run the webapp using node webapp.js Don't forget that you need to set Access URL as described in Getting Started . The SL web app will be running at http://ip:8088/ or http://ip:8088/WEBROOT if you set webroot . Running the server \u00b6 Run the server using npm run server The SL server will be running at http://ip:8089/slserver .","title":"Running Locally"},{"location":"self-hosted/locally/#running-locally","text":"","title":"Running Locally"},{"location":"self-hosted/locally/#requirements","text":"Git Node v8.4.0+","title":"Requirements"},{"location":"self-hosted/locally/#first-steps","text":"Clone the repo: git clone https://github.com/samcm/SyncLounge Change to the directory: cd synclounge Install packages and dependencies: npm install","title":"First steps"},{"location":"self-hosted/locally/#running-the-webapp","text":"Build the webapp: npm run build Notes: This must be done anytime you change the webroot setting Run the webapp using node webapp.js Don't forget that you need to set Access URL as described in Getting Started . The SL web app will be running at http://ip:8088/ or http://ip:8088/WEBROOT if you set webroot .","title":"Running the webapp"},{"location":"self-hosted/locally/#running-the-server","text":"Run the server using npm run server The SL server will be running at http://ip:8089/slserver .","title":"Running the server"},{"location":"self-hosted/reverse-proxy/","text":"Reverse Proxy \u00b6 If you want to host SyncLounge on your own domain and not having to give out your IP address, you will want to use a reverse proxy. There are many different options such as nginx, haproxy, traefik, etc. The following assume that you are running SyncLounge with default settings. If you have changed any of the default settings, like the port or root, you will want to modify the configurations provided here accordingly. NGINX \u00b6 If you are using the Let's Encrypt container by LinuxServer.io (LSIO) , you can use the provided configs found in LSIO's reverse proxy repo . If you aren't using LSIO's Let's Encrypt container , the configurations found in LSIO's reverse proxy repo for subdomain and subfolder configurations will still be helpful. NOTES: The subdomain conf assumes that you are running the webapp with the default webroot ( / ) and server with default serverroot ( /slserver ). The subfolder conf assumes that you are running the webapp with the webroot set to /slweb and server with default serverroot ( /slserver ). Both assume that you are using the container name synclounge and default ports. If you have changed any of the above, you will need to change the conf file you are using Apache \u00b6 Users have had luck with the following: Apache Subdomain \u00b6 #SyncLounge Server ProxyPass /slserver/socket.io http://:8089/slserver/socket.io/ ProxyPass /slserver http://:8089/slserver/ ProxyPassReverse /slserver http://:8089/slserver/ # SyncLounge Web ProxyPass / http://:8088/ ProxyPassReverse / http://:8088/ Apache Subfolder \u00b6 If you have a working subfolder created, please contribute ! Caddy \u00b6 NGINX adapter for Caddy \u00b6 You can use NGINX config files with Caddy with Caddy's NGINX adapter . While it is currently still in development, it should work pretty well with the NGINX files provided above. Caddy Subdomain \u00b6 Caddy v1 \u00b6 This was provided by LostSoulfly in this comment . { gzip log logs/synclounge.access.log proxy / :8088 { except /socket.io except /slserver websocket transparent } proxy /slserver :8089 { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } proxy /socket.io :8089/slserver/socket.io/ { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } } Caddy v2 \u00b6 { encode gzip log { output file } route /slserver/* { reverse_proxy :8089 } reverse_proxy :8088 } Caddy Subfolder \u00b6 If you have a working subfolder created, please contribute !","title":"Using a Reverse Proxy"},{"location":"self-hosted/reverse-proxy/#reverse-proxy","text":"If you want to host SyncLounge on your own domain and not having to give out your IP address, you will want to use a reverse proxy. There are many different options such as nginx, haproxy, traefik, etc. The following assume that you are running SyncLounge with default settings. If you have changed any of the default settings, like the port or root, you will want to modify the configurations provided here accordingly.","title":"Reverse Proxy"},{"location":"self-hosted/reverse-proxy/#nginx","text":"If you are using the Let's Encrypt container by LinuxServer.io (LSIO) , you can use the provided configs found in LSIO's reverse proxy repo . If you aren't using LSIO's Let's Encrypt container , the configurations found in LSIO's reverse proxy repo for subdomain and subfolder configurations will still be helpful. NOTES: The subdomain conf assumes that you are running the webapp with the default webroot ( / ) and server with default serverroot ( /slserver ). The subfolder conf assumes that you are running the webapp with the webroot set to /slweb and server with default serverroot ( /slserver ). Both assume that you are using the container name synclounge and default ports. If you have changed any of the above, you will need to change the conf file you are using","title":"NGINX"},{"location":"self-hosted/reverse-proxy/#apache","text":"Users have had luck with the following:","title":"Apache"},{"location":"self-hosted/reverse-proxy/#apache-subdomain","text":"#SyncLounge Server ProxyPass /slserver/socket.io http://:8089/slserver/socket.io/ ProxyPass /slserver http://:8089/slserver/ ProxyPassReverse /slserver http://:8089/slserver/ # SyncLounge Web ProxyPass / http://:8088/ ProxyPassReverse / http://:8088/","title":"Apache Subdomain"},{"location":"self-hosted/reverse-proxy/#apache-subfolder","text":"If you have a working subfolder created, please contribute !","title":"Apache Subfolder"},{"location":"self-hosted/reverse-proxy/#caddy","text":"","title":"Caddy"},{"location":"self-hosted/reverse-proxy/#nginx-adapter-for-caddy","text":"You can use NGINX config files with Caddy with Caddy's NGINX adapter . While it is currently still in development, it should work pretty well with the NGINX files provided above.","title":"NGINX adapter for Caddy"},{"location":"self-hosted/reverse-proxy/#caddy-subdomain","text":"","title":"Caddy Subdomain"},{"location":"self-hosted/reverse-proxy/#caddy-v1","text":"This was provided by LostSoulfly in this comment . { gzip log logs/synclounge.access.log proxy / :8088 { except /socket.io except /slserver websocket transparent } proxy /slserver :8089 { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } proxy /socket.io :8089/slserver/socket.io/ { header_upstream Host {host} header_upstream X-Real-IP {remote} header_upstream X-Forwarded-For {remote} websocket transparent } }","title":"Caddy v1"},{"location":"self-hosted/reverse-proxy/#caddy-v2","text":" { encode gzip log { output file } route /slserver/* { reverse_proxy :8089 } reverse_proxy :8088 }","title":"Caddy v2"},{"location":"self-hosted/reverse-proxy/#caddy-subfolder","text":"If you have a working subfolder created, please contribute !","title":"Caddy Subfolder"},{"location":"self-hosted/settings/","text":"Settings \u00b6 The following can be used to change some of the settings in the application via command-line arguments, environment variables (ENV), or the settings.json file. Arguments are passed to the application by using --= when running the application. ENV variables are mostly for Docker but can be set locally on your system. The settings.json file is used by both the Server and Webapp. NOTE: Argument and ENV should be able to be used interchangeably. If you have issues with the ENV, use the argument value in its place. Server \u00b6 Argument ENV Description servers SERVERS Set your own servers list. See below for more information. Optional serverroot SERVER_ROOT Change the base URL of the server app. Ex - /server . Defaults to /slserver server_port SERVER_PORT Change the port the server app uses. Defaults to 8089 Webapp \u00b6 Argument ENV Description webroot WEB_ROOT Change the base URL of the web app. Ex - /lounge webapp_port WEB_PORT Change the port the web app uses. Defaults to 8088 accessUrl WEB_ACCESSURL Set the URL the web app uses for things like invites. Examples: http://IP:8088 http://mysynclounge.com If webroot is set http://IP:8088/ http://mysynclounge.com/ autoJoin AUTOJOIN_ENABLED Set to true to enable auto joining. Defaults to false autoJoinServer AUTOJOIN_SERVERURL Set this to the server URL you want the user to auto join. Required if auto join is enabled. Ex - http://mysynclounge.com/slserver autoJoinRoom AUTOJOIN_ROOM Set this to the room name in the server that you want the users to auto join. Optional autoJoinPassword AUTOJOIN_PASSWORD Set this to the room's password, if it has one. Optional authentication AUTHENTICATION Configure authentication for the server. See below for more information. Optional customServer CUSTOM_SERVER Override the custom server entry in the servers list. See below for more information. Optional Authentication \u00b6 To enable authentication, the following setting and format is used \"authentication\": { \"mechanism\": \"plex\", \"type\": [\"server\", \"user\"], \"authorized\": [ \"PLEX_SERVER_MACHINE_ID\", \"PLEX_USER_EMAIL\", \"PLEX_USER_NAME\", ] } Field Description mechanism Specifies how SyncLounge should authenticate a user. This is mostly for future-proofing to allow other authentication mechanisms to be provided. Values: plex - Authenticate against Plex Defaults to none type This determines how the mechanism provides authentication Values: server , user server checks against the plex server machine identifier ( PLEX_SERVER_MACHINE_ID ). If the user has access to a server matching any of the IDs in the authorized list, they will be granted access. See \"Get your Plex Server's Machine Identifier\" below for details. user checks against the user's email ( PLEX_USER_EMAIL ) or username ( PLEX_USER_NAME ). If either matches a value in the authorized list, they will be granted access. authorized This is a list of information for who is authorized, per the above setting. Get your Plex Server's Machine Identifier \u00b6 To get the Plex Server's Machine Identifier ( machineIdentifier ) for your server you will need to get your Plex Authentication Token and put this into your browser, replacing YourTokenGoesHere with your token: https://plex.tv/pms/servers.xml?includeHttps=1&X-Plex-Token=YourTokenGoesHere You should then see something like this: In the entry that starts with / . image Specifies the URL of the image to use. defaultRoom Specifies the name of the room to send the user to after clicking \"Connect\". Optional defaultPassword Specifies the password of the room, if needed. Optional Customize the Custom Server entry \u00b6 The Custom Server entry can be modified by adding this to your settings. This takes a single server object and will override the the custom server in the server list. \"customServer\": { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" } Customize the entire list \u00b6 The entire servers list can be modified with your own list of servers. If this setting is provided, it will ignore the customServer setting above. Also, if only one server is provided, it will automatically join it! \"servers\": [ { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://1.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" }, { \"name\": \"Custom Server 2\", \"location\": \"Custom Location\", \"url\": \"https://2.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-2.png\", \"defaultRoom\": \"DefaultRoom\" }, { \"name\": \"Custom Server 3\", \"location\": \"Custom Location\", \"url\": \"https://3.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-3.png\", \"defaultRoom\": \"DefaultRoom\", \"defaultPassword\": \"DefaultPassword123\" } ]","title":"Settings"},{"location":"self-hosted/settings/#settings","text":"The following can be used to change some of the settings in the application via command-line arguments, environment variables (ENV), or the settings.json file. Arguments are passed to the application by using --= when running the application. ENV variables are mostly for Docker but can be set locally on your system. The settings.json file is used by both the Server and Webapp. NOTE: Argument and ENV should be able to be used interchangeably. If you have issues with the ENV, use the argument value in its place.","title":"Settings"},{"location":"self-hosted/settings/#server","text":"Argument ENV Description servers SERVERS Set your own servers list. See below for more information. Optional serverroot SERVER_ROOT Change the base URL of the server app. Ex - /server . Defaults to /slserver server_port SERVER_PORT Change the port the server app uses. Defaults to 8089","title":"Server"},{"location":"self-hosted/settings/#webapp","text":"Argument ENV Description webroot WEB_ROOT Change the base URL of the web app. Ex - /lounge webapp_port WEB_PORT Change the port the web app uses. Defaults to 8088 accessUrl WEB_ACCESSURL Set the URL the web app uses for things like invites. Examples: http://IP:8088 http://mysynclounge.com If webroot is set http://IP:8088/ http://mysynclounge.com/ autoJoin AUTOJOIN_ENABLED Set to true to enable auto joining. Defaults to false autoJoinServer AUTOJOIN_SERVERURL Set this to the server URL you want the user to auto join. Required if auto join is enabled. Ex - http://mysynclounge.com/slserver autoJoinRoom AUTOJOIN_ROOM Set this to the room name in the server that you want the users to auto join. Optional autoJoinPassword AUTOJOIN_PASSWORD Set this to the room's password, if it has one. Optional authentication AUTHENTICATION Configure authentication for the server. See below for more information. Optional customServer CUSTOM_SERVER Override the custom server entry in the servers list. See below for more information. Optional","title":"Webapp"},{"location":"self-hosted/settings/#authentication","text":"To enable authentication, the following setting and format is used \"authentication\": { \"mechanism\": \"plex\", \"type\": [\"server\", \"user\"], \"authorized\": [ \"PLEX_SERVER_MACHINE_ID\", \"PLEX_USER_EMAIL\", \"PLEX_USER_NAME\", ] } Field Description mechanism Specifies how SyncLounge should authenticate a user. This is mostly for future-proofing to allow other authentication mechanisms to be provided. Values: plex - Authenticate against Plex Defaults to none type This determines how the mechanism provides authentication Values: server , user server checks against the plex server machine identifier ( PLEX_SERVER_MACHINE_ID ). If the user has access to a server matching any of the IDs in the authorized list, they will be granted access. See \"Get your Plex Server's Machine Identifier\" below for details. user checks against the user's email ( PLEX_USER_EMAIL ) or username ( PLEX_USER_NAME ). If either matches a value in the authorized list, they will be granted access. authorized This is a list of information for who is authorized, per the above setting.","title":"Authentication"},{"location":"self-hosted/settings/#get-your-plex-servers-machine-identifier","text":"To get the Plex Server's Machine Identifier ( machineIdentifier ) for your server you will need to get your Plex Authentication Token and put this into your browser, replacing YourTokenGoesHere with your token: https://plex.tv/pms/servers.xml?includeHttps=1&X-Plex-Token=YourTokenGoesHere You should then see something like this: In the entry that starts with / . image Specifies the URL of the image to use. defaultRoom Specifies the name of the room to send the user to after clicking \"Connect\". Optional defaultPassword Specifies the password of the room, if needed. Optional","title":"Server object"},{"location":"self-hosted/settings/#customize-the-custom-server-entry","text":"The Custom Server entry can be modified by adding this to your settings. This takes a single server object and will override the the custom server in the server list. \"customServer\": { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" }","title":"Customize the Custom Server entry"},{"location":"self-hosted/settings/#customize-the-entire-list","text":"The entire servers list can be modified with your own list of servers. If this setting is provided, it will ignore the customServer setting above. Also, if only one server is provided, it will automatically join it! \"servers\": [ { \"name\": \"Custom Server 1\", \"location\": \"Custom Location\", \"url\": \"https://1.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo.png\" }, { \"name\": \"Custom Server 2\", \"location\": \"Custom Location\", \"url\": \"https://2.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-2.png\", \"defaultRoom\": \"DefaultRoom\" }, { \"name\": \"Custom Server 3\", \"location\": \"Custom Location\", \"url\": \"https://3.mycustomserver.com/slserver\", \"image\": \"https://mycustomserver.com/logo-3.png\", \"defaultRoom\": \"DefaultRoom\", \"defaultPassword\": \"DefaultPassword123\" } ]","title":"Customize the entire list"},{"location":"self-hosted/synology/","text":"Here's how you set up on SyncLounge with Docker on Synology NAS. jacobmix made this awesome how-to for Synology! The original gist can be found here First make sure you got the Docker Hub in your registry: Download the latest SyncLounge image: Launch the image, and go to advanced settings: Enable auto-restart, and make a shortcut if you want: You can edit settings later by clicking the container, and pressing 'Edit' if it's not running. Configure the network, and ports to use: Just use the same network as Docker, and leave them as default if you can. Set the environment variables: Click Apply, finish the setup, an start it. It will take 20-30 minutes to start every time. If you wanna update the container you have to re-download/overwrite the image. Then clear the container, and restart it: Hope this good enough to get you through the setup. Now if you want to actually use SyncLounge: Connect with IP:PORT1/slweb Log-in with you Plex account Choose your player. Select Custom Server. Enter IP:PORT2/slserver Type in the room name, and password. Then you should be good to go! You can invite people with the button at the top. Other people need access to the same episode/movie/video on their/your/someones Plex server. You can invite people to your Plex like this: They need a Plex account before you can share your server with them. You just need to run the server, and forward the ports. Some notes: You can use the SyncLounge Player (BETA) player in your browser.","title":"Running on Synology NAS"}]} \ No newline at end of file diff --git a/self-hosted/reverse-proxy/index.html b/self-hosted/reverse-proxy/index.html index 44e00f2..e5d5c7d 100644 --- a/self-hosted/reverse-proxy/index.html +++ b/self-hosted/reverse-proxy/index.html @@ -602,7 +602,7 @@
  • - Nginx + NGINX
  • @@ -642,6 +642,13 @@