SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

VPSలో Jellyfin సెటప్: Dockerతో మీ మీడియా స్ట్రీమింగ్

VPSపై Dockerలో Jellyfin నడపడం ఎలా: బ్లాక్ స్టోరేజ్, ఫైల్ అనుమతులు, direct play vs CPU transcoding, సురక్షిత రిమోట్ యాక్సెస్ వివరాలు తెలుగులో.

మీరు నిర్మించేది ఏమిటి

VPSపై ఒక Jellyfin మీడియా సర్వర్: ఒక కంటైనర్, మూడు వాల్యూమ్‌లు, మరియు మీ చిత్రాలు, కార్యక్రమాలను కలిగి ఉన్న బ్లాక్-స్టోరేజ్ డిస్క్, ఏ బ్రౌజర్ లేదా Jellyfin యాప్ నుండి అయినా చేరుకోగలిగేలా. ఈ ఇన్‌స్టాలేషన్ పదిహేను లైన్ల compose ఫైల్. తర్వాత ఏమి తప్పు జరిగినా అది రెండు చోటుల నుండి వస్తుంది — కంటైనర్ చదవలేని ఫైల్ అనుమతులు, మరియు GPU లేని VPSని అది ట్రాన్స్‌కోడ్ చేయకూడని వీడియోని ట్రాన్స్‌కోడ్ చేయమని అడగడం. ఈ గైడ్ దాని ఎక్కువ భాగాన్ని ఆ రెండిటిపైనే వినియోగిస్తుంది, ఎందుకంటే సపోర్ట్ టికెట్లు అక్కడే ఎక్కువగా వస్తాయి.

Jellyfin ఉచితం మరియు పూర్తిగా ఓపెన్ సోర్స్, ఖాతా లేదు, పే వాల్ ఫీచర్లు లేవు, టెలిమెట్రీ లేదు — అందుకే అది 2026లో స్వయంగా హోస్ట్ చేయడానికి విలువైన వాటి జాబితాలో దాదాపు ప్రతి ఒక్కటిలోనూ కనిపిస్తుంది. ఇది మీరు కలిగి ఉన్న మీడియాను ప్లే చేస్తుంది. ఇది ఎలాంటి కంటెంట్‌ను అందించదు, మరియు ఈ గైడ్ దాన్ని పొందడం గురించి కాదు.

మీరు ఏదైనా అద్దెకు తీసుకునే ముందు, ట్రాన్స్‌కోడింగ్ వాస్తవికత

దీన్ని ముందుగా చదవండి, ఎందుకంటే ఇది మీరు కొనుగోలు చేసే విషయాన్ని మారుస్తుంది. మీరు ప్లే నొక్కినప్పుడు మీడియా సర్వర్ రెండు పనులలో ఒకటి చేస్తుంది. డైరెక్ట్ ప్లే ఫైల్‌ను అలాగే స్ట్రీమ్ చేస్తుంది: VPS డిస్క్ నుండి బైట్‌లను చదువుతుంది మరియు వాటిని నెట్‌వర్క్‌కు పంపుతుంది, దీనివల్ల CPU వినియోగం దాదాపు ఉండదు. ట్రాన్స్‌కోడింగ్ వీడియోను అప్పటికప్పుడు రీ-ఎన్‌కోడ్ చేస్తుంది — కొత్త రిజల్యూషన్, కొత్త కోడెక్, లేదా సబ్‌టైటిల్స్‌ను కలిపి — మరియు అది పూర్తిగా CPU పని.

సాధారణ VPSలో GPU ఉండదు. కాబట్టి ప్రతి ట్రాన్స్‌కోడ్ libx264/libx265తో CPUపై నడుస్తుంది, మరియు సాఫ్ట్‌వేర్ ఎన్‌కోడింగ్ ఖరీదైనది. ఒకే 1080p H.264 ట్రాన్స్‌కోడ్ అనేక షేర్డ్ vCPUలను నింపేస్తుంది; 4K లేదా HEVC ట్రాన్స్‌కోడ్ సాధారణంగా రియల్ టైమ్‌తో పాటు నడవలేదు, కాబట్టి ప్లేబ్యాక్ ఆగిపోయి ఎల్లప్పుడూ బఫరింగ్‌లో ఉంటుంది. హార్డ్‌వేర్ ట్రాన్స్‌కోడింగ్ — Intel iGPU లేదా Nvidia కార్డ్‌తో హోమ్ సిస్టమ్‌లో దీన్ని చౌకగా చేసేది — మీ ప్రొవైడర్ GPU ఇన్‌స్టెన్స్‌లను అద్దెకు ఇస్తే తప్ప మీకు అందుబాటులో ఉండదు.

కాబట్టి VPSలో మొత్తం వ్యూహం: ట్రాన్స్‌కోడింగ్‌ను నివారించండి. మీ లైబ్రరీని మీ క్లయింట్‌లు స్థానికంగా ప్లే చేసే కోడెక్‌లలో ఉంచండి — H.264 వీడియో, AAC లేదా AC3 ఆడియో, MP4 లేదా MKV కంటైనర్‌లో — మరియు డైరెక్ట్-ప్లే చేసే క్లయింట్ యాప్‌లను ఎంచుకోండి: Android TV, iOS మరియు Roku కోసం స్థానిక Jellyfin యాప్‌లు, అలాగే Infuse, Kodi, మరియు డెస్క్‌టాప్ Jellyfin Media Player. అలా చేస్తే VPS ffmpegను ఎప్పుడూ టచ్ చేయదు, మరియు ఒక చిన్న 2 vCPU సిస్టమ్ ఒకేసారి అనేక మందికి స్ట్రీమ్ చేస్తుంది. ట్రాన్స్‌కోడ్ చేయాలని ప్లాన్ చేస్తే మీకు చాలా పెద్ద, ఖరీదైన సిస్టమ్ అవసరం, మరియు అప్పటికీ 4K ఒక చెడు ఎంపిక.

బ్యాండ్‌విడ్త్ లెక్కలు కూడా చేయండి, ఎందుకంటే అది మరొక ఆశ్చర్యం. డైరెక్ట్ ప్లే ఫైల్‌ను దాని స్వంత బిట్‌రేట్ వద్ద పంపుతుంది. కంప్రెస్ చేయబడిన 1080p ఫైల్ 8-12 Mbps వద్ద నడుస్తుంది; 1080p Blu-ray remux 20-30 Mbps; 4K HDR 40-80 Mbps. ముగ్గురు 10 Mbps ఫైల్‌లను డైరెక్ట్-ప్లే చేస్తే అది మీ VPS నుండి 30 Mbps నిరంతర అప్‌లోడ్. మీ ప్లాన్‌లో రెండు సంఖ్యలను తనిఖీ చేయండి: పోర్ట్ స్పీడ్ (అది అప్‌స్ట్రీమ్‌లో 30 Mbps పంపగలదా?) మరియు నెలవారీ ట్రాన్స్‌ఫర్ పరిమితి. రెండు గంటల 10 Mbps సినిమా దాదాపు 9 GB బయటకు వెళ్తుంది, కాబట్టి కొలికలు ఉన్న 1 TB/నెల అలవెన్స్ అనేది నెలకు వంద అటువంటి సినిమాల కంటే కొంచెం ఎక్కువ — రోజుకు మూడు లేదా నాలుగు — మరియు 4K చూసే ఇల్లు, బిట్‌రేట్ నాలుగు నుండి ఎనిమిది రెట్లు ఎక్కువగా ఉండటం వల్ల, దాన్ని చాలా వేగంగా ఖాళీ చేస్తుంది.

ముందస్తు అవసరాలు

  • root లేదా sudo తో కూడిన కొత్త Ubuntu 24.04 KVM VPS, మరియు Docker మరియు Compose ప్లగిన్ ఇన్‌స్టాల్ చేయబడి ఉండాలి.
  • మీ లైబ్రరీ పరిమాణాన్ని బట్టి సైజు చేయబడిన, మీడియా కోసం ఒక బ్లాక్-స్టోరేజ్ వాల్యూమ్ (దిగువ సైజింగ్ చూడండి). VPS తో వచ్చే చిన్న రూట్ డిస్క్‌లో మీ చిత్రాలు ఉండవు.
  • మీకు పబ్లిక్ HTTPS యాక్సెస్ కావాలంటే ఒక డొమైన్ పేరు, లేదా మొత్తం వ్యవహారాన్ని ప్రైవేట్‌గా ఉంచాలనుకుంటే అదే VPSలో WireGuard VPN.

ముందుగా బ్లాక్ స్టోరేజ్‌ను మౌంట్ చేయండి

మీ ప్రొవైడర్ ప్యానెల్‌లో వాల్యూమ్‌ను అటాచ్ చేయండి. తర్వాత దాన్ని కనుగొని మౌంట్ చేయండి. 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 ముఖ్యమైనది: దీన్ని చేయకపోతే, బ్లాక్ వాల్యూమ్ ఎప్పుడైనా డిటాచ్ అయితే సిస్టమ్ బూట్ కాకుండా ఎమర్జెన్సీ షెల్‌కు వెళ్తుంది. ఇక్కడ అతిపెద్ద తప్పు, ఇప్పటికే డేటా ఉన్న వాల్యూమ్‌పై mkfs.ext4 నడపడం — అది డేటాను తుడిచివేస్తుంది. కొత్త వాల్యూమ్‌లను మాత్రమే ఫార్మాట్ చేయండి; డిస్క్‌లో ఇప్పటికే మీ లైబ్రరీ ఉంటే, నేరుగా fstab లైన్‌కు వెళ్లండి.

Jellyfin కోరుకునే విధంగా మీడియాను అమర్చండి

Jellyfin మెటాడేటాను ఫోల్డర్ మరియు ఫైల్ పేర్ల ద్వారా సరిపోలుస్తుంది. అమరిక తప్పితే చిత్రాలు పోస్టర్ లేని శీర్షిక లేని ఫైళ్లుగా చేరుకుంటాయి. లేదా ఒక ఎపిసోడ్ తప్పు సిరీస్‌తో సరిపోలుతుంది. కేవలం మూడు నియమాలు ఉన్నాయి: ప్రతి సినిమా దాని స్వంత Name (Year) ఫోల్డర్‌లో సరిపోలే ఫైల్ పేరుతో ఉంటుంది; సీజన్ ఫోల్డర్‌లకు S01 కాకుండా Season 01 అని పేరు పెట్టండి; ఎపిసోడ్ ఫైళ్లు 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/jellyfin ఇమేజ్ PUID/PGID ఎన్విరాన్మెంట్ వేరియబుల్‌లను పట్టించుకోదు — అవి LinuxServer.io ఇమేజ్ (lscr.io/linuxserver/jellyfin) కి చెందినవి. అధికారిక ఇమేజ్‌లో మీరు compose లోని user: కీతో వినియోగదారుని నియంత్రిస్తారు. దాన్ని మీరు వదిలేస్తే కంటైనర్ root గా నడుస్తుంది. ఏది వాడినా నియమం ఒకటే: కంటైనర్ నడిచే uid/gid ప్రతి మీడియా డైరెక్టరీని చదవగలగాలి, దానిలోకి ప్రవేశించగలగాలి.

మేము uid/gid 1000 గా నడుస్తాము, ఇది సాధారణ Ubuntu సిస్టమ్‌లో మొదటి non-root వినియోగదారు. మీ 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

డైరెక్టరీలకు execute బిట్ (755 లోని x) కావాలి, కేవలం read మాత్రమే సరిపోదు — అది లేకపోతే కంటైనర్ ఆ ఫోల్డర్ పేరును చూపించగలిగినా దానిలోకి ప్రవేశించలేదు. మొత్తం లైబ్రరీని ఖాళీ చేసే ఉచ్చు అది పేరెంట్ డైరెక్టరీ: కంటైనర్ uid మౌంట్‌లోకి ప్రవేశించలేకపోతే, అది /media/Movies లేదా /media/Shows ని ఎప్పటికీ చేరలేదు. దీనివల్ల ప్రతి లైబ్రరీ ఒక్కసారిగా ఖాళీగా వస్తుంది మరియు లాగ్‌లో Access to the path ... is denied కనిపిస్తుంది. కంటైనర్ చదవలేని ఏదైనా ఒక్క మీడియా ఫోల్డర్ లాగ్ చేయబడి వదిలివేయబడుతుంది. కాబట్టి root గా కాపీ చేసిన ఫైళ్ల సమూహం లైబ్రరీ నుండి అజ్ఞాతంగా మాయమవుతుంది. అందుకే మేము ఒక్క ఫోల్డర్‌ని సరిచేయడం కంటే ప్రతి డైరెక్టరీలో రికర్సివ్‌గా 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" అసలున ఫైల్ అనుమతులను అమర్చుతుంది, పైన ఉన్న యాజమాన్యాన్ని పోలి ఉంటుంది. /config మొత్తం సర్వర్‌ను కలిగి ఉంటుంది — ఖాతాలు, లైబ్రరీలు, మెటాడేటా, వాచ్ స్థితి — కాబట్టి అది వ్రాయదగినదిగా ఉండాలి మరియు అదే మీరు బ్యాకప్ చేసుకోవలసింది. /cache విసర్జించదగిన పని ప్రదేశం. మీడియా మౌంంట్ ఉద్దేశపూర్వకంగా :ro (చదువుట-మాత్రమే): Jellyfin అప్రమేయంగా ఆర్ట్‌వర్క్ మరియు మెటాడేటాను /config కింద నిల్వ చేస్తుంది, కాబట్టి అది మీ లైబ్రరీకి ఎప్పుడూ వ్రాయాల్సిన అవసరం లేదు, మరియు చదువుట-మాత్రమే మీ ఫైళ్లను పొరపాటున తొలగించడం లేదా తప్పుడు ప్లగిన్ నుండి రక్షిస్తుంది. పోర్ట్ ఉద్దేశపూర్వకంగా 127.0.0.1 కు బంధించబడింది — Jellyfin వెబ్ లాగిన్ సాధారణ HTTP, కాబట్టి మేము 8096 ను ప్రజా ఇంటర్నెట్‌కు ఎప్పుడూ ప్రచురించము. JELLYFIN_PublishedServerUrl స్థానిక ఆటో-డిస్కవరీ కోసం సర్వర్ ప్రకటించే చిరునామా — ఇది LAN UDP ప్రసారం, కాబట్టి ఇంటర్నెట్ మీదుగా ఉన్న క్లయింట్‌లు దాన్ని ఎప్పుడూ చూడవు మరియు మీరు యాప్‌లో టైప్ చేసే URL ను వాడుకుంటాయి. దీన్ని క్లయింట్‌లకు చెప్పాల్సిన చిరునామాగా అమర్చండి, మరియు దూరస్థ పరికరాలపై ఆ URL ను చేతితో నమోదు చేయాల్సి ఉంటుందని ఊహించుకోండి.

దీన్ని 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కు సెట్ చేయండి. దీనివల్ల డేటా రాతిపని క్యాష్ వాల్యూమ్‌పై జరుగుతుంది, /config ఉబ్బదు. హార్డ్‌వేర్ యాక్సిలరేషన్‌ను Noneగా వదిలేయండి — వేగవంతం చేయడానికి ఏ GPU లేదు.

రిమోట్ యాక్సెస్: TLS రివర్స్ ప్రాక్సీ, లేదా దాన్ని VPNలోనే ఉంచండి

బయటి నుండి Jellyfinని చేరుకోవడానికి మీకు రెండు సురక్షిత మార్గాలు ఉన్నాయి. ఒక అసురక్షిత మార్గాన్ని నివారించాలి. ఆ అసురక్షిత మార్గం 8096 పోర్ట్‌ను నేరుగా ఇంటర్నెట్‌కు ప్రచురించడం. దీనివల్ల లాగిన్ క్లియర్‌టెక్స్ట్‌లో వెళుతుంది. కొన్ని గంటల్లోనే ఆ పోర్ట్‌కు బ్రూట్-ఫోర్స్ దాడి జరుగుతుంది.

ఎంపిక A — TLS రివర్స్ ప్రాక్సీ. Jellyfinని మీ Docker యాప్‌ల కోసం ఆటోమేటిక్ TLSతో Traefik వెనుక ఒక సబ్‌డొమైన్‌పై ఉంచండి. లేదా nginx వెనుక Certbot ద్వారా జారీ చేయబడిన Let's Encrypt సర్టిఫికేట్‌తో ఉంచండి. Jellyfin రియల్-టైమ్ అప్‌డేట్‌ల కోసం WebSockets ఉపయోగిస్తుంది. కాబట్టి ప్రాక్సీ అప్‌గ్రేడ్ హెడర్‌లను ఫార్వర్డ్ చేయాలి. 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:// చిరునామాకు సెట్ చేయండి. దీనివల్ల ఏ లోకల్ ఆటో-డిస్కవరీ అయినా సరైన URLను ప్రకటిస్తుంది. రిమోట్ యాప్‌లు మీరు ఇచ్చిన చిరునామాను ఉపయోగిస్తాయి. లాగిన్‌పై బ్రూట్-ఫోర్స్ దాడులను మందగొల్పడానికి fail2ban‌ను జోడించండి. సర్వర్ పబ్లిక్ అయ్యాక, URL వైపు Uptime Kuma‌ను పాయింట్ చేయండి. దీనివల్ల మీ వీక్షకులకు తెలియకముందే మీకు డౌన్‌టైమ్ గురించి తెలుస్తుంది.

ఎంపిక B — దాన్ని VPNలో ప్రైవేట్‌గా ఉంచండి. 8096ను అసలు ప్రచురించకండి. Jellyfinని అదే బాక్స్‌లో ముగిసే WireGuard టన్నెల్ ద్వారా మాత్రమే చేరుకోండి. ఒక కుటుంబానికి ఇది అత్యంత సులభమైన సురక్షిత ఎంపిక. సర్టిఫికేట్ అవసరం లేదు. పబ్లిక్ ఎక్స్‌పోజర్ లేదు. బ్రూట్-ఫోర్స్ అవకాశం లేదు. కంటైనర్‌ను టన్నెల్ చిరునామా లేదా localhostకు బైండ్ చేయండి. VPN ద్వారా కనెక్ట్ అవ్వండి. టన్నెల్ గురించి వివరాల కోసం ప్రైవేట్ VPS కోసం WireGuard VPN సెటప్‌ను చూడండి.

నిల్వ పరిమాణ నిర్ధారణ మరియు బ్యాకప్‌లు

ఫైల్ సంఖ్య కాకుండా నాణ్యత ఆధారంగా బడ్జెట్ నిర్ధారించండి. కంప్రెస్ చేసిన 1080p చిత్రాలు ఒక్కోటి 4-15 GB ఉంటాయి; 1080p remux 20-40 GB; 1080p TV ఒక సీజన్ 15-40 GB; ఏ 4K చిత్రమైనా 40-100 GB ఉంటుంది. కొన్ని వందల చిత్రాలు మరియు కొన్ని షోలతో కూడిన లైబ్రరీకి 2-4 TB వాల్యూమ్ అవసరం. తర్వాత మైగ్రేట్ చేయడం కంటే ఒకేసారి బ్లాక్ వాల్యూమ్‌ను అధికంగా ప్రొవిజన్ చేయడం చౌకగా ఉంటుంది.

/config అనేది మొత్తం సర్వర్ స్థితి, కాబట్టి దాన్ని మీరు తప్పనిసరిగా బ్యాకప్ చేయాలి. దాని స్నాప్‌షాట్ తీయండి లేదా ఆపి 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 విడుదల గమనికలను చదవండి, ఎందుకంటే మేజర్ వెర్షన్‌లలో లైబ్రరీ స్కీమా మైగ్రేషన్లు జరుగుతాయి.

వైఫల్య రకాలు, మీరు చూసే స్ట్రింగ్‌లతో

స్కాన్ తర్వాత లైబ్రరీ ఖాళీగా ఉంది. Dashboard → Logs (లేదా ~/jellyfin/config/log/log_*.log) వద్ద ఉన్న లాగ్ ఇది చూపిస్తుంది:

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

కంటైనర్ uid ఆ పాత్‌ను చదవలేకపోతోంది. కారణం: మీడియా root లేదా మీ user: విలువ కంటే వేరే uid యాజమాన్యంలో ఉంది, డైరెక్టరీకి ఎగ్జిక్యూట్ బిట్ లేదు, లేదా పేరెంట్ మౌంట్‌ను ఆ uid ట్రావర్స్ చేయలేకపోతోంది. పరిష్కారం: chown -R 1000:1000 /mnt/media, డైరెక్టరీలు 755, ఫైళ్లు 644, తర్వాత మళ్లీ స్కాన్ చేయండి.

ప్లేబ్యాక్ CPU మరియు బఫర్‌లను పిన్ చేస్తోంది. docker stats jellyfin CPU విలువ మీ కోర్ సంఖ్యకు 100% దగ్గరగా చూపిస్తుంది, మరియు Dashboard → Playback సెషన్‌ను Transcodeగా చూపిస్తుంది, దాని వేగం 1.0x కంటే తక్కువగా ఉంటుంది. క్లయింట్ డైరెక్ట్-ప్లే చేయడం లేదు. దీనివల్ల VPS CPU-ట్రాన్స్‌కోడింగ్ రియల్ టైమ్ కంటే నెమ్మదిగా జరుగుతోంది మరియు వెనకబడుతోంది. కారణం: మద్దతు లేని కోడెక్ లేదా కంటైనర్, సబ్‌టైటిల్ బర్న్-ఇన్, లేదా HDR టోన్-మ్యాపింగ్. పరిష్కారం: డైరెక్ట్-ప్లే క్లయింట్‌కు మారండి, సోర్స్‌లను H.264/AAC లో ఉంచండి, image సబ్‌టైటిల్స్ (PGS/VOBSUB) బదులుగా text సబ్‌టైటిల్స్ (SRT) ఉపయోగించండి — అవి బర్న్-ఇన్‌ను బలవంతం చేస్తాయి — మరియు CPU-మాత్రమే ఉన్న బాక్స్‌లో 4K HDR ని పూర్తిగా ఆఫ్ చేయండి.

"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

GPU లేకుండా ఒక VPS వీడియోను ట్రాన్స్‌కోడ్ చేయగలదా?

అవును, కానీ CPU మీద మాత్రమే, మరియు అది ఖరీదైనది. ఒకే ఒక 1080p సాఫ్ట్‌వేర్ ట్రాన్స్‌కోడ్ అనేక vCPUs ను నింపివేస్తుంది, మరియు 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 ద్వారా మాత్రమే చేరుకోండి, ఇది ఒక గృహానికి అత్యంత సులభమైన సురక్షిత ఎంపిక. యాప్‌లకు పబ్లిక్ చిరునామాను నేరుగా ఇవ్వండి — ఆటో-డిస్కవరీ అనేది లోకల్-నెట్‌వర్క్ బ్రాడ్‌కాస్ట్, కాబట్టి ఇంటర్నెట్ ద్వారా వచ్చే క్లయింట్‌లను చేరుకోలేదు.

ఒక Jellyfin VPS కి ఎంత డిస్క్ మరియు బ్యాండ్‌విడ్త్ అవసరం?

డిస్క్ క్వాలిటీపై ఆధారపడి ఉంటుంది: ప్రతి కంప్రెస్డ్ 1080p సినిమాకు 4-15 GB, ప్రతి రీమక్స్‌కు 20-40 GB, మరియు 4K కోసం 40-100 GB బడ్జెట్ చేయండి, కాబట్టి చాలా లైబ్రరీలకు 2-4 TB బ్లాక్ వాల్యూమ్ కావాలి. బ్యాండ్‌విడ్త్ డైరెక్ట్-ప్లే బిట్‌రేట్ ద్వారా నిర్ణయించబడుతుంది — ప్రతి 1080p స్ట్రీమ్‌కు 8-12 Mbps, 4K కోసం ఇంకా ఎక్కువ — కాబట్టి మీ పోర్ట్ వేగం ఏకకాలిక వీక్షకుల సంఖ్యను తట్టుకోగలదని నిర్ధారించుకోండి మరియు నెలవారీ ట్రాన్స్‌ఫర్ క్యాప్‌ను గమనించండి. మీరు ట్రాన్స్‌కోడ్ చేయాలని ప్లాన్ చేస్తే CPU హెడ్‌రూమ్ జోడించండి; మీరు డైరెక్ట్-ప్లే చేయాలని ప్లాన్ చేస్తే కోర్‌ల కంటే బ్యాండ్‌విడ్త్‌కు ప్రాధాన్యత ఇవ్వండి.

VPS పై Jellyfin నడపడం చట్టబద్ధమేనా?

Jellyfin అనేది ఉచితం, ఓపెన్-సోర్స్ సాఫ్ట్‌వేర్ మరియు దీన్ని నడపడం పూర్తిగా చట్టబద్ధమైనది. ముఖ్యమైనది కంటెంట్: మీరు కలిగి ఉన్న లేదా ఉంచుకోవడానికి లైసెన్స్ ఉన్న మీడియాను మాత్రమే స్ట్రీమ్ చేయండి — మీ స్వంత డిస్క్ రిప్‌లు, రికార్డింగ్‌లు, లేదా మీకు హక్కు ఉన్న ఫైళ్లు. Jellyfin ఏ మీడియాను షిప్ చేయదు మరియు దేనినీ పొందడానికి మార్గం అందించదు; ఇది మీరు ఇప్పటికే కలిగి ఉన్న లైబ్రరీకి ఒక ప్లేయర్.

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