SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-26

VPS पर Jellyfin कैसे सेटअप करें: पूरी गाइड

VPS पर Docker के जरिए Jellyfin इंस्टॉल करने का तरीका जानें। इस गाइड में block storage, फाइल permissions और CPU transcoding की समस्याओं को हल करने के सटीक उपाय दिए गए हैं।

आप क्या बना रहे हैं

एक VPS पर Jellyfin मीडिया सर्वर: एक container, तीन volumes, और आपकी फिल्मों और शो को रखने वाली एक block-storage डिस्क, जिसे किसी भी ब्राउज़र या Jellyfin ऐप से एक्सेस किया जा सकता है। यह इंस्टॉलेशन पंद्रह लाइनों की एक compose फाइल है। इसके बाद आने वाली सभी समस्याएं दो कारणों से होती हैं: फाइल अनुमतियां (permissions) जिन्हें container पढ़ नहीं सकता, और बिना GPU वाले VPS से वीडियो ट्रांसकोड करने के लिए कहना जिसे करने में वह सक्षम नहीं है। यह गाइड अपना अधिकांश समय इन्हीं दो बिंदुओं पर केंद्रित करती है, क्योंकि अधिकांश सहायता टिकट यहीं से आते हैं।

Jellyfin पूरी तरह से मुफ्त और ओपन सोर्स है, जिसमें कोई अकाउंट, कोई पेवॉल फीचर और कोई टेलीमेट्री नहीं है, यही कारण है कि यह 2026 में सेल्फ-होस्ट करने योग्य चीजें की लगभग हर सूची में शामिल है। यह आपके द्वारा स्वामित्व वाली मीडिया फाइलों को चलाता है। यह कोई कंटेंट प्रदान नहीं करता है, और यह गाइड किसी भी प्रकार की कंटेंट प्राप्त करने के बारे में नहीं है।

Transcoding की वास्तविकता, कुछ भी किराए पर लेने से पहले

इसे पहले पढ़ें, क्योंकि यह आपके द्वारा खरीदी जाने वाली चीजों को बदल देता है। जब आप play दबाते हैं, तो एक media server दो में से एक काम करता है। Direct play फाइल को वैसे ही stream करता है जैसी वह है: VPS डिस्क से bytes पढ़ता है और उन्हें network पर भेज देता है, जिसमें लगभग कोई CPU खर्च नहीं होता। Transcoding वीडियो को तुरंत re-encode करता है, जैसे नया resolution, नया codec, या subtitles को वीडियो में जोड़ना, और यह पूरी तरह से CPU का काम है।

एक सामान्य VPS में GPU नहीं होता है। इसलिए हर transcode CPU पर libx264/libx265 के साथ चलता है, और software encoding महंगी होती है। एक single 1080p H.264 transcode कई shared vCPUs को saturate कर सकता है; एक 4K या HEVC transcode आमतौर पर real-time के साथ तालमेल नहीं बिठा पाता, इसलिए playback रुक जाता है और हमेशा buffering होती रहती है। Hardware transcoding, जो Intel iGPU या Nvidia card वाले home box पर इसे सस्ता बनाता है, आपके लिए उपलब्ध नहीं है जब तक कि आपका provider GPU instances किराए पर न देता हो।

इसलिए VPS पर पूरी रणनीति यह है: transcoding से बचें। अपनी library को उन codecs में रखें जिन्हें आपके clients natively play कर सकें, जैसे H.264 video, AAC या AC3 audio, MP4 या MKV container में, और ऐसे client apps चुनें जो direct-play करते हों: Android TV, iOS और Roku के लिए native Jellyfin apps, साथ ही Infuse, Kodi, और desktop Jellyfin Media Player। ऐसा करने पर VPS कभी ffmpeg का उपयोग नहीं करेगा, और एक साधारण 2 vCPU वाला box एक साथ कई लोगों को stream कर पाएगा। यदि आप transcode करने की योजना बनाते हैं, तो आपको एक बहुत बड़ा और महंगा box चाहिए होगा, और तब भी 4K एक बुरा विकल्प है।

Bandwidth का हिसाब भी करें, क्योंकि यह दूसरा अप्रत्याशित पहलू है। Direct play में file अपनी bitrate पर भेजी जाती है। Compressed 1080p file 8-12 Mbps पर चलती है; 1080p Blu-ray remux 20-30 Mbps पर; और 4K HDR 40-80 Mbps पर। 10 Mbps की files को direct play करने वाले तीन लोग आपके VPS से लगातार 30 Mbps upload उपयोग करेंगे। अपने plan में दो numbers जाँचें: port speed (क्या वह upstream में 30 Mbps भेज सकता है?) और monthly transfer cap। 10 Mbps की दो घंटे की एक film लगभग 9 GB बाहर भेजती है। इसलिए metered 1 TB/month allowance में महीने में ऐसे 100 से कुछ अधिक films भेजी जा सकती हैं, यानी प्रतिदिन तीन या चार। 4K देखने वाला household, जिसमें bitrate चार से आठ गुना अधिक होती है, इस allowance को बहुत तेज़ी से समाप्त कर देगा। उसी box से बाहर जाने वाले traffic को बढ़ाने वाली हर दूसरी चीज़ को भी इसी budget में गिनें, जिसमें self-hosted RustDesk relay भी शामिल है। जब दो peers सीधे connect नहीं कर पाते, तब यह पूरा remote desktop session वहन करता है।

आवश्यक शर्तें

  • root या sudo एक्सेस के साथ एक नया Ubuntu 24.04 KVM VPS, जिसमें Docker और Compose plugin इंस्टॉल हो।
  • आपकी लाइब्रेरी के आकार के अनुसार मीडिया के लिए एक block-storage volume (नीचे sizing देखें)। VPS के साथ मिलने वाली छोटी root disk पर फिल्में स्टोर न करें।
  • यदि आप public HTTPS एक्सेस चाहते हैं तो एक domain name, या यदि आप इसे पूरी तरह निजी रखना चाहते हैं तो उसी VPS पर WireGuard VPN
  • ऐसा मीडिया जिसे स्ट्रीम करने के लिए आप कानूनी रूप से अधिकृत हैं, जैसे कि आपकी अपनी rips, आपकी अपनी रिकॉर्डिंग, या ऐसी फाइलें जिनके आप मालिक हैं।

सबसे पहले block storage को mount करें

अपने provider के panel में volume को attach करें, फिर उसे ढूँढें और mount करें। lsblk से device का नाम प्राप्त करें, यह /dev/sdb या /dev/vdb जैसा कुछ होगा, कभी भी root disk नहीं।

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 द्वारा mount करें, न कि /dev/sdb द्वारा, क्योंकि reboot के दौरान device letters का क्रम बदल सकता है और आप गलत disk को format या mount कर सकते हैं। /etc/fstab में एक पंक्ति जोड़ें:

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

nofail महत्वपूर्ण है: इसके बिना, यदि block volume कभी detach हो जाता है, तो server boot होने से मना कर देगा और emergency shell में चला जाएगा। यहाँ सबसे बड़ी गलती ऐसे volume पर mkfs.ext4 चलाना है जिसमें पहले से data मौजूद है, क्योंकि यह उसे मिटा देता है। केवल नए volumes को format करें; यदि disk पर पहले से आपकी library मौजूद है, तो सीधे fstab पंक्ति पर जाएँ।

मीडिया को उस तरह व्यवस्थित करें जैसा Jellyfin चाहता है

Jellyfin फोल्डर और फाइल के नामों के आधार पर मेटाडेटा का मिलान करता है। यदि लेआउट गलत हुआ, तो फिल्में बिना शीर्षक वाली फाइलों के रूप में दिखाई देंगी जिनमें कोई पोस्टर नहीं होगा, या कोई एपिसोड गलत सीरीज से मेल खा जाएगा। इसके ठीक तीन नियम हैं: प्रत्येक फिल्म अपने स्वयं के 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) केवल सजावट के लिए नहीं है, यह रीमेक के बीच अंतर स्पष्ट करता है ताकि मैचिंग टूल सही शीर्षक चुन सके। Movies और Shows को अलग-अलग टॉप-लेवल फोल्डर के रूप में रखें क्योंकि प्रत्येक एक विशिष्ट कंटेंट प्रकार की Jellyfin लाइब्रेरी बन जाता है, और उन्हें मिलाने से मेटाडेटा प्रदाता भ्रमित हो जाता है। Jellyfin खुशी-खुशी तस्वीरों के तीसरे फोल्डर को भी इंडेक्स कर लेगा, लेकिन एक समर्पित फोटो सर्वर की तुलना में यह अनुभव बहुत सीमित है। इसलिए यदि आपके एल्बम महत्वपूर्ण हैं, तो उन्हें PhotoPrism या Immich चलाने वाले अपने स्वयं के सर्वर पर रखें और इसे केवल फिल्म और टीवी के लिए छोड़ दें।

अनुमतियाँ (Permissions): लाइब्रेरी खाली दिखने का सबसे मुख्य कारण

यह वह गलतफहमी है जिसमें लोगों की पूरी शाम बर्बाद हो जाती है। आधिकारिक jellyfin/jellyfin इमेज PUID/PGID एनवायरनमेंट वेरिएबल्स का सम्मान नहीं करती है, वे LinuxServer.io इमेज (lscr.io/linuxserver/jellyfin) से संबंधित हैं। आधिकारिक इमेज पर आप compose में user: की (key) के साथ यूजर को नियंत्रित करते हैं, और यदि आप इसे छोड़ देते हैं तो कंटेनर root के रूप में चलता है। आप जो भी उपयोग करें, नियम एक ही है: जिस uid/gid पर कंटेनर चलता है, उसे हर मीडिया डायरेक्टरी को पढ़ने और उसमें जाने (traverse) में सक्षम होना चाहिए।

हम uid/gid 1000 के रूप में चलेंगे, जो एक स्टॉक Ubuntu बॉक्स पर पहला नॉन-रूट यूजर है। अपना uid/gid कन्फर्म करें और ओनरशिप सेट करें:

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

डायरेक्टरीज के लिए केवल रीड (read) ही नहीं, बल्कि execute बिट (755 में x) की भी आवश्यकता होती है। इसके बिना, कंटेनर फोल्डर के अंदर नहीं जा सकता, भले ही वह फाइलों के नाम देख सके। वह जाल जो पूरी लाइब्रेरी को खाली कर देता है, वह पैरेंट डायरेक्टरी है: यदि कंटेनर का uid माउंट को ही पार (traverse) नहीं कर सकता, तो वह कभी /media/Movies या /media/Shows तक नहीं पहुँच पाता, और लॉग में Access to the path ... is denied के साथ पूरी लाइब्रेरी एक साथ खाली दिखाई देती है। किसी भी मीडिया फोल्डर को जिसे वह पढ़ नहीं सकता, उसे लॉग कर दिया जाता है और छोड़ दिया जाता है। इसलिए, root के रूप में कॉपी की गई फाइलों का पूरा बैच चुपचाप लाइब्रेरी से गायब हो जाता है। यही कारण है कि हम एक फोल्डर को ठीक करने के बजाय हर डायरेक्टरी पर रिकर्सिवली (recursively) chown करते हैं और execute बिट सेट करते हैं।

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" वह निर्देश है जो वास्तव में फ़ाइल अनुमतियों (permissions) को सेट करता है, जो ऊपर दिए गए स्वामित्व (ownership) से मेल खाता है। /config में पूरा सर्वर, अकाउंट्स, लाइब्रेरीज़, मेटाडेटा और वॉच स्टेट सुरक्षित रहता है, इसलिए इसे writable होना चाहिए और यही वह चीज़ है जिसका आपको बैकअप लेना चाहिए। /cache एक अस्थायी वर्किंग स्पेस है। मीडिया माउंट को जानबूझकर :ro (read-only) रखा गया है: Jellyfin डिफ़ॉल्ट रूप से आर्टवर्क और मेटाडेटा को /config के अंतर्गत स्टोर करता है, इसलिए इसे आपकी लाइब्रेरी में कुछ भी लिखने की आवश्यकता नहीं होती है, और read-only मोड आपकी फ़ाइलों को आकस्मिक विलोपन (accidental delete) या किसी खराब प्लगइन से सुरक्षित रखता है। पोर्ट को जानबूझकर 127.0.0.1 पर बाइंड किया गया है, क्योंकि Jellyfin का वेब लॉगिन सादा HTTP है, इसलिए हम 8096 को कभी भी सार्वजनिक इंटरनेट पर प्रकाशित नहीं करते हैं। JELLYFIN_PublishedServerUrl वह पता है जिसे सर्वर लोकल ऑटो-डिस्कवरी (LAN UDP ब्रॉडकास्ट) के लिए विज्ञापित करता है, इसलिए इंटरनेट पर मौजूद क्लाइंट इसे कभी नहीं देखते हैं और वे केवल उस URL का उपयोग करते हैं जिसे आप ऐप में टाइप करते हैं। इसे उस पते पर सेट करें जो क्लाइंट्स को बताया जाना चाहिए, और रिमोट डिवाइस पर उस URL को मैन्युअल रूप से दर्ज करने की अपेक्षा रखें।

इसे compose डायरेक्टरी से शुरू करें:

docker compose up -d
docker logs -f jellyfin

पहली बार चलाना: सेटअप विज़ार्ड और आपकी लाइब्रेरीज़

चूंकि port localhost से bind है, इसलिए firewall में छेद करने के बजाय अपने laptop से SSH tunnel के माध्यम से विज़ार्ड तक पहुँचें:

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

अब http://localhost:8096 पर ब्राउज़ करें। विज़ार्ड आपको भाषा चुनने और फिर एक मजबूत पासवर्ड के साथ admin user बनाने की प्रक्रिया से ले जाएगा। यह account आपका सर्वर है, इसलिए किसी पुराने या सामान्य पासवर्ड का उपयोग न करें। अपनी पहली लाइब्रेरी जोड़ें: content type Movies चुनें, इसे /media/Movies पर इंगित करें (यह container के अंदर का path है, host का path नहीं), और Shows के लिए /media/Shows के साथ इसे दोहराएं। समाप्त करें, और Jellyfin स्कैन करेगा। एक छोटी लाइब्रेरी के लिए एक या दो मिनट के भीतर posters और titles का दिखाई देना एक सही परिणाम है। लाइब्रेरीज़ को बाद में Dashboard → Libraries के अंतर्गत जोड़ें या संपादित करें, और Scan All Libraries के साथ rescan को force करें। ये posters ही एक alternative frontend को आज़माने लायक बनाते हैं, क्योंकि Halcyon उसी लाइब्रेरी को 90 के दशक के एक वीडियो स्टोर की तरह Jellyfin द्वारा पहले से प्राप्त artwork से फिर से तैयार करता है।

यदि आप किसी भी प्रकार की transcoding पर निर्भर हैं, तो Dashboard → Playback → Transcoding खोलें और transcode temp path को /cache/transcodes पर सेट करें ताकि डेटा का बोझ /config को भरने के बजाय cache volume पर रहे। hardware acceleration को None पर ही रहने दें, क्योंकि accelerate करने के लिए कोई GPU मौजूद नहीं है।

Remote access: TLS reverse proxy, या इसे VPN पर रखें

Jellyfin को बाहर से एक्सेस करने के दो सुरक्षित तरीके हैं, और एक असुरक्षित तरीका है जिससे बचना चाहिए। असुरक्षित तरीका है port 8096 को सीधे इंटरनेट पर पब्लिश करना: इसमें लॉगिन जानकारी cleartext में जाती है और कुछ ही घंटों में port पर brute-force हमले शुरू हो जाते हैं।

विकल्प A, TLS reverse proxy. Jellyfin को Traefik with automatic TLS for your Docker apps के पीछे किसी subdomain पर रखें, या फिर nginx के पीछे Let's Encrypt certificate issued by Certbot का उपयोग करें। Jellyfin real-time updates के लिए WebSockets का उपयोग करता है, इसलिए proxy को upgrade headers को forward करना होगा। Traefik यह काम अपने आप कर लेता है; nginx के लिए इन्हें स्पष्ट रूप से लिखना पड़ता है, और upstream के लिए HTTP/1.1 की आवश्यकता होती है, अन्यथा upgrade कभी नहीं हो पाता:

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:// पते पर सेट करें ताकि कोई भी local autodiscovery सही URL का विज्ञापन करे, remote apps आपके द्वारा दिए गए पते का उपयोग करें, और लॉगिन के खिलाफ fail2ban to slow brute-force attempts को जोड़ें। एक बार सर्वर public हो जाने के बाद, Uptime Kuma को उस URL पर पॉइंट करें ताकि आपके दर्शकों को पता चलने से पहले आपको downtime की जानकारी मिल जाए। इसकी notifications को a self-hosted ntfy server पर भेजें ताकि failed check की सूचना अगली सुबह पढ़ने वाले ईमेल के बजाय तुरंत फोन पर push notification के रूप में मिले। public internet पर लॉगिन रखना बाकी सर्वर का ऑडिट करने का भी एक अच्छा समय है, बजाय इसके कि केवल यह भरोसा किया जाए कि केवल port 443 ही जवाब दे रहा है, और open-kritt runs that scan from its own container on the same VPS का उपयोग करें।

विकल्प B, इसे VPN पर private रखें. 8096 को बिल्कुल भी पब्लिश न करें; Jellyfin तक केवल उसी बॉक्स पर terminate होने वाले WireGuard tunnel के माध्यम से पहुँचें। एक घर के लिए यह सबसे सरल सुरक्षित विकल्प है, इसमें न तो certificate की जरूरत है, न ही public exposure की, और न ही brute-force का कोई खतरा है। container को tunnel address या localhost पर bind करें और VPN के माध्यम से connect करें। tunnel के लिए WireGuard VPN setup for a private VPS देखें।

स्टोरेज साइजिंग और बैकअप

फाइल की संख्या के बजाय गुणवत्ता के आधार पर बजट तय करें। कंप्रेस्ड 1080p फिल्में 4-15 GB की होती हैं; 1080p remux 20-40 GB का; 1080p टीवी शो का एक सीजन 15-40 GB का; और 4K कंटेंट 40-100 GB प्रति फिल्म तक हो सकता है। कुछ सौ फिल्मों और शो की लाइब्रेरी के लिए 2-4 TB वॉल्यूम की आवश्यकता होती है, और बाद में माइग्रेट करने की तुलना में एक बार में ही अधिक क्षमता वाला ब्लॉक वॉल्यूम लेना सस्ता पड़ता है।

/config पूरे सर्वर की स्थिति (state) है, इसलिए यह एकमात्र ऐसी चीज है जिसका बैकअप आपको अनिवार्य रूप से लेना चाहिए। इसका स्नैपशॉट लें या इसे stop-and-tar करें और इसकी कॉपी को सर्वर से बाहर सुरक्षित रखें:

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

/cache और ट्रांसकोड फोल्डर डिस्पोजेबल होते हैं। /mnt/media पर मौजूद मीडिया का बैकअप आप अलग से ले सकते हैं या इसे दोबारा रिप (re-rippable) करने योग्य मान सकते हैं; अधिकांश लोग इसके बड़े आकार के कारण दूसरा विकल्प चुनते हैं। अपग्रेड docker compose pull && docker compose up -d होते हैं; ऊपर दिया गया :10 टैग 10.x मेजर वर्जन के भीतर ही रहता है, इसलिए अगले मेजर वर्जन पर जाना एक सोच-समझकर किया गया टैग एडिट होना चाहिए। ऐसा करने से पहले Jellyfin के रिलीज नोट्स जरूर पढ़ें, क्योंकि मेजर वर्जन में लाइब्रेरी स्कीमा माइग्रेशन होते हैं। एक पिन किया हुआ टैग और एक बैकअप की गई स्टेट डायरेक्टरी ही किसी भी ऑलवेज-ऑन कंटेनर के लिए संपूर्ण रेसिपी है, और यही वह पैटर्न है जो रीबूट के बाद सेल्फ-होस्टेड एजेंट की मेमोरी और शेड्यूल को जीवित रखने के पीछे काम करता है।

विफलता के प्रकार और दिखाई देने वाले संदेश

स्कैन के बाद लाइब्रेरी खाली है। Dashboard → Logs (या ~/jellyfin/config/log/log_*.log) पर लॉग यह दिखाता है:

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

कंटेनर का uid उस पाथ को पढ़ नहीं सकता। कारण: मीडिया का स्वामित्व root या आपके user: मान के अलावा किसी अन्य uid के पास होना, किसी डायरेक्टरी से execute बिट का गायब होना, या पैरेंट माउंट का उस uid द्वारा एक्सेस न किया जा सकना। समाधान: chown -R 1000:1000 /mnt/media, डायरेक्टरी 755, फाइलें 644, और फिर दोबारा स्कैन करें।

प्लेबैक CPU पर लोड डालता है और बफर होता है। docker stats jellyfin में CPU आपके कोर काउंट के लगभग 100% पर दिखता है, और Dashboard → Playback में सेशन Transcode के रूप में सूचीबद्ध है जिसकी गति 1.0x से कम है। क्लाइंट direct-play नहीं कर रहा है, इसलिए VPS CPU-transcoding को वास्तविक समय से धीमी गति से कर रहा है और पिछड़ रहा है। कारण: एक असमर्थित codec या कंटेनर, सबटाइटल बर्न-इन, या HDR टोन-मैपिंग। समाधान: direct-play क्लाइंट पर स्विच करें, सोर्स को H.264/AAC में रखें, image सबटाइटल (PGS/VOBSUB) के बजाय text सबटाइटल (SRT) का उपयोग करें जो बर्न-इन को मजबूर करते हैं, और 4K HDR को पूरी तरह से केवल CPU वाले बॉक्स पर न चलाएं।

"No compatible streams are available." पूरा संदेश आमतौर पर यह होता है: "This client isn't compatible with the media and the server isn't sending a compatible media format." क्लाइंट ने सोर्स को अस्वीकार कर दिया और फॉलबैक ट्रांसकोड भी शुरू होने में विफल रहा। कारण: एक खराब ffmpeg कमांड, एक अपठनीय फाइल, या यूजर की प्रोफाइल द्वारा वीडियो कन्वर्जन को ब्लॉक करना। समाधान: Dashboard → Logs में ffmpeg लाइन पढ़ें, पुष्टि करें कि फाइल चल रही है, यदि आप ट्रांसकोडिंग पर निर्भर हैं तो यूजर की प्लेबैक अनुमतियां जांचें, और ब्राउज़र कोडेक की समस्याओं को दूर करने के लिए दूसरे क्लाइंट का उपयोग करें।

फिल्मों के पोस्टर नहीं हैं या गलत हैं। मेटाडेटा मेल नहीं खाया। कारण: फिल्म का अपने स्वयं के Name (Year) फोल्डर में न होना, सीजन फोल्डर का Season 01 के बजाय S01 नाम होना, एपिसोड का S01E01 प्रारूप में न होना, या वर्ष का गायब होना। समाधान: ऊपर दिए गए लेआउट के अनुसार नाम बदलें, फिर Refresh metadata → Replace all करें, या सही TMDB/TVDB प्रविष्टि को पिन करने के लिए किसी एक आइटम पर Identify का उपयोग करें।

FAQ

क्या VPS बिना GPU के वीडियो transcode कर सकता है?

हाँ, लेकिन यह केवल CPU पर होता है और यह काफी महंगा है। एक 1080p software transcode कई vCPUs का उपयोग कर सकता है, और 4K या HEVC आमतौर पर real-time में नहीं चल पाते, जिससे playback में बफरिंग होती है। सबसे अच्छा तरीका यह है कि transcoding से बचें: अपनी लाइब्रेरी को H.264/AAC में रखें और ऐसे client apps का उपयोग करें जो direct-play करते हों, ताकि VPS केवल bytes को stream करे। GPU instance तभी किराए पर लें यदि आपको वास्तव में on-the-fly transcoding की आवश्यकता हो।

स्कैन के बाद मेरी Jellyfin लाइब्रेरी खाली क्यों है?

इसका कारण लगभग हमेशा permissions होता है। आधिकारिक jellyfin/jellyfin image उस user: के रूप में चलती है जिसे आप सेट करते हैं (या root), और यदि फाइलें उस uid द्वारा पढ़ने योग्य नहीं हैं, तो स्कैन logs में Access to the path ... is denied दिखाई देता है और वे फाइलें छोड़ दी जाती हैं। chown -R 1000:1000 /mnt/media के साथ ownership ठीक करें, directories को execute bit (755) दें, और फिर से स्कैन करें। parent directory की भी जाँच करें, क्योंकि यदि container का uid /mnt/media तक नहीं पहुँच सकता है, तो वह लाइब्रेरी फोल्डर तक कभी नहीं पहुँचेगा और सब कुछ खाली दिखाई देगा। दूसरा सबसे आम कारण ऐसा फोल्डर लेआउट है जो Jellyfin की अपेक्षाओं से मेल नहीं खाता है।

मैं Jellyfin को दूरस्थ रूप से और सुरक्षित रूप से कैसे एक्सेस करूँ?

दो अच्छे विकल्प हैं। इसे एक subdomain पर TLS reverse proxy के पीछे रखें ताकि login और stream एन्क्रिप्टेड रहें, और fail2ban जोड़ें। कभी भी plain port 8096 को expose न करें, जो आपके पासवर्ड को cleartext में भेजता है। या इसे पूरी तरह से निजी रखें और केवल VPN के माध्यम से एक्सेस करें, जो घर के उपयोग के लिए सबसे सरल और सुरक्षित विकल्प है। apps को सीधे public address दें, क्योंकि autodiscovery एक local-network broadcast है, इसलिए यह इंटरनेट के माध्यम से आने वाले clients तक नहीं पहुँचता है।

Jellyfin VPS को कितनी डिस्क और बैंडविड्थ की आवश्यकता होती है?

डिस्क की आवश्यकता गुणवत्ता पर निर्भर करती है: प्रति compressed 1080p फिल्म के लिए 4-15 GB, प्रति remux के लिए 20-40 GB, और 4K के लिए 40-100 GB का बजट रखें, इसलिए अधिकांश लाइब्रेरी के लिए 2-4 TB block volume की आवश्यकता होती है। बैंडविड्थ direct-play bitrate द्वारा निर्धारित होती है, जो प्रति 1080p stream 8-12 Mbps है, और 4K के लिए इससे कहीं अधिक है। इसलिए सुनिश्चित करें कि आपका port speed एक साथ देखने वाले दर्शकों की संख्या को संभाल सके और मासिक transfer cap पर नज़र रखें। यदि आप transcode करने की योजना बना रहे हैं तो CPU headroom बढ़ाएँ; यदि आप direct-play करने की योजना बना रहे हैं तो cores के बजाय बैंडविड्थ को प्राथमिकता दें।

क्या VPS पर Jellyfin चलाना कानूनी है?

Jellyfin स्वयं एक मुफ्त, open-source सॉफ्टवेयर है और इसे चलाना पूरी तरह से कानूनी है। मायने यह रखता है कि सामग्री क्या है: केवल वही मीडिया stream करें जिसे आप own करते हैं या जिसे रखने के लिए आप लाइसेंस प्राप्त हैं, जैसे कि आपके अपने disc rips, रिकॉर्डिंग, या ऐसी फाइलें जिनका आपके पास अधिकार है। Jellyfin कोई मीडिया प्रदान नहीं करता है और इसे प्राप्त करने का कोई तरीका नहीं देता है; यह केवल उस लाइब्रेरी के लिए एक प्लेयर है जिसे आप पहले से ही own करते हैं।