Назад к обновлениям
UpdatedJul 28, 2026

Freeloader — Updated!

Plex Unlocker

Поделиться

Поддержка Docker для plexmediaserver_crack

Патчит Plex Media Server, работающий в Docker — как официальный образ plexinc/pms-docker, так и community-образ lscr.io/linuxserver/plex — с использованием того же механизма LD_PRELOAD-на-исполняемом-PMS, что и в нативной установке через systemd. Смотрите README на верхнем уровне и полное руководство docs/DOCKER.md для объяснения и устранения неполадок.

Сборка

Из корня проекта:

# Официальный образ (plexinc/pms-docker)
docker build -f docker/Dockerfile.plexinc -t plex-crack:plexinc .

# Community-образ (lscr.io/linuxserver/plex)
docker build -f docker/Dockerfile.linuxserver -t plex-crack:lsio .

Первая сборка загружает zig 0.13.0 и выбранный базовый образ Plex. Последующие сборки переиспользуют кэшированные слои, пока не изменятся src/, third_party/ или build.sh. Зафиксируйте базовый образ с помощью --build-arg PLEX_BASE_IMAGE=..., если вам нужна воспроизводимость при обновлениях PMS.

Запуск

# plexinc (без PUID/PGID; образ запускает PMS от пользователя upstream 'plex')
docker run -d --name plex --network=host \
    -v /srv/plex/config:/config \
    -v /srv/plex/data:/data \
    plex-crack:plexinc

# linuxserver (учитывает PUID/PGID, чтобы /config и /data корректно получали владельца при первом запуске)
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

Затем:

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

Патч на месте (без пересборки)

Если у вас уже запущен контейнер Plex и вы не хотите пересобирать образ или пересоздавать контейнер, plex-docker-patch.sh применяет тот же патч к работающему контейнеру — без docker build, оригинальный образ не затрагивается, оригинальный контейнер и его тома сохраняются. Откат через uninstall (сохраняется копия .orig файла run из s6).

# Имя контейнера по умолчанию: "plex"
./docker/plex-docker-patch.sh install

# Пользовательское имя контейнера
./docker/plex-docker-patch.sh install my-plex

# Откат (восстанавливает файл run из s6 из его .orig)
./docker/plex-docker-patch.sh uninstall my-plex

# Статус
./docker/plex-docker-patch.sh status my-plex

Скрипт автоматически определяет базовый образ (plexinc или LSIO), читая содержимое файла run из s6 внутри контейнера, поэтому один и тот же .so и wrapper.sh используются в обоих случаях. Zig должен быть доступен на хосте (скрипт вызывает build.sh); уже существующий build/plexmediaserver_crack.so переиспользуется.

Когда что использовать

  • Сборка через Dockerfile (поток docker build выше) — лучше всего для повторяемых развёртываний, нескольких хостов, CI/CD, неизменяемых образов. Вы коммитите пропатченный образ и доставляете его.
  • plex-docker-patch.sh — лучше всего для разового патча запущенного контейнера, который вы не хотите трогать. Изменяет файловую систему живого контейнера; полностью откатывается через uninstall.

Что где находится

ФайлНазначение
Dockerfile.plexincМногоступенчатая сборка → пропатченный plexinc/pms-docker
Dockerfile.linuxserverМногоступенчатая сборка → пропатченный lscr.io/linuxserver/plex
wrapper.shЛаунчер внутри контейнера (env → LD_PRELOAD последним → exec PMS)
plex-docker-patch.shПатчер на месте для запущенного контейнера (install / uninstall / status)

По вопросам docker-compose, расхождения сигнатур, проверки с помощью scripts/readbitset.py, удаления и устранения неполадок смотрите ../docs/DOCKER.md.

Быстрое устранение неполадок (патчер на месте)

СимптомВероятная причинаПервая проверка
install сообщает ERROR: docker not on PATHCLI docker не установлен или пользователь не в группе dockerdocker version (должен выполняться от вашего имени)
install сообщает could not find s6 svc-plex run fileupstream-образ изменил структуру s6docker exec <name> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — откройте issue с выводом
install успешен, но .so is NOT in /proc/$PID/mapsPMS завершился с кодом 127 (ошибка загрузчика)docker logs <name> | tail -50 — обычно попал glibc .so (пересоберите с build.sh)
status показывает PATCH IS NOT ACTIVE после installФайл run не был перезаписан (например, слой только для чтения) или контейнер не был перезапущенdocker exec <name> cat /etc/s6-overlay/s6-rc.d/svc-plex/run — должен выводить exec .../plex-crack-wrapper.sh
uninstall сообщает no run.orig found.orig был удалён, или файл run никогда не резервировался (например, вы запускали более старую версию скрипта)восстановите вручную: docker cp <upstream-image>:/etc/s6-overlay/s6-rc.d/svc-plex/run <name>:/etc/s6-overlay/s6-rc.d/svc-plex/run

Для более глубокой диагностики (выход PMS с кодом 127, ABI glibc vs musl, владелец /config в LSIO, расхождение сигнатур при обновлениях PMS) смотрите ../docs/DOCKER.md.

Категории