Volver a actualizaciones
ActualizadaJul 28, 2026

Freeloader — Actualizado!

Plex Unlocker

Compartir

Soporte Docker para plexmediaserver_crack

Parchea Plex Media Server que se ejecuta en Docker — tanto la imagen oficial plexinc/pms-docker como la imagen de la comunidad lscr.io/linuxserver/plex — usando el mismo mecanismo de LD_PRELOAD sobre la ejecución de PMS que la instalación nativa con systemd. Consulta el README de nivel superior y la guía completa docs/DOCKER.md para conocer el porqué y la solución de problemas.

Compilar

Desde la raíz del proyecto:

# 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 primera compilación descarga zig 0.13.0 y la imagen base de Plex elegida. Las compilaciones posteriores reutilizan las capas en caché hasta que cambien src/, third_party/ o build.sh. Fija la imagen base con --build-arg PLEX_BASE_IMAGE=... si necesitas reproducibilidad entre actualizaciones de PMS.

Ejecutar

# 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

Luego:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:32400/identity   # -> 200

Parchear in situ (sin reconstruir)

Si ya tienes un contenedor de Plex en ejecución y no quieres reconstruir la imagen ni recrear el contenedor, plex-docker-patch.sh aplica el mismo parche a un contenedor en ejecución — no se necesita docker build, la imagen original no se toca y se conservan el contenedor original y sus volúmenes. Reversible mediante uninstall (se guarda una copia .orig del archivo run de s6).

# 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

El script detecta automáticamente la imagen base (plexinc vs LSIO) leyendo el contenido del archivo run de s6 dentro del contenedor, por lo que se usan el mismo .so y wrapper.sh en ambos casos. Zig debe estar disponible en el host (el script invoca build.sh); se reutiliza un build/plexmediaserver_crack.so preexistente.

Cuándo usar cada uno

  • Compilación con Dockerfile (el flujo docker build anterior) — ideal para despliegues repetidos, múltiples hosts, CI/CD e imágenes inmutables. Fijas una imagen parcheada y la distribuyes.
  • plex-docker-patch.sh — ideal para parchear una sola vez un contenedor en ejecución que no quieres tocar. Modifica el sistema de archivos del contenedor en ejecución; totalmente reversible mediante uninstall.

Dónde está cada cosa

ArchivoPropósito
Dockerfile.plexincCompilación en varias etapas → plexinc/pms-docker parcheado
Dockerfile.linuxserverCompilación en varias etapas → lscr.io/linuxserver/plex parcheado
wrapper.shLanzador dentro del contenedor (env → LD_PRELOAD al final → exec PMS)
plex-docker-patch.shParcheador in situ para un contenedor en ejecución (install / uninstall / status)

Para docker-compose, deriva de firma, verificación con scripts/readbitset.py, desinstalación y solución de problemas, consulta ../docs/DOCKER.md.

Solución rápida de problemas (parcheador in situ)

SíntomaCausa probablePrimera comprobación
install dice ERROR: docker not on PATHCLI de docker no instalada o usuario no está en el grupo dockerdocker version (debe ejecutarse como tu usuario)
install dice could not find s6 svc-plex run filela imagen upstream cambió su estructura de s6docker exec <name> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — abre un issue con la salida
install tiene éxito pero .so is NOT in /proc/$PID/mapsPMS salió con 127 (fallo del cargador)docker logs <name> | tail -50 — normalmente se ha colado un .so de glibc (recompila con build.sh)
status muestra PATCH IS NOT ACTIVE después de installel archivo run no se reescribió (p. ej., capa de solo lectura) o el contenedor no se reiniciódocker exec <name> cat /etc/s6-overlay/s6-rc.d/svc-plex/run — debería imprimir exec .../plex-crack-wrapper.sh
uninstall dice no run.orig found.orig se eliminó, o el archivo run nunca se respaldó (p. ej., ejecutaste una versión anterior del script)restaura manualmente: docker cp <upstream-image>:/etc/s6-overlay/s6-rc.d/svc-plex/run <name>:/etc/s6-overlay/s6-rc.d/svc-plex/run

Para diagnósticos más profundos (salida 127 de PMS, ABI glibc vs musl, propiedad de /config en LSIO, deriva de firma en actualizaciones de PMS), consulta ../docs/DOCKER.md.

Categorías