
Plex Unlocker
Patche Plex Media Server tournant dans Docker — aussi bien l'image officielle plexinc/pms-docker que l'image communautaire lscr.io/linuxserver/plex — en utilisant le même mécanisme LD_PRELOAD à l'exec du PMS que l'installation native systemd. Consultez le README à la racine et le guide complet docs/DOCKER.md pour le contexte et le dépannage.
Depuis la racine du projet :
# Official image (plexinc/pms-docker)
docker build -f docker/Dockerfile.plexinc -t plex-crack:plexinc .
# Community image (lscr.io/linuxserver/plex)
docker build -f docker/Dockerfile.linuxserver -t plex-crack:lsio .
La première construction télécharge zig 0.13.0 et l'image de base Plex choisie. Les constructions suivantes réutilisent les couches en cache tant que src/, third_party/ ou build.sh n'ont pas changé. Figez l'image de base avec --build-arg PLEX_BASE_IMAGE=... si vous avez besoin de reproductibilité entre les mises à jour de PMS.
# plexinc (no PUID/PGID; the image runs PMS as the upstream 'plex' user)
docker run -d --name plex --network=host \
-v /srv/plex/config:/config \
-v /srv/plex/data:/data \
plex-crack:plexinc
# linuxserver (honor PUID/PGID so /config and /data chown correctly on first start)
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
Ensuite :
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:32400/identity # -> 200
Si vous avez déjà un conteneur Plex en cours d'exécution et que vous ne voulez pas reconstruire l'image ni recréer le conteneur, plex-docker-patch.sh applique le même patch à un conteneur actif — aucun docker build nécessaire, l'image d'origine reste intacte, le conteneur d'origine et ses volumes sont préservés. Réversible via uninstall (une copie .orig du fichier s6 run est conservée).
# Default container name: "plex"
./docker/plex-docker-patch.sh install
# Custom container name
./docker/plex-docker-patch.sh install my-plex
# Revert (restores the s6 run file from its .orig)
./docker/plex-docker-patch.sh uninstall my-plex
# Status
./docker/plex-docker-patch.sh status my-plex
Le script détecte automatiquement l'image de base (plexinc vs LSIO) en lisant le contenu du fichier s6 run à l'intérieur du conteneur, de sorte que le même .so et le même wrapper.sh sont utilisés dans les deux cas. Zig doit être disponible sur l'hôte (le script invoque build.sh) ; un build/plexmediaserver_crack.so préexistant est réutilisé.
docker build ci-dessus) — idéale pour les déploiements répétés, multi-hôtes, CI/CD, images immuables. Vous validez une image patchée et vous la diffusez.plex-docker-patch.sh — idéal pour patcher ponctuellement un conteneur en cours d'exécution que vous ne voulez pas toucher. Modifie le système de fichiers du conteneur actif ; entièrement réversible via uninstall.Pour docker-compose, la dérive de signature, la vérification avec scripts/readbitset.py, la désinstallation et le dépannage, consultez ../docs/DOCKER.md.
Pour un diagnostic plus approfondi (code de sortie PMS 127, ABI glibc vs musl, propriété de /config sous LSIO, dérive de signature lors des mises à jour PMS), consultez ../docs/DOCKER.md.
| Fichier | Rôle |
|---|
Dockerfile.plexinc | Construction multi-étapes → plexinc/pms-docker patché |
Dockerfile.linuxserver | Construction multi-étapes → lscr.io/linuxserver/plex patché |
wrapper.sh | Lanceur dans le conteneur (env → LD_PRELOAD en dernier → exec PMS) |
plex-docker-patch.sh | Patcher en place pour un conteneur en cours d'exécution (install / uninstall / status) |
| Symptôme | Cause probable | Première vérification |
|---|
install says ERROR: docker not on PATH | CLI docker non installée ou utilisateur absent du groupe docker | docker version (doit s'exécuter avec votre utilisateur) |
install says could not find s6 svc-plex run file | l'image amont a modifié son agencement s6 | docker exec <name> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — ouvrez une issue avec la sortie |
install succeeds but .so is NOT in /proc/$PID/maps | PMS s'est terminé avec le code 127 (échec du chargeur) | docker logs <name> | tail -50 — généralement un .so glibc s'est retrouvé chargé (reconstruisez avec build.sh) |
status shows PATCH IS NOT ACTIVE after install | le fichier run n'a pas été réécrit (p. ex., couche en lecture seule) ou le conteneur n'a pas été redémarré | docker exec <name> cat /etc/s6-overlay/s6-rc.d/svc-plex/run — devrait afficher exec .../plex-crack-wrapper.sh |
uninstall says no run.orig found | .orig a été supprimé, ou le fichier run n'a jamais été sauvegardé (p. ex., vous avez exécuté une version plus ancienne du script) | restaurez manuellement : docker cp <upstream-image>:/etc/s6-overlay/s6-rc.d/svc-plex/run <name>:/etc/s6-overlay/s6-rc.d/svc-plex/run |