
Plex Unlocker
Applica patch a Plex Media Server in esecuzione su Docker — sia l'immagine ufficiale
plexinc/pms-docker
sia l'immagine della community lscr.io/linuxserver/plex
— utilizzando lo stesso meccanismo LD_PRELOAD sull'esecuzione di PMS dell'installazione nativa con systemd.
Vedi il README principale e la guida completa docs/DOCKER.md per il motivo e la risoluzione dei problemi.
Dalla radice del progetto:
# Immagine ufficiale (plexinc/pms-docker)
docker build -f docker/Dockerfile.plexinc -t plex-crack:plexinc .
# Immagine community (lscr.io/linuxserver/plex)
docker build -f docker/Dockerfile.linuxserver -t plex-crack:lsio .
La prima build scarica zig 0.13.0 e l'immagine base Plex scelta.
Le build successive riutilizzano i layer memorizzati nella cache fino a quando src/, third_party/ o build.sh non cambiano. Blocca la base con --build-arg PLEX_BASE_IMAGE=... se hai bisogno di riproducibilità tra aggiornamenti PMS.
# plexinc (nessun PUID/PGID; l'immagine esegue PMS come utente upstream 'plex')
docker run -d --name plex --network=host \
-v /srv/plex/config:/config \
-v /srv/plex/data:/data \
plex-crack:plexinc
# linuxserver (onora PUID/PGID in modo che /config e /data vengano chown correttamente al primo avvio)
docker run -d --name plex --network=host \
-e PUID=$(id -u) -e PGID=$(id -g) \
-e TZ=America/Los_Angeles \
-v /srv/plex/config:/config \
-v /srv/plex/data:/data \
plex-crack:lsio
Poi:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:32400/identity # -> 200
Se hai già un container Plex in esecuzione e non vuoi ricostruire l'immagine o ricreare il container, plex-docker-patch.sh applica la stessa patch a un container vivo — nessun docker build necessario, immagine originale intatta, container originale + i suoi volumi preservati. Revertibile tramite uninstall (viene mantenuta una copia .orig del file s6 run).
# Nome container predefinito: "plex"
./docker/plex-docker-patch.sh install
# Nome container personalizzato
./docker/plex-docker-patch.sh install my-plex
# Revert (ripristina il file run s6 dal suo .orig)
./docker/plex-docker-patch.sh uninstall my-plex
# Stato
./docker/plex-docker-patch.sh status my-plex
Lo script rileva automaticamente l'immagine base (plexinc vs LSIO) leggendo il contenuto del file s6 run all'interno del container, quindi lo stesso .so e wrapper.sh vengono usati in entrambi i casi. Zig deve essere disponibile sull'host (lo script invoca build.sh); un build/plexmediaserver_crack.so preesistente viene riutilizzato.
docker build sopra) — migliore per distribuzioni ripetibili, multi-host, CI/CD, immagini immutabili. Commiti un'immagine patchata e la rilasci.plex-docker-patch.sh — migliore per patch una tantum di un container in esecuzione che non vuoi toccare. Modifica il filesystem del container attivo; completamente revertibile tramite uninstall.Per docker-compose, deriva della firma, verifica con scripts/readbitset.py, disinstallazione e risoluzione dei problemi, vedi ../docs/DOCKER.md.
Per diagnosi più approfondite (PMS exit 127, ABI glibc vs musl, proprietà LSIO /config, deriva della firma negli aggiornamenti PMS), vedi ../docs/DOCKER.md.
| File | Scopo |
|---|
Dockerfile.plexinc | Build multi-stadio → plexinc/pms-docker patchato |
Dockerfile.linuxserver | Build multi-stadio → lscr.io/linuxserver/plex patchato |
wrapper.sh | Launcher dentro il container (env → LD_PRELOAD ultimo → exec PMS) |
plex-docker-patch.sh | Patcher in loco per un container in esecuzione (install / uninstall / status) |
| Sintomo | Causa probabile | Prima verifica |
|---|
install dice ERROR: docker not on PATH | CLI docker non installata o utente non nel gruppo docker | docker version (deve essere eseguito come te) |
install dice could not find s6 svc-plex run file | l'immagine upstream ha cambiato il layout di s6 | docker exec <nome> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — apri un'issue con l'output |
install ha successo ma .so is NOT in /proc/$PID/maps | PMS uscito con 127 (errore del loader) | docker logs <nome> | tail -50 — di solito un .so glibc è entrato (ricostruire con build.sh) |
status mostra PATCH IS NOT ACTIVE dopo install | il file run non è stato riscritto (es. layer readonly) o il container non è stato riavviato | docker exec <nome> cat /etc/s6-overlay/s6-rc.d/svc-plex/run — dovrebbe stampare exec .../plex-crack-wrapper.sh |
uninstall dice no run.orig found | .orig è stato cancellato, o il file run non è mai stato salvato (es. hai eseguito una versione precedente dello script) | ripristina manualmente: docker cp <immagine-upstream>:/etc/s6-overlay/s6-rc.d/svc-plex/run <nome>:/etc/s6-overlay/s6-rc.d/svc-plex/run |