SSD Nodes Learn
الأدلة Matt Connorبقلم Matt Connor · آخر تحديث في 2026-07-22

Jellyfin على VPS: بثّ وسائطك الخاصة

شغّل Jellyfin عبر Docker على VPS لبث مكتبتك الخاصة: التخزين الكتلي، وأذونات الوسائط، والتشغيل المباشر مقابل إعادة الترميز بالـCPU، والوصول الآمن عن بُعد.

ما الذي تبنيه

خادم وسائط Jellyfin على VPS: حاوية واحدة، وثلاث وحدات تخزين، وقرص تخزين كتلي (block storage) يحمل أفلامك ومسلسلاتك، ويمكن الوصول إليه من أي متصفح أو تطبيق Jellyfin. التثبيت لا يتجاوز ملف compose من خمسة عشر سطرًا. كل ما يتعطل بعد ذلك يأتي من نقطتين فقط: أذونات الملفات التي لا تستطيع الحاوية قراءتها، ومطالبة VPS بلا GPU بإعادة ترميز فيديو لا داعي أصلًا لإعادة ترميزه. يخصص هذا الدليل معظم مساحته لهاتين النقطتين، لأن هذا هو مصدر أغلب تذاكر الدعم.

Jellyfin مجاني ومفتوح المصدر بالكامل، بلا حساب، وبلا ميزات مدفوعة، وبلا تتبع (telemetry) — وهذا ما يجعله يرد في كل قائمة تقريبًا لـالأشياء التي تستحق الاستضافة الذاتية في 2026. إنه يشغّل وسائط تملكها. لا يوفّر أي محتوى، وهذا الدليل لا يتحدث عن كيفية الحصول على أي محتوى.

واقع إعادة الترميز، قبل أن تستأجر أي شيء

اقرأ هذا أولًا، لأنه يغيّر ما تشتريه. يفعل خادم الوسائط أحد أمرين حين تضغط زر التشغيل. التشغيل المباشر (direct play) يبث الملف كما هو: يقرأ VPS البايتات من القرص ويرسلها عبر الشبكة، بتكلفة CPU تقارب الصفر. أما إعادة الترميز (transcoding) فتعيد ترميز الفيديو أثناء التشغيل — دقة جديدة، أو ترميز (codec) جديد، أو ترجمات مدمجة في الصورة — وهذا عمل CPU خالص.

لا يملك VPS النموذجي أي GPU. لذلك يعمل كل إعادة ترميز على CPU عبر libx264/libx265، والترميز البرمجي مكلف. إعادة ترميز واحدة لفيديو 1080p بترميز H.264 قد تُشبع عدة vCPU مشتركة؛ أما إعادة ترميز 4K أو HEVC فعادة لا تستطيع مجاراة الزمن الحقيقي إطلاقًا، فيتجمّد التشغيل ويتقطّع بلا توقف بسبب التخزين المؤقت (buffering). إعادة الترميز بالعتاد (hardware transcoding) — الشيء الذي يجعل هذه العملية رخيصة على جهاز منزلي فيه GPU مدمج من Intel أو بطاقة Nvidia — غير متاحة لك ببساطة ما لم يوفّر مزوّدك أجهزة مزوّدة بـ GPU للاستئجار.

الاستراتيجية الكاملة على VPS إذن هي: تجنّب إعادة الترميز. أبقِ مكتبتك على ترميزات يشغّلها عملاؤك أصلًا — فيديو H.264، وصوت AAC أو AC3، داخل حاوية MP4 أو MKV — واختر تطبيقات عميلة تعمل بالتشغيل المباشر: تطبيقات Jellyfin الأصلية لـ Android TV وiOS وRoku، بالإضافة إلى Infuse وKodi وJellyfin Media Player لسطح المكتب. افعل ذلك ولن يلمس VPS أداة ffmpeg إطلاقًا، وجهاز متواضع بـ 2 vCPU يبث لعدة أشخاص في آن واحد. أما إن خططت لإعادة الترميز فستحتاج جهازًا أكبر بكثير وأغلى ثمنًا، وحتى عندها تظل 4K رهانًا خاسرًا.

احسب حساب عرض النطاق أيضًا، لأنه المفاجأة الأخرى. التشغيل المباشر يرسل الملف بمعدّل البت الخاص به. الملف المضغوط بجودة 1080p يعمل بمعدل 8-12 Mbps؛ ونسخة Blu-ray remux بجودة 1080p بمعدل 20-30 Mbps؛ و4K HDR بمعدل 40-80 Mbps. ثلاثة أشخاص يشغّلون تشغيلًا مباشرًا ملفات بمعدل 10 Mbps يعني 30 Mbps من الرفع المستمر من VPS الخاص بك. تحقق من رقمين في باقتك: سرعة المنفذ (هل يستطيع دعم رفع بسرعة 30 Mbps؟) وسقف النقل الشهري. فيلم واحد مدته ساعتان بمعدل 10 Mbps يعادل نحو 9 GB صادرة، فباقة مقننة بـ 1 TB شهريًا تعادل أكثر بقليل من مئة فيلم كهذا شهريًا — أي ثلاثة أو أربعة يوميًا — وأسرة تشاهد 4K، بمعدل بت أعلى بأربع إلى ثماني مرات، تستنفدها أسرع بكثير.

المتطلبات المسبقة

  • خادم VPS جديد بنظام Ubuntu 24.04 KVM مع صلاحيات root أو sudo، ومعه Docker وإضافة Compose مثبَّتة.
  • وحدة تخزين كتلي (block storage) للوسائط، بحجم يناسب مكتبتك (انظر تحديد الحجم أدناه). القرص الجذري الصغير المرفق مع أي VPS ليس مكان أفلامك.
  • اسم نطاق إن أردت وصولًا عامًّا عبر HTTPS، أو شبكة WireGuard VPN على VPS نفسه إن كنت تفضّل إبقاء كل شيء خاصًا.
  • وسائط لك الحق القانوني في بثها — نسخك الخاصة، وتسجيلاتك الخاصة، وملفات تملكها.

اربط وحدة التخزين الكتلي أولًا

اربط الوحدة من لوحة تحكم مزوّدك، ثم حدّدها واربطها بالنظام. احصل على اسم الجهاز من lsblk — سيكون شيئًا مثل /dev/sdb أو /dev/vdb، وليس القرص الجذري أبدًا.

lsblk
sudo mkfs.ext4 /dev/sdb          # ONLY on a new, empty volume — this ERASES it
sudo mkdir -p /mnt/media
sudo blkid /dev/sdb              # copy the UUID shown for this device

اربطها عبر UUID، لا عبر /dev/sdb، لأن حروف الأجهزة تعيد ترتيب نفسها بين عمليات إعادة الإقلاع وقد ينتهي بك الأمر بتهيئة أو ربط القرص الخاطئ. أضف سطرًا واحدًا إلى /etc/fstab:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /mnt/media  ext4  defaults,nofail  0  2
sudo mount -a
df -h /mnt/media

الخيار nofail مهم: بدونه، إذا انفصلت وحدة التخزين الكتلي يومًا ما، يرفض الجهاز الإقلاع وينزلق إلى صَدَفة طوارئ (emergency shell). أكبر خطأ هنا على الإطلاق هو تشغيل mkfs.ext4 على وحدة تحمل بيانات بالفعل — فهذا يمحوها. هيّئ الوحدات الجديدة فقط؛ وإذا كان القرص يحمل مكتبتك بالفعل، انتقل مباشرة إلى سطر fstab.

رتّب الوسائط بالطريقة التي يتوقعها Jellyfin

يطابق Jellyfin البيانات الوصفية (metadata) بأسماء المجلدات والملفات. إن كان الترتيب خاطئًا، تصل الأفلام كملفات بلا عنوان وبلا ملصق، أو تُطابَق حلقة مع المسلسل الخاطئ. توجد ثلاث قواعد فقط: كل فيلم يُحفظ في مجلده الخاص Name (Year) مع اسم ملف مطابق؛ ومجلدات المواسم تُسمَّى Season 01، لا S01؛ وملفات الحلقات تستخدم صيغة S01E01؛ والحلقات الخاصة تذهب إلى Season 00.

/mnt/media
├── Movies
│   ├── Blade Runner (1982)
│   │   └── Blade Runner (1982).mkv
│   └── Arrival (2016)
│       └── Arrival (2016).mkv
└── Shows
    └── Severance (2022)
        ├── Season 01
        │   ├── Severance - S01E01.mkv
        │   └── Severance - S01E02.mkv
        └── Season 00
            └── Severance - The Lexington Letter.mkv

الـ(Year) على الأفلام ليس زخرفًا — فهو يزيل الالتباس بين النسخ المعادة (remakes) بحيث يلتقط أداة المطابقة العنوان الصحيح. أبقِ Movies وShows مجلدين منفصلين من المستوى الأعلى، لأن كل واحد منهما يصبح مكتبة Jellyfin من نوع محتوى محدد، ومزجهما يربك مزوّد البيانات الوصفية.

الأذونات: السبب الأول لظهور المكتبات فارغة

هذا هو الفهم الخاطئ الذي يكلّف الناس أمسية كاملة. صورة jellyfin/jellyfin الرسمية لا تحترم متغيّرات البيئة PUID/PGID — فهذه تخص صورة LinuxServer.io (lscr.io/linuxserver/jellyfin). على الصورة الرسمية تتحكم بالمستخدم عبر المفتاح user: في ملف compose، وإن أغفلته تعمل الحاوية بصلاحيات root. أيًّا كانت الصورة التي تستخدمها، القاعدة واحدة: يجب أن يكون uid/gid الذي تعمل به الحاوية قادرًا على قراءة كل مجلد وسائط وعبوره.

سنُشغّل الحاوية بـ uid/gid رقم 1000، أول مستخدم غير-root على جهاز Ubuntu قياسي. تحقق من قيمتك وحدّد الملكية:

id                                  # confirm your user is uid=1000 gid=1000
sudo chown -R 1000:1000 /mnt/media
sudo find /mnt/media -type d -exec chmod 755 {} \;
sudo find /mnt/media -type f -exec chmod 644 {} \;
mkdir -p ~/jellyfin/config ~/jellyfin/cache
sudo chown -R 1000:1000 ~/jellyfin

تحتاج المجلدات إلى بِت التنفيذ (الـx في 755)، لا القراءة وحدها — فبدونه لا تستطيع الحاوية دخول المجلد حتى وإن كانت قادرة على عرض اسمه. الفخ الذي يفرغ مكتبة بأكملها هو المجلد الأب: إن لم تستطع uid الحاوية عبور نقطة الربط نفسها، فهي لن تصل أبدًا إلى /media/Movies أو /media/Shows، وتصبح كل المكتبات فارغة دفعة واحدة مع ظهور Access to the path ... is denied في السجل. أي مجلد وسائط واحد لا تستطيع الحاوية قراءته يُسجَّل ويُتجاوَز، فتختفي دفعة من الملفات المنسوخة بصلاحيات root من المكتبة بصمت. لهذا نضبط الملكية تكراريًا ونحدد بِت التنفيذ على كل مجلد بدل إصلاح مجلد واحد فقط.

ملف docker-compose

services:
  jellyfin:
    image: jellyfin/jellyfin:10
    container_name: jellyfin
    user: "1000:1000"
    restart: unless-stopped
    ports:
      - "127.0.0.1:8096:8096"
    volumes:
      - ./config:/config
      - ./cache:/cache
      - /mnt/media:/media:ro
    environment:
      - JELLYFIN_PublishedServerUrl=https://jellyfin.example.com

سطرًا سطرًا: user: "1000:1000" هو ما يحدد أذونات الملفات فعليًا، بما يطابق الملكية أعلاه. /config يحمل الخادم بأكمله — الحسابات، والمكتبات، والبيانات الوصفية، وحالة المشاهدة — لذا يجب أن يكون قابلًا للكتابة وهو الشيء الذي تنسخه احتياطيًا. /cache مساحة عمل يمكن التخلص منها. وحدة تخزين الوسائط مضبوطة على :ro (قراءة فقط) عن قصد: يخزّن Jellyfin افتراضيًا الصور الفنية والبيانات الوصفية تحت /config، فلا يحتاج أبدًا إلى الكتابة في مكتبتك، وحماية القراءة فقط تصون ملفاتك من حذف عرضي أو إضافة (plugin) معطوبة. المنفذ مربوط بـ 127.0.0.1 عن قصد — دخول Jellyfin عبر الويب هو HTTP عادي بلا تشفير، لذا لا ننشر المنفذ 8096 على الإنترنت العام مطلقًا. أما JELLYFIN_PublishedServerUrl فهو العنوان الذي يعلن عنه الخادم للاكتشاف التلقائي المحلي — وهو بث UDP على الشبكة المحلية، فلا يراه العملاء عبر الإنترنت أبدًا، ويستخدمون ببساطة الرابط الذي تكتبه في التطبيق. اضبطه على العنوان الذي ينبغي إبلاغ العملاء به، وتوقّع أن تكتب ذلك الرابط يدويًا على الأجهزة البعيدة.

شغّله من مجلد compose:

docker compose up -d
docker logs -f jellyfin

التشغيل الأول: معالج الإعداد ومكتباتك

بما أن المنفذ مربوط بـ localhost، صِل إلى المعالج عبر نفق SSH من حاسوبك المحمول بدلًا من فتح ثغرة في جدار الحماية:

ssh -L 8096:127.0.0.1:8096 you@your-vps-ip

الآن افتح http://localhost:8096. يرشدك المعالج عبر اختيار اللغة، ثم إنشاء مستخدم مسؤول (admin) بكلمة مرور قوية — فهذا الحساب هو خادمك، لذا لا تعِد استخدام كلمة مرور مؤقتة. أضف مكتبتك الأولى: اختر نوع المحتوى Movies، ووجّهها إلى /media/Movies (المسار داخل الحاوية، لا مسار المضيف)، وكرر ذلك مع Shows عند /media/Shows. أنهِ الإعداد، ويبدأ Jellyfin الفحص. النتيجة الصحيحة هي ظهور الملصقات والعناوين واكتمالها خلال دقيقة أو دقيقتين لمكتبة صغيرة. أضف أو عدّل المكتبات لاحقًا تحت Dashboard → Libraries، وأجبر إعادة فحص عبر Scan All Libraries.

إن كنت تعتمد على أي إعادة ترميز على الإطلاق، افتح Dashboard → Playback → Transcoding واضبط مسار إعادة الترميز المؤقت على /cache/transcodes بحيث يستقر النشاط على وحدة الكاش (cache) بدل تضخيم /config. اترك التسريع بالعتاد (hardware acceleration) على None — فلا يوجد GPU لتسريعه به.

الوصول عن بُعد: وكيل عكسي TLS، أو الإبقاء عليه على شبكة الـVPN

أمامك طريقتان آمنتان للوصول إلى Jellyfin من الخارج، وطريقة غير آمنة يجب تجنبها. الطريقة غير الآمنة هي نشر المنفذ 8096 مباشرة على الإنترنت: تنتقل بيانات الدخول كنص صريح ويتعرض المنفذ لهجوم بالقوة الغاشمة خلال ساعات.

الخيار أ — وكيل عكسي (reverse proxy) بشهادة TLS. ضع Jellyfin على نطاق فرعي خلف Traefik مع TLS تلقائي لتطبيقات Docker لديك، أو خلف nginx بـشهادة Let's Encrypt صادرة عبر Certbot. يستخدم Jellyfin بروتوكول WebSockets للتحديثات الفورية، لذا يجب أن يمرر الوكيل ترويسات الترقية (upgrade). يفعل Traefik ذلك تلقائيًا؛ أما nginx فيحتاج أن تُكتب صراحة، ويحتاج HTTP/1.1 نحو الخادم الخلفي وإلا لن تحدث الترقية أبدًا:

location / {
    proxy_pass http://127.0.0.1:8096;
    proxy_http_version 1.1;
    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_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

اضبط JELLYFIN_PublishedServerUrl على عنوان https:// بحيث يعلن أي اكتشاف تلقائي محلي عن الرابط الصحيح — فالتطبيقات البعيدة تستخدم العنوان الذي تعطيه لها — وأضف Fail2ban لإبطاء محاولات القوة الغاشمة ضد صفحة الدخول. وحالما يصبح الخادم عامًّا، وجّه Uptime Kuma إلى الرابط لتعلم بالانقطاع قبل أن يعلم مشاهدوك.

الخيار ب — أبقه خاصًّا على VPN. لا تنشر المنفذ 8096 إطلاقًا؛ صِل إلى Jellyfin فقط عبر نفق WireGuard ينتهي على الجهاز نفسه. لأسرة واحدة، هذا هو الخيار الآمن الأبسط — بلا شهادة، وبلا تعرّض عام، وبلا سطح هجوم بالقوة الغاشمة. اربط الحاوية بعنوان النفق أو بـ localhost واتصل عبر الـVPN. راجع إعداد VPN عبر WireGuard لخادم VPS خاص للنفق نفسه.

تحديد حجم التخزين والنسخ الاحتياطي

خطط بحسب الجودة، لا عدد الملفات. الأفلام المضغوطة بجودة 1080p تشغل 4-15 GB لكل منها؛ ونسخة remux بجودة 1080p تشغل 20-40 GB؛ وموسم من مسلسل بجودة 1080p يشغل 15-40 GB؛ وأي شيء بجودة 4K يشغل 40-100 GB لكل فيلم. مكتبة من بضع مئات الأفلام مع بعض المسلسلات تحتاج وحدة تخزين بحجم 2-4 TB، ومن الأرخص أن تختار وحدة تخزين كتلي أكبر من حاجتك الحالية مرة واحدة بدل الانتقال إلى وحدة أكبر لاحقًا.

/config هو كامل حالة الخادم، لذا هو الشيء الوحيد الذي يجب أن تنسخه احتياطيًا. خذ لقطة (snapshot) منه أو أوقف الخدمة وأرشفه بـ tar، واحتفظ بالنسخة خارج الجهاز:

docker compose down
sudo tar czf jellyfin-config-$(date +%F).tgz -C ~/jellyfin config
docker compose up -d

/cache ومجلد إعادة الترميز قابلان للتخلص منهما. وسائط /mnt/media تنسخها احتياطيًا بشكل منفصل أو تقبل بإمكانية إعادة نسخها من مصدرها — ومعظم الناس يختارون الخيار الثاني نظرًا للحجم. الترقيات تكون بـ docker compose pull && docker compose up -d؛ ووسم :10 أعلاه يبقيك ضمن الإصدار الرئيسي 10.x، فالانتقال إلى الإصدار الرئيسي التالي تعديل متعمد للوسم — تصفّح ملاحظات إصدار Jellyfin قبل أن تفعل ذلك، لأن ترحيلات مخطط المكتبة (schema) تحدث عند الإصدارات الرئيسية.

أنماط الفشل، مع النصوص التي ستراها

المكتبة فارغة بعد الفحص. يُظهر السجل في Dashboard → Logs (أو ~/jellyfin/config/log/log_*.log):

System.UnauthorizedAccessException: Access to the path '/media/Movies' is denied.

لا تستطيع uid الحاوية قراءة ذلك المسار. السبب: وسائط مملوكة لـroot أو لـuid غير قيمة user: لديك، أو مجلد ينقصه بِت التنفيذ، أو نقطة الربط الأب نفسها غير قابلة للعبور بواسطة تلك الـuid. الحل: chown -R 1000:1000 /mnt/media، والمجلدات 755، والملفات 644، ثم أعد الفحص.

التشغيل يُشبع الـCPU ويتعثّر بالتخزين المؤقت. يُظهر docker stats jellyfin استخدام CPU قريبًا من 100% مضروبًا في عدد أنويتك، ويُدرج Dashboard → Playback الجلسة كـTranscode بسرعة أقل من 1.0x. العميل لا يعمل بالتشغيل المباشر، فيعيد VPS الترميز على CPU أبطأ من الزمن الحقيقي وهو يخسر السباق. السبب: ترميز (codec) أو حاوية غير مدعومة، أو ترجمات مدمجة في الصورة، أو تحويل النطاق الديناميكي لـHDR (tone-mapping). الحل: انتقل إلى عميل يعمل بالتشغيل المباشر، وأبقِ المصادر بترميز H.264/AAC، واستخدم ترجمات نصية (SRT) بدل ترجمات صورية (PGS/VOBSUB) التي تفرض دمجًا في الصورة، وأبعد 4K HDR كليًا عن جهاز بلا GPU.

"No compatible streams are available." الرسالة الكاملة عادة هي "This client isn't compatible with the media and the server isn't sending a compatible media format." رفض العميل المصدر، وفشلت أيضًا إعادة الترميز الاحتياطية في البدء. السبب: أمر ffmpeg معطوب، أو ملف غير قابل للقراءة، أو ملف تعريف المستخدم يحظر تحويل الفيديو. الحل: اقرأ سطر ffmpeg في Dashboard → Logs، وتأكد من أن الملف يعمل أصلًا، وتحقق من أذونات تشغيل المستخدم إن كنت تعتمد على إعادة الترميز، وجرّب عميلًا ثانيًا لاستبعاد نزوات ترميز المتصفح.

الأفلام بلا ملصق أو بالملصق الخاطئ. لم تتطابق البيانات الوصفية. السبب: فيلم ليس في مجلده الخاص Name (Year)، أو مجلد موسم مسمّى S01 بدل Season 01، أو حلقات ليست بصيغة S01E01، أو سنة مفقودة. الحل: أعد التسمية وفق الترتيب أعلاه، ثم Refresh metadata → Replace all، أو استخدم Identify على عنصر واحد لتثبيت إدخال TMDB/TVDB الصحيح.

FAQ

هل يستطيع VPS إعادة ترميز الفيديو بلا GPU؟

نعم، لكن على CPU فقط، وهذا مكلف. إعادة ترميز برمجية واحدة بجودة 1080p قد تُشبع عدة vCPU، وعادة لا تستطيع 4K أو HEVC مجاراة الزمن الحقيقي، فيتعثّر التشغيل بالتخزين المؤقت. الخطوة الرابحة هي تجنّب إعادة الترميز: أبقِ مكتبتك بترميز H.264/AAC واستخدم تطبيقات عميلة تعمل بالتشغيل المباشر، بحيث لا يفعل VPS سوى بث البايتات. استأجر جهازًا بـGPU فقط إن كنت فعلًا بحاجة إلى إعادة ترميز فورية.

لماذا مكتبة Jellyfin لديّ فارغة بعد الفحص؟

غالبًا ما يكون السبب الأذونات. تعمل صورة jellyfin/jellyfin الرسمية بأي user: تحدده (أو root)، وإن لم تكن الملفات قابلة للقراءة من تلك الـuid، يسجّل الفحص Access to the path ... is denied ويتجاوزها. أصلح الملكية بـchown -R 1000:1000 /mnt/media، وامنح المجلدات بِت التنفيذ (755)، وأعد الفحص — وتحقق من المجلد الأب أيضًا، لأنه إن لم تستطع uid الحاوية عبور /mnt/media نفسه، فهي لن تصل أبدًا إلى مجلدات المكتبة وتصبح كل شيء فارغًا. السبب الثاني الأكثر شيوعًا هو ترتيب مجلدات لا يطابق ما يتوقعه Jellyfin.

كيف أصل إلى Jellyfin عن بُعد وبأمان؟

خياران جيدان. ضعه خلف وكيل عكسي بشهادة TLS على نطاق فرعي بحيث يُشفَّر الدخول والبث، وأضف Fail2ban — لا تكشف أبدًا المنفذ 8096 كما هو، فهو يرسل كلمة مرورك كنص صريح. أو أبقه خاصًّا بالكامل ولا تصل إليه إلا عبر VPN، وهو الخيار الآمن الأبسط لأسرة واحدة. أعطِ التطبيقات العنوان العام مباشرة — فالاكتشاف التلقائي بث على الشبكة المحلية، ولا يصل إلى العملاء القادمين عبر الإنترنت.

كم من التخزين وعرض النطاق يحتاجه VPS يشغّل Jellyfin؟

التخزين يعتمد على الجودة: خطط لـ4-15 GB لكل فيلم مضغوط بجودة 1080p، و20-40 GB لكل remux، و40-100 GB لـ4K، فمعظم المكتبات تحتاج وحدة تخزين كتلي بحجم 2-4 TB. عرض النطاق يحدده معدل بِت التشغيل المباشر — 8-12 Mbps لكل بث 1080p، وأكثر بكثير لـ4K — لذا تأكد أن سرعة منفذك تتحمل عدد المشاهدين المتزامنين وراقب سقف النقل الشهري. أضف هامش CPU إن كنت تخطط لإعادة الترميز؛ وأعطِ الأولوية لعرض النطاق على الأنوية إن كنت تخطط للتشغيل المباشر.

هل تشغيل Jellyfin على VPS قانوني؟

Jellyfin نفسه برنامج مجاني ومفتوح المصدر، وتشغيله قانوني تمامًا. ما يهم هو المحتوى: لا تبث سوى وسائط تملكها أو مرخَّص لك بحيازتها — نسخك الخاصة من الأقراص، أو تسجيلاتك، أو ملفات لك الحق فيها. لا يوفّر Jellyfin أي وسائط ولا طريقة للحصول عليها؛ إنه مشغّل لمكتبة تملكها أصلًا.

#jellyfin#media-server#Docker#استضافة ذاتية#transcoding