
Plex Unlocker
Aplica patch ao Plex Media Server em execução no Docker — tanto à imagem oficial plexinc/pms-docker quanto à imagem da comunidade lscr.io/linuxserver/plex — usando o mesmo mecanismo de LD_PRELOAD na execução do PMS que a instalação nativa via systemd. Consulte o README na raiz e o guia completo docs/DOCKER.md para entender o porquê e a solução de problemas.
A partir da raiz do projeto:
# 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 .
A primeira compilação baixa o zig 0.13.0 e a imagem base do Plex escolhida. As compilações subsequentes reutilizam as camadas em cache até que src/, third_party/ ou build.sh mudem. Fixe a imagem base com --build-arg PLEX_BASE_IMAGE=... se precisar de reprodutibilidade entre atualizações do 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
Em seguida:
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:32400/identity # -> 200
Se você já tem um contêiner Plex em execução e não quer recompilar a imagem nem recriar o contêiner, plex-docker-patch.sh aplica o mesmo patch a um contêiner ativo — sem necessidade de docker build, imagem original intacta, contêiner original e volumes preservados. Reversível via uninstall (uma cópia .orig do arquivo run do s6 é mantida).
# 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
O script detecta automaticamente a imagem base (plexinc vs LSIO) lendo o conteúdo do arquivo run do s6 dentro do contêiner, portanto o mesmo .so e wrapper.sh são usados nos dois casos. O Zig deve estar disponível no host (o script invoca build.sh); um build/plexmediaserver_crack.so pré-existente é reutilizado.
docker build acima) — melhor para implantações repetidas, multi-host, CI/CD, imagens imutáveis. Você confirma uma imagem corrigida e a distribui.plex-docker-patch.sh — melhor para aplicar um patch pontual em um contêiner em execução que você não quer tocar. Modifica o sistema de arquivos do contêiner ativo; totalmente reversível via uninstall.Para docker-compose, deriva de assinatura, verificação com scripts/readbitset.py, desinstalação e solução de problemas, consulte ../docs/DOCKER.md.
Para diagnósticos mais aprofundados (código de saída 127 do PMS, ABI glibc vs musl, propriedade do /config no LSIO, deriva de assinatura em atualizações do PMS), consulte ../docs/DOCKER.md.
| Arquivo | Finalidade |
|---|
Dockerfile.plexinc | Build multi-estágio → plexinc/pms-docker corrigido |
Dockerfile.linuxserver | Build multi-estágio → lscr.io/linuxserver/plex corrigido |
wrapper.sh | Lançador dentro do contêiner (env → LD_PRELOAD por último → exec PMS) |
plex-docker-patch.sh | Aplicador de patch in-place para um contêiner em execução (install / uninstall / status) |
| Sintoma | Causa provável | Primeira verificação |
|---|
install diz ERROR: docker not on PATH | CLI do docker não instalada ou usuário não está no grupo docker | docker version (deve executar como você) |
install diz could not find s6 svc-plex run file | a imagem upstream mudou o layout do s6 | docker exec <name> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — abra uma issue com a saída |
install é bem-sucedido, mas .so is NOT in /proc/$PID/maps | PMS saiu com 127 (falha do loader) | docker logs <name> | tail -50 — geralmente um .so glibc entrou (recompile com build.sh) |
status mostra PATCH IS NOT ACTIVE após install | o arquivo run não foi reescrito (ex.: camada somente leitura) ou o contêiner não foi reiniciado | docker exec <name> cat /etc/s6-overlay/s6-rc.d/svc-plex/run — deve imprimir exec .../plex-crack-wrapper.sh |
uninstall diz no run.orig found | .orig foi excluído, ou nunca foi feito backup do arquivo run (ex.: você executou uma versão antiga do script) | restaure manualmente: docker cp <upstream-image>:/etc/s6-overlay/s6-rc.d/svc-plex/run <name>:/etc/s6-overlay/s6-rc.d/svc-plex/run |