لماذا تترك Plex في 2026: 36,000 خادم مكشوف
في 9 سبتمبر 2026، نشرت Shadowserver نتائجها: أكثر من 36,000 خادم Plex متاح من الإنترنت لم يُطبَّق عليه تحديث 1.43.3 المتاح منذ 19 مايو. ثغرتان محوريتان في هذا التحذير: CVE-2026-96656 (CVSS 7.2) تسمح لمهاجم يملك صلاحيات إدارية بكتابة ملفات عشوائية تُنفَّذ عند بدء التشغيل، أي تحميل إضافة خبيثة تزرع برنامج تحكم عن بُعد دون أي فحص للتوقيع أو صلاحيات التنفيذ. CVE-2026-96651 (CWE-22، اجتياز المسار) تُمكِّن أي جلسة مُصادَق عليها من قراءة أي ملف يصل إليه مستخدم نظام Plex، بما فيه رمز PlexOnlineToken. مجتمعتين، تغطي هاتان الثغرتان سيناريو تصعيد كامل للصلاحيات: سرقة الجلسة ثم تنفيذ الكود. أصلحت Plex كلتيهما في الإصدار 1.43.3.10861؛ والإصدار 1.43.3.10896 هو الهدف الموصى به. تبقى المشكلة البنيوية قائمة: Plex برنامج مُغلق المصدر يعتمد دورة تصحيح على مورِّد واحد، و36,000 مسؤول لم يُطبِّقوا إصلاحاً عمره أربعة أشهر.
ما يخفيه Plex خلف نموذجه السحابي
يوفر Plex واجهة أنيقة، لكن نموذجه السحابي يُضيف تبعيات خفية تصبح مشكلة عند تطبيق تصحيحات الأمان أو إيقاف الخدمة.
- الوصول عن بُعد عبر Plex Relay: كل بث يمر عبر خوادم plex.tv، حتى لو كان خادم VPS الخاص بك هو الوحيد الذي يخزن الملفات. تطلع Plex على بيانات تشغيلك.
- Plex Pass مطلوب للميزات الأساسية: المزامنة دون اتصال، الوصول متعدد المستخدمين الكامل، التلفاز المباشر، والوصول عن بُعد دون توجيه المنافذ — جميعها حكر على المشتركين المدفوعين.
- مصادقة مركزية: تسجيل دخول عملائك يمر عبر خوادم Plex. أي عطل في plex.tv يقطع وصولك إلى ملفاتك الخاصة.
- تحديثات غير خاضعة للمراقبة: يمكن لـPlex نشر تغييرات جانب الخادم (الترحيل، المصادقة) دون أن تتمكن من مراجعتها أو حجبها.
- قياس عن بُعد نشط بالإعداد الافتراضي: بيانات التشغيل والبحث وعادات المشاهدة تُرسَل إلى الشركة المطورة ما لم تُعطِّلها يدوياً في كل عميل.
المتطلبات قبل بدء الانتقال
تستهدف هذه الإجراءات خادم VPS جذراً يعمل بنظام Debian 12 أو Ubuntu 22.04 LTS. تحتاج إلى وصول SSH بصلاحيات root أو sudo، وتثبيت Docker وDocker Compose (الإصدار v2 فأعلى)، ومجلد وسائط متاح للقراءة. خذ نسخة احتياطية snapshot من خادمك قبل البدء — فهي قابلة للعكس بأمر واحد وتستغرق أقل من ساعة. يحل Jellyfin محل مكتبة الفيديو؛ وNavidrome محل مكتبة الموسيقى. كلاهما مفتوح المصدر، بلا اشتراك، ويُعرَض خلف Nginx reverse proxy.
الانتقال من Plex إلى Jellyfin: خطوة بخطوة
إليك الإجراء الكامل لترحيل مكتبتك من Plex إلى Jellyfin دون فقدان البيانات أو سجل المشاهدة.
إنشاء نسخة احتياطية snapshot للخادم
البداية:
snapshot create plex-before-migrationمن لوحة التحكم لدى مزودك (أو ما يعادلها من API). هذه الخطوة هي شبكة الأمان؛ لا تتخطاها.إيقاف Plex بشكل نظيف
systemctl stop plexmediaserver systemctl disable plexmediaserverانتظر تأكيد الإيقاف قبل المتابعة. يجب ألا يستمع Plex بعد الآن على المنفذ 32400.
تثبيت Jellyfin عبر Docker Compose
# /opt/jellyfin/docker-compose.yml services: jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin restart: unless-stopped ports: - "8096:8096" volumes: - /opt/jellyfin/config:/config - /opt/jellyfin/cache:/cache - /data/media:/media:ro environment: - JELLYFIN_PublishedServerUrl=https://jellyfin.your-domain.comاستبدل
/data/mediaبالمسار الدقيق لملفاتك. يُحمَّل المجلد بصلاحية القراءة فقط (:ro) كإجراء احترازي.تشغيل Jellyfin وإطلاق معالج الإعداد
cd /opt/jellyfin && docker compose up -dادخل إلى
http://IP-الخادم:8096لمعالج الويب. أنشئ حساب المدير، ثم أضف مكتباتك مشيراً إلى/media/filmsو/media/seriesإلخ.فحص المكتبات والتحقق من بيانات التعريف
يستخدم Jellyfin قاعدة بيانات الأفلام TMDB وTheTVDB افتراضياً. يستغرق الفحص الأول بين 5 و30 دقيقة حسب حجم مكتبتك. تحقق من ظهور الأغلفة والملخصات والتقييمات بشكل صحيح. إذا لم يُتعرَّف على عمل تلقائياً، استخدم وظيفة التعريف لفرض المطابقة.
تهيئة عملاء Jellyfin
تتوفر تطبيقات Jellyfin الرسمية على Android وiOS وApple TV وAndroid TV وRoku والمتصفحات. وهي مجانية ومفتوحة المصدر. وجِّه كل عميل نحو URL الداخلي أو العام لخادمك — لا يلزم أي مصادقة خارجية.
التحقق من الترميز والترجمات
في لوحة التحكم > التشغيل، فعِّل الترميز الصوتي بالمعالج إذا كان خادمك يمتلك معالج رسوميات. اختبر ملف H.265 من عميل محمول للتحقق من عمل الترميز البرمجي احتياطياً. تحقق أيضاً من ظهور ترجمات SRT وASS/SSA.
إزالة Plex
apt remove plexmediaserver --purge rm -rf /var/lib/plexmediaserverلا تحذف التثبيت القديم إلا بعد التحقق من عمل Jellyfin على عميل واحد على الأقل لمدة 48 ساعة.
الانتقال الموسيقي: Plex إلى Navidrome
Navidrome خادم موسيقى مفتوح المصدر متوافق مع واجهة برمجة Subsonic، ما يتيح له الوصول إلى بيئة العملاء الكاملة (DSub، Symfonium، Ultrasonic، Airsonic، وغيرها). يقرأ وسوم ID3 v2.3 وv2.4 وملفات FLAC وMP3 وAAC وOGG وOpus. تُستورَد قوائم التشغيل M3U الموجودة في مجلد موسيقاك تلقائياً شريطة أن تكون المسارات نسبية لجذر الموسيقى.
فحص بنية المجلدات
يتوقع Navidrome تسلسلاً هرمياً
فنان/ألبوم/مقطوعة.mp3. إذا كانت ملفاتك منظمة هكذا بالفعل (وهو ما يتطلبه Plex أيضاً)، فلا داعي لإعادة التنظيم. تحقق من غياب الرموز الخاصة في أسماء المجلدات (/،:،?).مراجعة وسوم ID3
find /data/music -name '*.mp3' | head -20 | xargs id3v2 -lيجب أن تكون حقول
TPE1(الفنان) وTALB(الألبوم) وTIT2(العنوان) مملوءة. ملف بدون هذه الحقول الثلاثة سيُستورَد لكن دون بيانات تعريف معروضة. تستطيع أداةbeetsإصلاح الوسوم الناقصة جماعياً عبر قاعدة بيانات MusicBrainz.نقل قوائم تشغيل Plex
لا يُصدِّر Plex قوائم التشغيل بصيغة M3U أصلياً من الواجهة. استخدم أداة
plexapi بلغة Python للتصدير:python3 -m plexapi.playlist export --token YOUR_TOKEN --output /data/music/playlists/. ملفات M3U المُولَّدة يستوردها Navidrome تلقائياً إذا كانت المسارات نسبية للمجلد/music.
مقارنة Plex مقابل Jellyfin مقابل Navidrome
يقارن الجدول التالي المعايير الأساسية للاختيار بين Plex وJellyfin وNavidrome.
مرّر الجدول أفقيًا
| المعيار | Plex | Jellyfin | Navidrome |
|---|---|---|---|
| الرخصة | مغلق المصدر (مجاني/مدفوع) | GPL-2.0 مفتوح المصدر | GPL-3.0 مفتوح المصدر |
| الوصول عن بُعد بدون اشتراك | لا (يتطلب Plex Pass) | نعم، أصلي | نعم، أصلي |
| مصادقة خارجية مطلوبة | نعم (plex.tv) | لا | لا |
| مكتبة الفيديو | نعم | نعم | لا (موسيقى فقط) |
| مكتبة الموسيقى | نعم (محدود) | جزئي | نعم (متخصص) |
| ترميز بالمعالج | يتطلب Plex Pass | أصلي (NVENC، QSV، VAAPI) | غير مطبق (صوت فقط) |
| عملاء رسميون للهاتف | مدفوعون على iOS/Android | مجاني، مفتوح المصدر | عملاء Subsonic خارجيون |
| الاعتماد على السحابة | قوي (relay، مصادقة) | معدوم | معدوم |
تهيئة Nginx كوكيل عكسي لـ Jellyfin
يجب أن يُعرَض Jellyfin عبر HTTPS. يفترض الإعداد أدناه شهادة Let's Encrypt تُديرها Certbot أو شبكة CDN في وضع Full (strict). لا تعرض المنفذ 8096 مباشرة — مرر دائماً عبر Nginx.
# /etc/nginx/sites-available/jellyfin
server {
listen 80;
server_name jellyfin.your-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name jellyfin.your-domain.com;
ssl_certificate /etc/letsencrypt/live/jellyfin.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jellyfin.your-domain.com/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
location / {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_read_timeout 3600;
}
}طبِّق نفس البنية لـNavidrome باستبدال المنفذ بـ4533. فعِّل الإعداد بـnginx -t && systemctl reload nginx.
استكشاف الأخطاء: أكثر 3 مشكلات شيوعاً عند الانتقال
إليك المشكلات الثلاث الأكثر شيوعاً أثناء هجرة Plex/Jellyfin مع حلولها المباشرة.
- المكتبة فارغة بعد الفحص الأول: تحقق من أن المسار المُحمَّل في Docker يطابق تماماً المجلد الذي يحتوي ملفاتك. يجب أن يُدرج
docker exec jellyfin ls /mediaمجلداتك. إن كان المجلد فارغاً، صحِّح الربط في docker-compose.yml وأعد تشغيل الحاوية. - فشل الترميز مع خطأ ffmpeg: يُضمِّن Jellyfin نسخته الخاصة من ffmpeg. إذا لم تكن الحاوية تملك وصولاً للمعالج الرسومي، عطِّل الترميز بالمعالج في لوحة التحكم > التشغيل وانتقل للترميز البرمجي. على خادم VPS بدون معالج رسومي، هذا هو الإعداد الطبيعي.
- عملاء iOS/Android لا يجدون الخادم: تأكد أن جدار الحماية يسمح بالمنفذ 443 من الخارج (
ufw allow 443)، وأن DNS يشير لعنوان IP الخادم، وأن شهادة TLS صالحة. اختبر بـcurl -I https://jellyfin.your-domain.com/healthمن جهازك المحلي.
أبقِ Plex معطَّلاً (وليس محذوفاً) خلال أول 48 ساعة بعد الانتقال. تتيح لك نسخة snapshot للخادم التراجع في أقل من خمس دقائق. لا تحذف ملفات إعداد Plex (/var/lib/plexmediaserver) إلا بعد التأكد من عمل جميع عملائك بشكل صحيح على Jellyfin وNavidrome.
الخلاصة
إن وجود 36,000 خادم Plex غير مُحدَّث ليس دليلاً على إهمال فردي: بل يكشف عن اعتماد بنيوي على مورِّد مغلق المصدر دورة تصحيحه غير شفافة. تُظهر CVE-2026-96656 وCVE-2026-96651 أن هذا الاعتماد له تكلفة قابلة للقياس. يعيد إليك Jellyfin وNavidrome السيطرة: لا مصادقة خارجية، ولا بث سحابي، ولا اشتراك للوصول عن بُعد. الانتقال يستغرق أقل من ساعة بهذا الدليل؛ والمكتبة وصيلة سليمة. إذا كنت تستضيف وسائطك على خادم VPS جذر، فلم تعد ثمة حجة للانتظار.