GitPedia

Discord rich presence plex

Displays your Plex status on Discord using Rich Presence

From phin05·Updated June 28, 2026·View on GitHub·

Discord Rich Presence for Plex (DRPP) is an application that displays your [Plex](https://www.plex.tv/) status on [Discord](https://discord.com/) using [Rich Presence](https://docs.discord.com/developers/rich-presence/overview). The project is written primarily in Go, distributed under the GNU Affero General Public License v3.0 license, first published in 2018. Key topics include: discord, plex, rich-presence.

Latest release: v3.4.0
May 12, 2026View Changelog →

Discord Rich Presence for Plex

Discord Rich Presence for Plex (DRPP) is an application that displays your Plex status on Discord using Rich Presence.

Latest Release
Build Status

<img width="646" height="276" alt="Showcase" src="https://github.com/user-attachments/assets/a8064002-0b3e-43d4-96d5-74864e514cf3" />

Features

  • Automatically displays your Plex playback activity (movies, TV shows, music, clips) on Discord with poster artwork, progress, buttons, external links, and metadata.
  • Web-based user interface for managing all settings, interactive Plex authentication, and viewing live logs.
  • Ability to customise all fields shown in your Rich Presence for each media type using template strings. [Example]
  • Support for Windows, Linux (including Docker), and macOS.

Usage

Getting Started

If you're on Linux, you can run DRPP with Docker.

  1. Download the latest release for your platform and extract it.
  2. Run the executable file.
  3. Open the web interface to configure DRPP:
    • Click the DRPP icon in your system tray and select Web UI, or
    • Navigate to http://localhost:8040, or
    • Run the executable file again.
  4. Click Add User and complete the interactive Plex authentication flow.

On Windows and Linux, DRPP has an icon in the system tray. Clicking this allows you to launch the web interface in your default browser.

Information about each config property and templating is available in the web interface.

The web interface is meant for local access only and must not be exposed to the internet. Even if you expose it, all connections from external networks are blocked by default.

Discord Setup

Discord must be running on the same machine as DRPP.

The "Share my activity" setting must be enabled in Discord for Rich Presence to work.

Navigate to Discord Settings → Activity Settings → Activity Privacy to enable it.

CLI Flags

FlagEnvironment VariableDefault ValueDescription
--data-dirDRPP_DATA_DIRdrpp in user config directory<details><summary>User config directory path</summary>%APPDATA% on Windows<br />$XDG_CONFIG_HOME or $HOME/.config on Linux<br />$HOME/Library/Application Support on macOS</details>Path to data directory
--config-fileDRPP_CONFIG_FILEconfig.yml in data directoryPath to config file
--cache-fileDRPP_CACHE_FILEcache.json in data directoryPath to cache file
--log-fileDRPP_LOG_FILEPath to log file
--disable-web-uiDRPP_DISABLE_WEB_UIfalseDisable web interface
--disable-systrayDRPP_DISABLE_SYSTRAYfalseDisable system tray icon

Environment variables take precedence over default values but are overridden by explicitly passed flags.

Docker

Image

ghcr.io/phin05/discord-rich-presence-plex

Docker Compose Example

yaml
services: drpp: container_name: drpp image: ghcr.io/phin05/discord-rich-presence-plex:latest restart: unless-stopped ports: - 127.0.0.1:8040:8040 environment: DRPP_UID: 1000 DRPP_GID: 1000 volumes: - ./data:/app/data - /run/user/1000:/run/app

Once DRPP is running, navigate to http://localhost:8040. Click Add User and complete the interactive Plex authentication flow.

Make sure to bind the port only to 127.0.0.1 as shown above.

Volumes

PathPurpose
/app/dataDirectory for persistent config and cache storage
/run/appDiscord's runtime directory for inter-process communication

Discord's runtime directory is determined by the first set environment variable from the list below, checked in the environment where Discord is running:

  1. XDG_RUNTIME_DIR
  2. TMPDIR
  3. TMP
  4. TEMP

If none are set, /tmp is used.

For example, if XDG_RUNTIME_DIR is /run/user/1000, mount that directory into the container at /run/app.

Environment Variables

VariableDescription
DRPP_UIDUID of the user running Discord (find by running id)
DRPP_GIDGID of the user running Discord (find by running id)
DRPP_NO_RUNTIME_DIR_CHOWNSet to true to skip ownership change of /run/app

When both DRPP_UID and DRPP_GID are set, DRPP changes ownership of /run/app and /app to match the specified UID and GID to prevent permission issues.

Containerised Discord

To run Discord in a container as well, mount a shared directory from the host into both the Discord container (as Discord's runtime directory) and the DRPP container (at /run/app). Ensure that the shared directory is owned by the user the containerised Discord process runs as.

<details> <summary>Example</summary>

Docker Compose example using kasmweb/discord

yaml
services: kasmweb-discord: container_name: kasmweb-discord image: kasmweb/discord:1.14.0 restart: unless-stopped ports: - 127.0.0.1:6901:6901 shm_size: 512m environment: VNC_PW: password XDG_RUNTIME_DIR: /run/user/1000 volumes: - ./discord:/home/kasm-user/.config/discord - ./runtime:/run/user/1000 user: 0:0 entrypoint: sh -c "chown -R kasm-user:kasm-user /home/kasm-user && chmod 700 /run/user/1000 && chown -R kasm-user:kasm-user /run/user/1000 && su kasm-user -c '/dockerstartup/kasm_default_profile.sh /dockerstartup/vnc_startup.sh /dockerstartup/kasm_startup.sh'" drpp: container_name: drpp image: ghcr.io/phin05/discord-rich-presence-plex:latest restart: unless-stopped ports: - 127.0.0.1:8040:8040 volumes: - ./data:/app/data - ./runtime:/run/app:ro depends_on: - kasmweb-discord
</details>

Docker on Windows and macOS

DRPP's container image is Linux-based. Docker uses virtualisation to run Linux containers on Windows and macOS. In such cases, for DRPP to communicate with Discord, Discord needs to run in a Linux container as well, as per the instructions above.

Other Information

Image Upload Providers

DRPP downloads poster images from your Plex server and uploads them to an external image host to enable Discord to fetch and serve those images. The following image upload providers are available:

Antivirus False Positives

DRPP is written in Go, and unfortunately, antivirus programs frequently misidentify compiled Go binaries.

This issue is directly addressed in Go's official documentation:

Why does my virus-scanning software think my Go distribution or compiled binary is infected?

This is a common occurrence, especially on Windows machines, and is almost always a false positive. Commercial virus scanning programs are often confused by the structure of Go binaries, which they don’t see as often as those compiled from other languages.

In any case, if you believe the report is in error, please report a bug to the supplier of your virus scanner. Maybe in time virus scanners can learn to understand Go programs.

If you encounter this false positive issue, add an exception for DRPP's executable in your antivirus settings.

If you'd like to verify the safety of DRPP, everything is fully transparent:

  • You can inspect the complete source code in this repository.
  • The released executables are built automatically using GitHub Actions. [Workflow Runs]
  • GitHub generates attestations to prove that the released executables are built using the exact code and automated workflow you see in this repository. [Attestations]

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from phin05/discord-rich-presence-plex via the GitHub API.Last fetched: 6/28/2026