plex

plex

Docker app from hotio's Repository

Overview

WireGuard VPN, Privoxy and Unbound built-in! It's Plex, do I really need to explain what it is?

GitHub
ghcr.io

Upstream Project

Tags Description Commit Last Updated
latest
release
release-e5ea70f
release-1.43.3.10828-00f62d37d
StableModified: meta.json2026-07-16 22:09:07

Starting the container

cli

docker run --rm \
    --name="plex" \
    -p 32400:32400 \
    -e PUID=1000 \
    -e PGID=1000 \
    -e UMASK=002 \
    -e TZ="Etc/UTC" \
    -e WEBUI_PORTS="32400/tcp" \ #(3)!
    -e PLEX_CLAIM_TOKEN="" \
    -e PLEX_ADVERTISE_URL="" \
    -e PLEX_NO_AUTH_NETWORKS="" \
    -e PLEX_BETA_INSTALL="false" \
    -e PLEX_PURGE_CODECS="false" \
    -v /<host_folder_config>:/config \
    -v /<host_folder_data>:/data \
    ghcr.io/hotio/plex

compose

services:
  plex:
    container_name: plex
    image: ghcr.io/hotio/plex
    ports:
      - "32400:32400"
    environment:
      - PUID=1000
      - PGID=1000
      - UMASK=002
      - TZ=Etc/UTC
      - WEBUI_PORTS=32400/tcp #(3)!
      - PLEX_CLAIM_TOKEN
      - PLEX_ADVERTISE_URL
      - PLEX_NO_AUTH_NETWORKS
      - PLEX_BETA_INSTALL=false
      - PLEX_PURGE_CODECS=false
    volumes:
      - /<host_folder_config>:/config
      - /<host_folder_data>:/data

Claim your server

When running Plex on a docker bridge network, you can't just get to the webui and start configuring it, you'll need to claim it first. Go to plex.tv/claim and login with your account, copy the claim token and add it to the environment variable like this -e PLEX_CLAIM_TOKEN="claim-xxxxxxxxxxxxxxxxxxxx". When starting the new plex server for the first time, the server will be added to your account.

Plex Beta

If you are a Plex Pass subscriber, you can enable the install of beta builds with -e PLEX_BETA_INSTALL="true". When the container starts, a version check is done for the latest beta and installed if a newer version is found.

Environment variables PLEX_ADVERTISE_URL and PLEX_NO_AUTH_NETWORKS

The variables correspond to the below plex network settings.

Plex settings

The variable PLEX_ADVERTISE_URL is useful to aid your local clients in discovering your plex server when running in the bridge network mode. Most likely you would use something like http://192.168.0.10:32400. You could use PLEX_NO_AUTH_NETWORKS when you're locked out and need to regain access without providing credentials.

Hardware Transcoding

All the usual hardware accelerated transcoding is supported.

Getting a token

The following command will interactively ask for your credentials and give you a token. If you don't use 2FA, just press enter.

docker run --rm -it --entrypoint="" hotio/plex bash /app/get-token.sh

TOP secret stuff

If you do -e PLEX_BETA_INSTALL="https://...", stuff happens for which no support will be given.

Install Plex on Unraid in a few clicks.

Find Plex in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Plex Review the template variables and paths Click Install

Requirements

Don't forget to click **Show more settings...** for all **Variables**! If you do not use the VPN feature, you can remove all VPN related **Variables** and **Extra Parameters** (turn on **ADVANCED VIEW**).

Related apps

Details

Repository
ghcr.io/hotio/plex:latest
Last Updated2026-07-17
First Seen2023-08-20

Runtime arguments

Web UI
http://[IP]:[PORT:32400]/web
Network
bridge
Shell
bash
Privileged
false
Extra Params
--hostname=plex.internal --cap-add=NET_ADMIN

Template configuration

Host Port for 32400Porttcp

Container Port: 32400

Target
32400
Default
32400
Host Path for /configPathrw

Container Path: /config

Target
/config
Host Path for /dataPathrw

Container Path: /data

Target
/data
PLEX_CLAIM_TOKENVariable

Container Variable: PLEX_CLAIM_TOKEN&lt;br&gt;Example: claim-xxxxxxxxxxxxxxxxxxxx&lt;br&gt;Visit plex.tv/claim in your browser to get your claim code.

PLEX_ADVERTISE_URLVariable

Container Variable: PLEX_ADVERTISE_URL

PLEX_NO_AUTH_NETWORKSVariable

Container Variable: PLEX_NO_AUTH_NETWORKS

PLEX_BETA_INSTALLVariable

Container Variable: PLEX_BETA_INSTALL

Default
false|true
PLEX_PURGE_CODECSVariable

Container Variable: PLEX_PURGE_CODECS

Default
false|true
PRIVOXY_ENABLEDVariable

Container Variable: PRIVOXY_ENABLED

Default
false|true
UNBOUND_ENABLEDVariable

Container Variable: UNBOUND_ENABLED

Default
false|true
UNBOUND_NAMESERVERSVariable

Container Variable: UNBOUND_NAMESERVERS

VPN_ENABLEDVariable

Container Variable: VPN_ENABLED

Default
false|true
VPN_CONFVariable

Container Variable: VPN_CONF

Default
wg0
VPN_PROVIDERVariable

Container Variable: VPN_PROVIDER

Default
generic|proton|pia
VPN_LAN_NETWORKVariable

Container Variable: VPN_LAN_NETWORK

VPN_LAN_LEAK_ENABLEDVariable

Container Variable: VPN_LAN_LEAK_ENABLED

Default
false|true
VPN_EXPOSE_PORTS_ON_LANVariable

Container Variable: VPN_EXPOSE_PORTS_ON_LAN

VPN_AUTO_PORT_FORWARDVariable

Container Variable: VPN_AUTO_PORT_FORWARD

Default
false
VPN_PORT_REDIRECTSVariable

Container Variable: VPN_PORT_REDIRECTS

VPN_HEALTHCHECK_ENABLEDVariable

Container Variable: VPN_HEALTHCHECK_ENABLED

Default
false|true
VPN_NAMESERVERSVariable

Container Variable: VPN_NAMESERVERS

VPN_PIA_USERVariable

Container Variable: VPN_PIA_USER

VPN_PIA_PASSVariable

Container Variable: VPN_PIA_PASS

VPN_PIA_PREFERRED_REGIONVariable

Container Variable: VPN_PIA_PREFERRED_REGION

VPN_PIA_DIP_TOKENVariable

Container Variable: VPN_PIA_DIP_TOKEN

VPN_PIA_PORT_FORWARD_PERSISTVariable

Container Variable: VPN_PIA_PORT_FORWARD_PERSIST

Default
false|true
PUIDVariable

Container Variable: PUID

Default
99
PGIDVariable

Container Variable: PGID

Default
100
UMASKVariable

Container Variable: UMASK

Default
002