selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

hotio/plex logo

Self-host hotio/plex

release-1.43.4.10903-e5521bd8c

Docker image for Plex Media Server with hardware transcoding

ReleaseOpen SourceGPL-3.0
Updatedlast week
LanguageDockerfile
Setup difficultyModerate
Stars
40
Port
32400 (Plex Media Server web UI and API)
Docker
ghcr.io/hotio/plex
Install with Docker Compose
hotio/plex screenshot 1

What is hotio/plex?

hotio/plex is a Docker image that packages Plex Media Server for easy self-hosting. It includes support for hardware-accelerated transcoding (Intel QuickSync, NVIDIA, AMD), WireGuard VPN integration with multiple providers (Generic, ProtonVPN, PIA), automatic Plex Pass beta updates, and a claim token workflow for initial server setup. The image runs as a non-root user with configurable PUID/PGID and uses standard Plex port 32400. Configuration is done via environment variables for paths, networking, and optional VPN. The project is maintained by the hotio organization which provides a suite of media-related Docker images.

Should you self-host hotio/plex?

hotio/plex scores 46/100 on selfhost.directory (how scoring works) and ranks #78 of 118 in Media Server. It has 40 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is GPL-3.0-licensed and written mostly in Dockerfile.

Its closest alternative on selfhost.directory is Jellyfin (88/100, 58 740 stars). It scores higher overall, so compare the two before you pick. See hotio/plex vs Jellyfin side by side.

Features

  • Claim Token Setup
  • Hardware Transcoding
  • Non-root user
  • Plex Pass Beta Updates
  • Token Generation Helper
  • WireGuard VPN support

How to install hotio/plex

Install hotio/plex with Docker Compose

Environment variables
PUID, PGID, UMASK, TZ, WEBUI_PORTS, PLEX_CLAIM_TOKEN, PLEX_ADVERTISE_URL, PLEX_NO_AUTH_NETWORKS, PLEX_BETA_INSTALL, PLEX_PURGE_CODECS

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

Deploy with docker-compose

How to configure hotio/plex

  • PGID1000Group ID for file permissions

    Group ID for file permissions

  • PLEX_ADVERTISE_URLAdvertise URL for local client discovery (e.g. http://192.168.0.10:32400)

    Advertise URL for local client discovery (e.g. http://192.168.0.10:32400)

  • PLEX_BETA_INSTALLfalseEnable Plex Pass beta builds (true/false or custom URL)

    Enable Plex Pass beta builds (true/false or custom URL)

    values: true, false, or custom URL

  • PLEX_CLAIM_TOKENClaim token from plex.tv/claim for initial server setup

    Claim token from plex.tv/claim for initial server setup

  • PLEX_NO_AUTH_NETWORKSNetworks allowed without authentication

    Networks allowed without authentication

  • PLEX_PURGE_CODECSfalsePurge codecs on startup

    Purge codecs on startup

    values: true, false

  • PRIVOXY_ENABLEDfalseEnable Privoxy proxy

    Enable Privoxy proxy

    values: true, false

  • PUID1000User ID for file permissions

    User ID for file permissions

  • TZEtc/UTCTimezone

    Timezone

  • UMASK002File creation mask

    File creation mask

  • UNBOUND_ENABLEDfalseEnable Unbound DNS resolver

    Enable Unbound DNS resolver

    values: true, false

  • UNBOUND_NAMESERVERSNameservers for Unbound

    Nameservers for Unbound

    values: Comma-separated

  • VPN_AUTO_PORT_FORWARDfalseAuto-retrieve forwarded port from VPN provider

    Auto-retrieve forwarded port from VPN provider

    values: true, false, or port number

  • VPN_CONFwg0WireGuard config name (e.g. wg0)

    WireGuard config name (e.g. wg0)

  • VPN_ENABLEDfalseEnable WireGuard VPN

    Enable WireGuard VPN

    values: true, false

  • VPN_EXPOSE_PORTS_ON_LANExtra ports to expose on LAN

    Extra ports to expose on LAN

    values: Comma-separated port/protocol (e.g. 7878/tcp,9117/tcp)

  • VPN_HEALTHCHECK_ENABLEDfalseEnable VPN connectivity health checks

    Enable VPN connectivity health checks

    values: true, false

  • VPN_INTERFACE_PREFIXESeth,enpNetwork interface prefixes for Docker networks

    Network interface prefixes for Docker networks

  • VPN_LAN_LEAK_ENABLEDfalseAllow all VPN LAN traffic (dangerous)

    Allow all VPN LAN traffic (dangerous)

    values: true, false

  • VPN_LAN_NETWORKLAN network CIDR for web UI access

    LAN network CIDR for web UI access

    values: CIDR notation (e.g. 192.168.1.0/24)

  • VPN_NAMESERVERSCustom nameservers for VPN

    Custom nameservers for VPN

    values: Comma-separated (e.g. 8.8.8.8,1.1.1.1@853#cloudflare-dns.com)

  • VPN_PIA_DIP_TOKENPIA dedicated IP token

    PIA dedicated IP token

  • VPN_PIA_PASSPIA VPN password

    PIA VPN password

  • VPN_PIA_PORT_FORWARD_PERSISTfalsePersist PIA forwarded port

    Persist PIA forwarded port

    values: true, false

  • VPN_PIA_PREFERRED_REGIONPIA preferred region ID

    PIA preferred region ID

  • VPN_PIA_USERPIA VPN username

    PIA VPN username

  • VPN_PORT_REDIRECTSPort redirects for VPN

    Port redirects for VPN

    values: Port redirect syntax (e.g. 3000@3001/tcp)

  • VPN_PROVIDERgenericVPN provider type

    VPN provider type

    values: generic, proton, pia

  • WEBUI_PORTS32400/tcpPorts for web UI, used for firewall rules

    Ports for web UI, used for firewall rules

More in Media Streaming

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…