andrew-codes / playnite-web

Self-hosted Playnite companion web app; offering remote control, automation, sharing what’s in your library with friends.
GNU Affero General Public License v3.0
16 stars 4 forks source link
games home-automation mqtt playnite playnite-extension self-hosted

Playnite-Web

Build Status Latest Release License GitHub Sponsors Join Chat

Share, remote control, and automate your game library online with self-hosted Playnite-Web.

Playnite-web offers:

Browse screenshot

Table of Contents

Getting Started

Playnite-Web consists the following:

All components are required.

Component Deployment Mechanism Purpose
database Docker image / bring your own Mongo DB database that stores game data in games database.
MQTT broker Docker image / bring your own Provides a communication mechanism between Playnite and Playnite-Web.
Playnite-Web Plugin Extension installed into Playnite The plugin sends and receives messages via MQTT when data in Playnite is changed.
Playnite-Web App Docker image Web application and UI to browse and view game library. Updates database from Playnite-Web Plugin. Can be exposed to Internet to share with friends.

Note, if you want to update your game library only, and not run Playnite-Web, you may do so by running the playnite-web-game-db-updater. However, do not run both this and Playnite-Web App. See the playnite-web-game-db-updater documentation for more details.

Deployment

MQTT Broker

Recommended to use docker image eclipse-mosquitto. Things to note when deploying:

Database

Recommended to use docker image mongo:focal. Things to note when deploying:

Playnite-Web Plugin

  1. Download (latest) version release of Playnite extension (release asset named "PlayniteWeb_ec3439e3-51ee-43cb-9a8a-5d82cf45edac_0_1.pext").
  2. Open Playnite and drag downloaded file into the Playnite. It should prompt to install the plugin.
  3. Open the plugin's settings and enter the MQTT connection information to your MQTT broker. > ![Mqtt connection settings screenshot](docs/assets/images/mqtt-connection-screenshot.png)
  4. Open the plugin's settings and enter the a device ID and device name under Topics. > ![Topics settings screenshot](docs/assets/images/topics-screenshot.png)

playnite-web-app

Use the docker packaged image from the repo. Ensure you are using the same release version as the Plugin (above). Example image: ghcr.io/andrew-codes/playnite-web-app:1.0.0

Environment Variables
Environment Variable Value Notes
PORT Defaults to 3000 Port in which web application is accessible.
DB_HOST IP address/hostname of Mongo DB database
DB_PORT Port of Mongo DB database Default for MongoDB image is 27017
DB_USERNAME Username to access database Optional, only required if disabled anonymous access
DB_PASSWORD Password to access database Optional, only required if disabled anonymous access
DB_URL MongoDB connection URL Optional, alternative to individual DB connection options
DEBUG "playnite-web/*" Optional, for troubleshooting; send logs to STDIO
USERNAME Username used to login
PASSWORD Password value used to login
SECRET Secret used to protect credentials
MQTT_HOST IP address/hostname of MQTT broker.
MQTT_PORT Port of MQTT broker Default for MQTT image is 1883
MQTT_USERNAME Username to access MQTT broker Optional, only required if disabled anonymous access
MQTT_PASSWORD Password to access MQTT broker Optional, only required if disabled anonymous access

Post Deployment Steps

  1. Open Playnite and select and "Sync Library" from Playnite Web's menu setting. This is only required once.

    Sync Library menu setting

  2. Navigate to the web app; http://$PLAYNITE_WEB_APP_IP:$PORT

Contributing

  1. Read through our contributing guidelines.
  2. Next, read and set up your development environment.
  3. Additionally, refer to the design docs.