SSD Nodes Learn
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-07-24

VPS वर Jellyfin कसा सेट करावा

Docker वापरून VPS वर Jellyfin सेट करा. Media permissions आणि CPU transcoding च्या समस्या कशा सोडवायच्या याचे सविस्तर मार्गदर्शन या लेखात वाचा.

तुम्ही काय तयार करत आहात

VPS वर Jellyfin मीडिया सर्व्हर: एक container, तीन volumes आणि तुमचे चित्रपट व शो साठवण्यासाठी एक block-storage disk. हा सर्व्हर कोणत्याही browser किंवा Jellyfin app मधून वापरता येईल. ही installation प्रक्रिया फक्त पंधरा ओळींच्या compose file द्वारे पूर्ण होते. यानंतर येणाऱ्या समस्यांची दोन मुख्य कारणे असतात — container ला वाचता न येणारे file permissions, आणि GPU नसलेल्या VPS ला व्हिडिओ transcode करण्यास सांगणे. या मार्गदर्शकाचा मोठा भाग या दोन विषयांवर केंद्रित आहे, कारण बहुतेक सपोर्ट तिकीट या कारणांमुळेच येतात.

Jellyfin हे पूर्णपणे मोफत आणि open source आहे. यामध्ये कोणतेही account, paywalled features किंवा telemetry नाही — म्हणूनच ते 2026 मध्ये self-host करण्यासाठी उपयुक्त गोष्टी यादीत समाविष्ट आहे. हे केवळ तुमचे स्वतःचे media प्ले करते. यामध्ये कोणतेही content समाविष्ट नसते आणि हा मार्गदर्शक कोणत्याही content मिळवण्याबद्दल नाही.

काहीही भाड्याने घेण्यापूर्वी, transcoding ची वास्तवता समजून घ्या

हे आधी वाचा, कारण यामुळे तुमच्या खरेदीच्या निर्णयावर परिणाम होतो. जेव्हा तुम्ही play दाबता, तेव्हा मीडिया सर्व्हर दोनपैकी एक गोष्ट करतो. Direct play फाईल जशी आहे तशी स्ट्रीम करते: VPS डिस्कवरून bytes वाचते आणि ते नेटवर्कवर पाठवते, ज्यामध्ये CPU चा वापर नगण्य होतो. Transcoding मध्ये व्हिडिओ रिअल-टाइममध्ये पुन्हा एन्कोड केला जातो — नवीन resolution, नवीन codec, किंवा subtitles burned in करणे — आणि यासाठी पूर्णपणे CPU चा वापर होतो.

सामान्य VPS मध्ये GPU नसतो. त्यामुळे प्रत्येक transcode libx264/libx265 सह CPU वर चालतो, आणि software encoding खर्चिक असते. एक single 1080p H.264 transcode अनेक shared vCPUs पूर्णपणे वापरू शकते; 4K किंवा HEVC transcode सहसा real time ला प्रतिसाद देऊ शकत नाही, ज्यामुळे playback थांबते आणि buffering सुरू राहते. Hardware transcoding — जे Intel iGPU किंवा Nvidia कार्ड असलेल्या होम बॉक्सवर हे काम स्वस्त करते — ते तुम्हाला उपलब्ध नसते, जोपर्यंत तुमचा provider GPU instances भाड्याने देत नाही.

त्यामुळे VPS वरील संपूर्ण धोरण असे आहे: transcoding टाळा. तुमची लायब्ररी अशा codecs मध्ये ठेवा जे तुमचे clients natively प्ले करू शकतात — 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 असलेला बॉक्स एकाच वेळी अनेक लोकांना स्ट्रीम करू शकेल. जर तुम्ही transcoding चा विचार केला, तर तुम्हाला खूप मोठा आणि महागडा बॉक्स लागेल, आणि तरीही 4K साठी तो योग्य पर्याय नाही.

bandwidth ची देखील गणना करा, कारण तो दुसरा मोठा धक्का आहे. Direct play फाईल तिच्या स्वतःच्या bitrate वर पाठवते. एक compressed 1080p फाईल 8-12 Mbps वेगाने चालते; 1080p Blu-ray remux 20-30 Mbps; 4K HDR 40-80 Mbps. 10 Mbps फाईल्स direct-play करणारे तीन लोक म्हणजे तुमच्या VPS मधून 30 Mbps sustained upload. तुमच्या प्लॅन मधील दोन गोष्टी तपासा: port speed (ते 30 Mbps upstream पाठवू शकते का?) आणि monthly transfer cap. 10 Mbps ची एक दोन तासांची फिल्म म्हणजे साधारण 9 GB डेटा, त्यामुळे 1 TB/month ची मर्यादा म्हणजे महिन्यातून शंभरपेक्षा जास्त अशा फिल्म्स — दिवसाला तीन किंवा चार — आणि 4K पाहणारे कुटुंब, जे bitrate च्या चार ते आठ पट वेगाने डेटा वापरते, ते खूप वेगाने डेटा संपवते.

Prerequisites

  • root किंवा sudo अधिकार असलेला, Docker आणि Compose plugin इंस्टॉल केलेले नवीन Ubuntu 24.04 KVM VPS.
  • मीडियासाठी योग्य आकाराचे block-storage volume (खालीलप्रमाणे आकार पहा). VPS सोबत मिळणारा लहान root disk मीडियासाठी वापरू नका.
  • सार्वजनिक HTTPS ॲक्सेससाठी डोमेन नेम, किंवा सर्व काही खाजगी ठेवण्यासाठी WireGuard VPN on the same VPS.
  • कायदेशीररित्या स्ट्रीम करण्यास पात्र असलेला मीडिया — तुमचे स्वतःचे rips, स्वतःचे रेकॉर्डिंग्ज किंवा तुमच्या मालकीच्या फाइल्स.

प्रथम block storage mount करा

तुमच्या provider च्या panel मध्ये volume attach करा, त्यानंतर ते शोधा आणि mount करा. device name lsblk मधून मिळवा — ते /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 झाले, तर system boot होणार नाही आणि emergency shell मध्ये जाईल. येथे सर्वात मोठी चूक म्हणजे ज्या volume मध्ये आधीच data आहे त्यावर mkfs.ext4 चालवणे — यामुळे तो data पुसला जातो. फक्त नवीन volumes format करा; जर disk मध्ये आधीच तुमची library असेल, तर थेट fstab ओळीकडे जा.

Jellyfin च्या गरजेनुसार मीडियाची मांडणी करा

Jellyfin फोल्डर आणि फाईलच्या नावांवरून metadata मॅच करते. मांडणी चुकीची असल्यास, चित्रपटांची नावे दिसत नाहीत, त्यांना पोस्टर मिळत नाही किंवा एखादा एपिसोड चुकीच्या मालिकेशी (series) मॅच होऊ शकतो. यासाठी नेमके तीन नियम आहेत: प्रत्येक चित्रपट स्वतःच्या Name (Year) फोल्डरमध्ये असावा आणि त्याचे नाव योग्य असावे; season फोल्डर्सना Season 01 असे नाव द्यावे, S01 नाही; एपिसोड फाईल्ससाठी S01E01 वापरावे; आणि specials साठी 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 ला स्वतंत्र top-level फोल्डर्स म्हणून ठेवा, कारण प्रत्येक फोल्डर विशिष्ट प्रकारची Jellyfin library बनते; ते एकत्र ठेवल्यास metadata provider गोंधळू शकतो.

Permissions: लायब्ररी रिकामी येण्याचे मुख्य कारण

लोकांचा वेळ वाया जाण्याचे हे एक प्रमुख कारण आहे. अधिकृत jellyfin/jellyfin इमेजमध्ये PUID/PGID environment variables काम करत नाहीत — ते LinuxServer.io इमेजचे (lscr.io/linuxserver/jellyfin) वैशिष्ट्य आहेत. अधिकृत इमेजमध्ये, तुम्ही compose मधील user: की वापरून युजर नियंत्रित करू शकता. जर तुम्ही ती वापरली नाही, तर कंटेनर root म्हणून रन होतो. तुम्ही कोणताही पर्याय निवडला तरी नियम एकच आहे: कंटेनर ज्या uid/gid वर रन होतो, त्याला सर्व मीडिया डिरेक्टरीज वाचता (read) आणि त्यामध्ये प्रवेश (traverse) करता आला पाहिजे.

आम्ही uid/gid 1000 वापरणार आहोत, जो standard Ubuntu वरचा पहिला non-root युजर आहे. तुमचा युजर तपासा आणि ownership सेट करा:

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 permission असून चालत नाही, तर execute bit (755 मधील x) असणे आवश्यक आहे. याशिवाय, कंटेनरला फोल्डरमधील फाईल्सची यादी (list) दिसत असली तरी त्या फोल्डरमध्ये प्रवेश करता येत नाही. संपूर्ण लायब्ररी रिकामी होण्याचे मुख्य कारण म्हणजे parent directory आहे: जर कंटेनरच्या uid ला माउंट (mount) मध्ये प्रवेश करता आला नाही, तर तो /media/Movies किंवा /media/Shows पर्यंत पोहोचू शकत नाही. अशा वेळी लॉगमध्ये Access to the path ... is denied असा एरर येतो आणि सर्व लायब्ररी रिकामी दिसते. ज्या मीडिया फोल्डरला कंटेनर वाचू शकत नाही, ते फोल्डर लॉगमध्ये नोंदवले जाते आणि स्किप केले जाते. त्यामुळे root युजरने कॉपी केलेल्या फाईल्स लायब्ररीमध्ये दिसत नाहीत. म्हणूनच, आपण फक्त एक फोल्डर दुरुस्त करण्याऐवजी, सर्व डिरेक्टरीजना recursively chown करतो आणि execute bit सेट करतो.

The docker-compose file

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 मध्ये संपूर्ण सर्व्हर — accounts, libraries, metadata, watch state — समाविष्ट असतो — त्यामुळे तो writable असणे आवश्यक आहे आणि तुम्ही याच गोष्टीचा backup घेता. /cache हे throwaway working space आहे. Media mount मुद्दाम :ro (read-only) ठेवले आहे: Jellyfin डीफॉल्टनुसार artwork आणि metadata /config मध्ये स्टोअर करते, त्यामुळे त्याला तुमच्या library मध्ये लिहिण्याची (write) गरज पडत नाही, आणि read-only मुळे तुमचे files चुकून डिलीट होण्यापासून किंवा bad plugin मुळे सुरक्षित राहतात. Port मुद्दाम 127.0.0.1 ला bind केला आहे — Jellyfin चे web login plain HTTP आहे, म्हणून आपण 8096 सार्वजनिक इंटरनेटवर (public internet) कधीही publish करत नाही. JELLYFIN_PublishedServerUrl हा तो address आहे जो सर्व्हर local autodiscovery साठी वापरतो — हा LAN UDP broadcast आहे, त्यामुळे इंटरनेटवरील clients ला तो कधीच दिसत नाही आणि ते फक्त तुम्ही app मध्ये टाईप केलेला URL वापरतात. हा address क्लाइंट्सना जो द्यायचा आहे तो सेट करा, आणि रिमोट डिवाइसेसवर तो URL मॅन्युअली टाईप करावा लागेल याची नोंद घ्या.

Compose directory मधून ते सुरू करा:

docker compose up -d
docker logs -f jellyfin

पहिली वेळ: setup wizard आणि तुमच्या libraries

port localhost ला bind असल्याने, firewall मध्ये hole उघडण्याऐवजी तुमच्या laptop मधून SSH tunnel द्वारे wizard पर्यंत पोहोचा:

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

आता http://localhost:8096 वर जा. wizard तुम्हाला भाषा निवडण्यास आणि त्यानंतर strong password सह admin user तयार करण्यास मदत करेल — हे खाते तुमच्या server साठी आहे, म्हणून कोणताही तात्पुरता password वापरू नका. तुमची पहिली library जोडा: content type Movies निवडा, /media/Movies कडे निर्देशित करा (ही container आतली path आहे, host path नाही), आणि /media/Shows वर Shows साठी हीच प्रक्रिया पुन्हा करा. प्रक्रिया पूर्ण करा आणि Jellyfin scan सुरू होईल. लहान library साठी एक किंवा दोन मिनिटांत posters आणि titles दिसणे हे योग्य लक्षण आहे. नंतर Dashboard → Libraries अंतर्गत libraries जोडा किंवा संपादित करा, आणि Scan All Libraries वापरून rescan करा.

जर तुम्ही transcoding वापरत असाल, तर Dashboard → Playback → Transcoding उघडा आणि transcode temp path /cache/transcodes वर सेट करा, जेणेकरून सर्व डेटा /config फुगवण्याऐवजी cache volume मध्ये साठवला जाईल. hardware acceleration None वर ठेवा — acceleration साठी कोणताही GPU उपलब्ध नाही.

Remote access: TLS reverse proxy, किंवा VPN वरच ठेवा

बाहेरून Jellyfin ला ॲक्सेस करण्याचे दोन सुरक्षित मार्ग आहेत आणि एक असुरक्षित मार्ग आहे जो टाळला पाहिजे. असुरक्षित मार्ग म्हणजे port 8096 थेट इंटरनेटवर प्रकाशित करणे: यामुळे login माहिती cleartext मध्ये पाठवली जाते आणि काही तासांतच port वर brute-force attack होऊ शकतो.

Option A — TLS reverse proxy. Jellyfin ला Traefik with automatic TLS for your Docker apps च्या मागे किंवा Let's Encrypt certificate issued by Certbot वापरून nginx च्या मागे एका subdomain वर ठेवा. Jellyfin रिअल-टाइम अपडेट्ससाठी WebSockets वापरते, म्हणून proxy ने upgrade headers फॉरवर्ड करणे आवश्यक आहे. Traefik हे आपोआप करते; nginx मध्ये हे headers स्पष्टपणे लिहावे लागतात आणि 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";
}

कोणतेही local autodiscovery योग्य URL जाहीर करण्यासाठी JELLYFIN_PublishedServerUrl ला https:// पत्त्यावर सेट करा — remote apps तुम्ही दिलेल्या पत्त्याचा वापर करतात — आणि login सुरक्षित करण्यासाठी fail2ban to slow brute-force attempts वापरा. एकदा सर्व्हर public झाला की, Uptime Kuma ला त्या URL वर सेट करा, जेणेकरून viewers च्या आधी तुम्हाला downtime ची माहिती मिळेल.

Option B — VPN वरच खाजगी ठेवा. 8096 अजिबात प्रकाशित करू नका; Jellyfin ला फक्त त्याच मशीनवर संपणाऱ्या WireGuard tunnel द्वारे ॲक्सेस करा. घरगुती वापरासाठी हा सर्वात सोपा सुरक्षित पर्याय आहे — यामध्ये कोणतेही certificate, public exposure किंवा brute-force धोका नसतो. container ला tunnel address किंवा localhost ला bind करा आणि VPN द्वारे कनेक्ट करा. tunnel साठी WireGuard VPN setup for a private VPS पहा.

Storage sizing and backups

फाईलच्या संख्येऐवजी गुणवत्तेनुसार बजेट ठरवा. Compressed 1080p films प्रत्येकी 4-15 GB असतात; 1080p remux 20-40 GB असतो; 1080p TV चा एक season 15-40 GB असतो; 4K मधील कोणतीही फाईल 40-100 GB असते. काही शेकडो films आणि काही shows असलेल्या लायब्ररीसाठी 2-4 TB volume आवश्यक आहे. नंतर डेटा migrate करण्यापेक्षा एकदाच block volume over-provision करणे स्वस्त पडते.

/config ही संपूर्ण server state आहे, त्यामुळे तुम्हाला फक्त याचीच backup घेणे आवश्यक आहे. Snapshot घ्या किंवा stop-and-tar करून त्याची copy मशीनच्या बाहेर ठेवा:

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

/cache आणि transcode folder विनागरह (disposable) आहेत. /mnt/media वरील media साठी वेगळा backup घ्या किंवा ते पुन्हा rippable आहे असे मानून सोडा — फाईल साइज पाहता बहुतेक लोक दुसरा पर्याय निवडतात. Upgrades हे docker compose pull && docker compose up -d आहेत; वरील :10 tag 10.x major आवृत्तीत राहते, त्यामुळे पुढच्या major आवृत्तीवर जाण्यासाठी जाणीवपूर्वक tag edit करावा लागतो — हे करण्यापूर्वी Jellyfin release notes नक्की वाचा, कारण major versions मध्ये library schema migrations होतात.

Failure modes, with the strings you will see

Library is empty after a scan. Dashboard → Logs (किंवा ~/jellyfin/config/log/log_*.log) मधील लॉगमध्ये खालीलप्रमाणे दिसते:

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

कंटेनरचा uid तो path वाचू शकत नाही. कारण: media कडील मालकी (ownership) root कडे किंवा तुमच्या user: व्हॅल्यूपेक्षा वेगळ्या uid कडे आहे, एखाद्या डिरेक्टरीचा execute bit गहाळ आहे, किंवा parent mount तो uid वापरून traversable नाही. उपाय: chown -R 1000:1000 /mnt/media, डिरेक्टरीज 755, फाइल्स 644, आणि नंतर rescan करा.

Playback pins the CPU and buffers. docker stats jellyfin मध्ये CPU वापर तुमच्या core count च्या जवळपास 100% दिसतो, आणि Dashboard → Playback मध्ये session ची स्थिती Transcode आणि वेग 1.0x पेक्षा कमी दिसतो. क्लायंट direct-playing करत नाहीये, त्यामुळे VPS मध्ये CPU-transcoding रिअल टाइमपेक्षा हळू चालत आहे आणि डेटा लॉस होत आहे. कारण: unsupported codec किंवा container, subtitle burn-in, किंवा HDR tone-mapping. उपाय: direct-play क्लायंट वापरा, sources H.264/AAC मध्ये ठेवा, image subtitles (PGS/VOBSUB) ऐवजी text subtitles (SRT) वापरा (कारण image subtitles मुळे burn-in अनिवार्य होते), आणि 4K HDR पूर्णपणे CPU-only बॉक्सपासून दूर ठेवा.

"No compatible streams are available." पूर्ण संदेश सहसा असा असतो: "This client isn't compatible with the media and the server isn't sending a compatible media format." क्लायंटने source नाकारले आहे आणि fallback transcode देखील सुरू होऊ शकले नाही. कारण: चुकीची ffmpeg command, unreadable file, किंवा युजर प्रोफाइलमुळे व्हिडिओ कन्व्हर्जन ब्लॉक झाले आहे. उपाय: Dashboard → Logs मधील ffmpeg लाईन वाचा, फाईल प्ले होते की नाही याची खात्री करा, जर तुम्ही transcoding वर अवलंबून असाल तर युजरच्या playback permissions तपासा, आणि ब्राउझर codec च्या समस्या टाळण्यासाठी दुसरा क्लायंट वापरून पहा.

Films have no poster or the wrong one. Metadata मॅच झाले नाही. कारण: मुव्ही त्याच्या स्वतःच्या Name (Year) फोल्डरमध्ये नाही, season folder चे नाव Season 01 ऐवजी S01 आहे, episodes S01E01 स्वरूपात नाहीत, किंवा वर्ष (year) दिलेले नाही. उपाय: वरीलप्रमाणे नाव बदला, त्यानंतर Refresh metadata → Replace all करा, किंवा योग्य TMDB/TVDB एंट्री मिळवण्यासाठी सिंगल आयटमवर Identify वापरा.

FAQ

GPU शिवाय VPS वर व्हिडिओ ट्रान्सकोड करता येतो का?

हो, परंतु फक्त CPU वर, आणि यासाठी खर्च जास्त येतो. एक सिंगल 1080p सॉफ्टवेअर ट्रान्सकोड करण्यासाठी अनेक vCPUs पूर्णपणे वापरले जाऊ शकतात. 4K किंवा HEVC ट्रान्सकोडिंग सहसा real time मध्ये होऊ शकत नाही, ज्यामुळे playback buffers होतो. ट्रान्सकोडिंग टाळणे हा सर्वोत्तम उपाय आहे: तुमची लायब्ररी H.264/AAC मध्ये ठेवा आणि direct-play सपोर्ट करणाऱ्या क्लायंट ॲप्सचा वापर करा, जेणेकरून VPS फक्त bytes स्ट्रीम करेल. जर तुम्हाला खरोखर on-the-fly ट्रान्सकोडिंगची गरज असेल, तरच GPU instance भाड्याने घ्या.

स्कॅन केल्यानंतर माझी Jellyfin लायब्ररी रिकामी का दिसते?

याचे मुख्य कारण permissions हे असते. अधिकृत jellyfin/jellyfin इमेज तुम्ही सेट केलेल्या user: (किंवा root) म्हणून चालते. जर त्या uid ला फाइल्स वाचता येत नसतील, तर स्कॅन logs Access to the path ... is denied करतो आणि त्या फाइल्स वगळतो. chown -R 1000:1000 /mnt/media वापरून ownership सुधारा, डिरेक्टरीजना execute bit (755) द्या आणि पुन्हा स्कॅन करा. तसेच parent डिरेक्टरी देखील तपासा; जर कंटेनरच्या uid ला /mnt/media मध्ये प्रवेश करता येत नसेल, तर तो लायब्ररी फोल्डर्सपर्यंत पोहोचू शकत नाही आणि सर्व काही रिकामे दिसते. दुसरे महत्त्वाचे कारण म्हणजे फोल्डर लेआउट Jellyfin च्या अपेक्षित रचनेनुसार नसणे.

मी Jellyfin ला रिमोटली आणि सुरक्षितपणे कसे ॲक्सेस करू शकतो?

यासाठी दोन चांगले पर्याय आहेत. लॉगिन आणि स्ट्रीमिंग एन्क्रिप्ट करण्यासाठी ते एका subdomain वर TLS reverse proxy च्या मागे ठेवा आणि fail2ban वापरा — पोर्ट 8096 कधीही थेट उघडा ठेवू नका, कारण त्यातून तुमचा पासवर्ड cleartext मध्ये जातो. किंवा ते पूर्णपणे खाजगी ठेवा आणि फक्त VPN द्वारे ॲक्सेस करा; घरगुती वापरासाठी हा सर्वात सोपा आणि सुरक्षित पर्याय आहे. ॲप्सना थेट public address द्या — autodiscovery हे local-network broadcast आहे, त्यामुळे इंटरनेटवरून येणाऱ्या क्लायंट्सना ते मिळत नाही.

Jellyfin VPS साठी किती disk आणि bandwidth आवश्यक आहे?

Disk ची गरज मीडियाच्या क्वालिटीवर अवलंबून आहे: प्रत्येक compressed 1080p फिल्मसाठी 4-15 GB, प्रत्येक remux साठी 20-40 GB, आणि 4K साठी 40-100 GB असा विचार करा. त्यामुळे बहुतेक लायब्ररीसाठी 2-4 TB चा block volume आवश्यक असतो. Bandwidth हा direct-play bitrate वर अवलंबून असतो — 1080p स्ट्रीमसाठी 8-12 Mbps आणि 4K साठी त्यापेक्षा खूप जास्त. त्यामुळे तुमच्या पोर्टची speed एकाच वेळी अनेक viewers हाताळू शकते की नाही याची खात्री करा आणि मासिक transfer cap तपासा. जर तुम्हाला ट्रान्सकोड करायचे असेल, तर CPU headroom वाढवा; जर तुम्हाला direct-play करायचे असेल, तर cores पेक्षा bandwidth ला प्राधान्य द्या.

VPS वर Jellyfin चालवणे कायदेशीर आहे का?

Jellyfin स्वतः एक मोफत, open-source सॉफ्टवेअर आहे आणि ते चालवणे पूर्णपणे कायदेशीर आहे. महत्त्वाचे कंटेंट आहे: फक्त तुमच्या मालकीचे किंवा लायसन्स असलेले मीडिया स्ट्रीम करा — तुमचे स्वतःचे disc rips, रेकॉर्डिंग्ज किंवा तुमच्या हक्काच्या फाइल्स. Jellyfin मध्ये कोणतेही मीडिया येत नाही आणि ते मिळवण्याची कोणतीही पद्धत देत नाही; ते फक्त तुमच्या स्वतःच्या लायब्ररीसाठी एक player आहे.

#jellyfin#media-server#docker#self-hosting#transcoding