From 579787c8db3c0c57a0ee6e548fdaf537a7c8eea7 Mon Sep 17 00:00:00 2001 From: thethreemagi Date: Fri, 31 Jul 2026 19:34:52 +0100 Subject: [PATCH] plex: Media/ cache lives on the 3TB ext4 disk from day one, not the SSD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bind mount is now active, not a commented Phase-2 option — Mike's call 2026-07-31 (337 GB is too large for the SSD). Quick Sync confirmed as the transcode device; NAS account is read-only on the library shares. --- plex/docker-compose.yml | 43 ++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/plex/docker-compose.yml b/plex/docker-compose.yml index 496ced0..185925f 100644 --- a/plex/docker-compose.yml +++ b/plex/docker-compose.yml @@ -28,8 +28,11 @@ services: # Claiming would create a NEW server identity and throw that away. devices: - # Quick Sync on the UHD 630. No session cap and better HDR tone mapping - # than the Pascal-era NVENC on the 1070. + # Quick Sync on the UHD 630 — DECIDED 2026-07-31. No session cap and + # better HDR tone mapping than the Pascal-era NVENC on the 1070, and the + # i915 driver lives in the kernel, so nothing breaks on updates. The + # GTX 1070 stays free for other work. Requires the BIOS iGPU + # Multi-Monitor toggle or /dev/dri does not exist. - /dev/dri:/dev/dri group_add: @@ -39,36 +42,36 @@ services: - "${RENDER_GID:-993}" volumes: - # ---- Plex data directory ------------------------------------------- - # Whole directory on the SSD: database, Metadata/ (25 GB of posters) and - # Media/ (337 GB of migrated preview cache). ~364 GB in ~440 GB usable. - # Fully supported layout — no split, no bind-mount trickery. + # ---- Plex data directory (SSD): database + Metadata, NOT Media/ ------- + # The SQLite database is the most latency-sensitive thing on the box and + # belongs on flash. Metadata/ (25 GB of posters) rides along. The 337 GB + # Media/ preview cache does NOT — see the bind below. - type: bind source: /srv/plex/config target: /config - # ---- PHASE 2 (post-soak, optional) ---------------------------------- - # Relocate the 337 GB preview cache to the 3 TB ext4 disk so future - # thumbnail growth (~28 MB per content-hour) stops consuming the SSD. + # ---- Preview/thumbnail cache on the 3 TB ext4 disk — NOT the SSD ------ + # Mike's call 2026-07-31: 337 GB is too large for the 500 GB SSD, so + # Media/ lives on /srv/data (the former D:, now ext4) from day one. # Long-form syntax deliberately: the target path contains spaces, which # the short "a:b" form handles badly. Docker orders mounts by target # depth, so this correctly lands inside the /config mount above. # - # Plex does NOT support relocating this directory. Enable it only after - # running scripts/60-media-relocate.sh, which performs the move and then - # forces thumbnail generation on a single title to prove that writes - # succeed across the filesystem boundary. Rollback is moving it back. - # - # - type: bind - # source: /srv/data/plex-media - # target: /config/Library/Application Support/Plex Media Server/Media + # Plex does NOT support relocating this directory natively — this bind + # mount is the mechanism. After first start, force thumbnail generation + # on one title to prove writes succeed across the filesystem boundary + # (EXDEV) — that failure mode can only be tested, not reasoned about. + - type: bind + source: /srv/data/plex-media + target: /config/Library/Application Support/Plex Media Server/Media - # ---- NAS media, mounted at the SAME paths the database stores ------- + # ---- NAS media, mounted at the SAME paths the database stores --------- # The remap rewrites \\korval\X -> /mnt/nas/X, so the container must see # exactly /mnt/nas/X. Six separate entries rather than one bind of # /mnt/nas, because a plain bind does not carry the submounts beneath it. - # Read-only: Plex has no reason to write to the library, and the NAS - # account is read-write. + # Read-only here AND at the mount AND at the Synology — the mediabox NAS + # account has no write permission on the library shares. media_pc (the + # box's write share) is deliberately not exposed to Plex. - type: bind source: /mnt/nas/media target: /mnt/nas/media