アップデート一覧に戻る
UpdatedJul 28, 2026

Freeloader — Updated!

Plexアンロッカー

共有

Dockerでのplexmediaserver_crackのサポート

Dockerで動作するPlex Media Server(公式のplexinc/pms-dockerイメージとコミュニティのlscr.io/linuxserver/plexイメージの両方)を、ネイティブのsystemdインストールと同じLD_PRELOAD-on-the-PMS-execメカニズムを使用してパッチします。理由とトラブルシューティングについては、トップレベルのREADMEと完全ガイドdocs/DOCKER.mdを参照してください。

ビルド

プロジェクトルートから:

# 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 .

最初のビルドはzig 0.13.0と選択したPlexベースイメージをダウンロードします。後続のビルドはsrc/third_party/build.shが変更されるまでキャッシュされたレイヤーを再利用します。PMSアップデート全体で再現性が必要な場合は、--build-arg PLEX_BASE_IMAGE=...でベースを固定してください。

実行

# plexinc (PUID/PGIDなし; イメージはPMSをアップストリームの'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のchownを正しく行う)
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で元に戻せます(s6のrunファイルの.origコピーが保持されます)。

# デフォルトのコンテナ名: "plex"
./docker/plex-docker-patch.sh install

# カスタムコンテナ名
./docker/plex-docker-patch.sh install my-plex

# 元に戻す (.origからs6 runファイルを復元)
./docker/plex-docker-patch.sh uninstall my-plex

# ステータス
./docker/plex-docker-patch.sh status my-plex

スクリプトはコンテナ内のs6のrunファイルの内容を読み取ってベースイメージ(plexinc vs LSIO)を自動検出するため、.sowrapper.shは両方のケースで同じものが使用されます。Zigはホスト上で利用可能である必要があります(スクリプトはbuild.shを呼び出します)。既存のbuild/plexmediaserver_crack.soがあれば再利用されます。

どちらを使うべきか

  • Dockerfileビルド(上記のdocker buildフロー)は、繰り返しのデプロイ、マルチホスト、CI/CD、不変イメージに最適です。パッチ済みイメージをコミットして出荷します。
  • **plex-docker-patch.sh**は、触れたくない実行中のコンテナを一度だけパッチするのに最適です。実行中のコンテナのファイルシステムを変更します。uninstallで完全に元に戻せます。

ファイル構成

FilePurpose
Dockerfile.plexincマルチステージビルド → パッチ済みplexinc/pms-docker
Dockerfile.linuxserverマルチステージビルド → パッチ済みlscr.io/linuxserver/plex
wrapper.shコンテナ内ランチャー(環境変数 → LD_PRELOADを最後に → execでPMS)
plex-docker-patch.sh実行中のコンテナに対するその場パッチャー(install / uninstall / status

docker-compose、署名ドリフト、scripts/readbitset.pyによる検証、アンインストール、トラブルシューティングについては、../docs/DOCKER.mdを参照してください。

クイックトラブルシューティング(その場パッチャー)

症状考えられる原因最初に確認すべきこと
install says ERROR: docker not on PATHdocker CLIがインストールされていないか、ユーザーがdockerグループに属していないdocker version(自分で実行できること)
install says could not find s6 svc-plex run fileアップストリームイメージがs6のレイアウトを変更したdocker exec <name> ls -la /etc/s6-overlay/s6-rc.d/svc-plex/ /etc/services.d/plex/ — 出力を添えてissueを開く
install succeeds but .so is NOT in /proc/$PID/mapsPMSが127で終了(ローダー失敗)docker logs <name> | tail -50 — 通常はglibcの.soが混入(build.shで再ビルド)
status shows PATCH IS NOT ACTIVE after installrunファイルが書き換えられなかった(例:読み取り専用レイヤー)か、コンテナが再起動されなかったdocker exec <name> cat /etc/s6-overlay/s6-rc.d/svc-plex/runexec .../plex-crack-wrapper.shと表示されるべき
uninstall says 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、glibcとmusl ABI、LSIOの/config所有者、PMSアップデート時の署名ドリフト)については、../docs/DOCKER.mdを参照してください。

カテゴリ