From 694b77bea5b9ef3f7b16262ca033e8148c59ad38 Mon Sep 17 00:00:00 2001 From: Thomas Kendrick Date: Thu, 1 Jan 2026 15:07:46 +0000 Subject: [PATCH] feat: add plex --- AGENTS.md | 2 +- README.md | 4 +++- media/plex/docker-compose.yml | 42 +++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 media/plex/docker-compose.yml diff --git a/AGENTS.md b/AGENTS.md index a83e748..da2cba1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -68,7 +68,7 @@ Common variables expected across stacks: | **Dashboards** | Homepage | | **DNS** | AdGuard Home, DuckDNS | | **Games** | Core Keeper | -| **Media** | ArrStack (Radarr/Sonarr etc.), Jellyfin | +| **Media** | ArrStack (Radarr/Sonarr etc.), Jellyfin, Plex | | **Monitoring** | Beszel, Glances, Uptime Kuma | | **Proxies** | Nginx Proxy Manager (NPM), Traefik | | **Remote Access** | Cloudflared | diff --git a/README.md b/README.md index f6efd57..7a2f81e 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,9 @@ Because all work and no play makes the server a dull boy. * **Books**: `books/booklore` - eBook management (Booklore). * **Games**: `games/core-keeper` - Dedicated server for Core Keeper. -* **Media**: `media/` - (Coming Soon) The media stack. +* **Media - Jellyfin**: `media/jellyfin` - Jellyfin Media Server. +* **Media - Plex**: `media/plex` - Plex Media Server. +* **Media - ArrStack**: `media/arrstack` - The *Arr stack. ### Directory Structure diff --git a/media/plex/docker-compose.yml b/media/plex/docker-compose.yml new file mode 100644 index 0000000..1c5c763 --- /dev/null +++ b/media/plex/docker-compose.yml @@ -0,0 +1,42 @@ +version: "3.8" + +services: + plex: + image: lscr.io/linuxserver/plex:latest + container_name: plex + devices: + - /dev/dri/renderD128:/dev/dri/renderD128 + - /dev/dri/card1:/dev/dri/card1 + group_add: + - "992" # Replace this with your host's 'render' group ID + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + - VERSION=docker + volumes: + - ${DOCKER_PATH}/plex/config:/config + - ${MEDIA_PATH}:/media + expose: + - 32400 + restart: unless-stopped + labels: + # Traefik + traefik.enable: "true" + traefik.http.routers.plex.rule: "Host(`plex.${DOMAIN}`)" + traefik.http.routers.plex.entrypoints: "https" + traefik.http.routers.plex.service: "plex" + traefik.http.routers.plex.tls.certresolver: "cloudflare" + traefik.http.services.plex.loadbalancer.server.port: "32400" + # Homepage + homepage.group: "Media" + homepage.name: "Plex" + homepage.icon: "plex.svg" + homepage.href: "https://plex.${DOMAIN}" + homepage.description: "Media Server" + networks: + - traefik_public + +networks: + traefik_public: + external: true