
Plex Unlocker
Patcht Plex Media Server, der in Docker läuft — sowohl das offizielle
plexinc/pms-docker-Image
als auch das Community-Image lscr.io/linuxserver/plex —
mit demselben Mechanismus (LD_PRELOAD beim PMS-Exec) wie bei der nativen
systemd-Installation. Siehe das übergeordnete README und die vollständige Anleitung
docs/DOCKER.md für das Warum und die Fehlerbehebung.
Vom Projektstamm aus:
# 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 .
Der erste Build lädt zig 0.13.0 und das gewählte Plex-Basis-Image herunter.
Nachfolgende Builds greifen auf zwischengespeicherte Layer zurück, bis sich src/, third_party/ oder
build.sh ändern. Fixiere das Basis-Image mit --build-arg PLEX_BASE_IMAGE=..., wenn du
Reproduzierbarkeit über PMS-Updates hinweg benötigst.
# 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
Danach:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:32400/identity # -> 200
Wenn du bereits einen laufenden Plex-Container hast und weder das Image neu bauen
noch den Container neu erstellen möchtest, wendet plex-docker-patch.sh denselben Patch auf
einen laufenden Container an — kein docker build nötig, das ursprüngliche Image bleibt
unangetastet, der ursprüngliche Container und seine Volumes bleiben erhalten. Über
uninstall umkehrbar (eine .orig-Kopie der s6-run-Datei wird aufbewahrt).
# 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
Das Skript erkennt das Basis-Image (plexinc vs. LSIO) automatisch, indem es den
Inhalt der s6-run-Datei im Container liest, sodass in beiden Fällen dieselbe .so und
wrapper.sh verwendet werden. Zig muss auf dem Host verfügbar sein
(das Skript ruft build.sh auf); eine bereits vorhandene
build/plexmediaserver_crack.so wird wiederverwendet.
docker build-Ablauf oben) — am besten für
wiederholte Deployments, Multi-Host, CI/CD, unveränderliche Images. Du committest ein
gepatchtes Image und lieferst es aus.plex-docker-patch.sh — am besten für einmaliges Patchen eines laufenden
Containers, den du nicht anfassen möchtest. Modifiziert das Dateisystem des laufenden
Containers; über uninstall vollständig umkehrbar.Für docker-compose, Signatur-Drift, Verifizierung mit
scripts/readbitset.py, Deinstallation und Fehlerbehebung siehe
../docs/DOCKER.md.
Für tiefergehende Diagnosen (PMS-Exit-Code 127, glibc- vs. musl-ABI, Besitzverhältnisse
von LSIO /config, Signatur-Drift bei PMS-Updates) siehe
../docs/DOCKER.md.
| Datei | Zweck |
|---|
Dockerfile.plexinc | Multi-Stage-Build → gepatchtes plexinc/pms-docker |
Dockerfile.linuxserver | Multi-Stage-Build → gepatchtes lscr.io/linuxserver/plex |
wrapper.sh | In-Container-Starter (env → LD_PRELOAD zuletzt → exec PMS) |
plex-docker-patch.sh | In-Place-Patcher für einen laufenden Container (install / uninstall / status) |
| Symptom | Wahrscheinliche Ursache | Erster Prüfschritt |
|---|
install meldet ERROR: docker not on PATH | docker-CLI nicht installiert oder Benutzer nicht in der docker-Gruppe | docker version (muss als dein Benutzer funktionieren) |
install meldet could not find s6 svc-plex run file | Das Upstream-Image hat sein s6-Layout geändert | docker exec <name> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — öffne ein Issue mit der Ausgabe |
install erfolgreich, aber .so is NOT in /proc/$PID/maps | PMS wurde mit Exit-Code 127 beendet (Loader-Fehler) | docker logs <name> | tail -50 — meistens hat sich eine glibc-.so eingeschlichen (mit build.sh neu bauen) |
status zeigt nach install PATCH IS NOT ACTIVE | Die run-Datei wurde nicht neu geschrieben (z. B. Read-only-Layer) oder der Container wurde nicht neu gestartet | docker exec <name> cat /etc/s6-overlay/s6-rc.d/svc-plex/run — sollte exec .../plex-crack-wrapper.sh ausgeben |
uninstall meldet no run.orig found | .orig wurde gelöscht oder die run-Datei wurde nie gesichert (z. B. weil du eine ältere Version des Skripts ausgeführt hast) | manuell wiederherstellen: docker cp <upstream-image>:/etc/s6-overlay/s6-rc.d/svc-plex/run <name>:/etc/s6-overlay/s6-rc.d/svc-plex/run |