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-bc6cf82
release-1.43.4.10903-e5521bd8c
StableModified: meta.json2026-10-15 01:21:54

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.

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-10-16
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