SSD Nodes Learn
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-07-25

VPS-ல் Jellyfin மீடியா சர்வர் எப்படி அமைப்பது

VPS-ல் Docker மூலம் Jellyfin இயக்கி உங்கள் மீடியாவை stream செய்யலாம். file permissions, block storage, transcode பிரச்சினைகள் மற்றும் பாதுகாப்பான remote access வழிகாட்டி இங்கே.

நீங்கள் உருவாக்க உள்ளது

ஒரு VPS-இல் Jellyfin மீடியா சர்வர்: ஒரு container, மூன்று volumes, மற்றும் உங்கள் திரைப்படங்கள் மற்றும் நிகழ்ச்சிகளைக் கொண்ட ஒரு block-storage வட்டு. இதை எந்த browser-லும் அல்லது Jellyfin செயலியிலும் அணுலாம். நிறுவல் பதினைந்து வரிகள் கொண்ட ஒரு compose கோப்பு. அதற்குப் பிறகு எல்லாம் தவறாக நடந்தால், அதற்கு இரண்டு காரணங்கள் உள்ளன — container படிக்க முடியாத file permissions, மற்றும் GPU இல்லாத ஒரு VPS-ஐ அதற்கு ஒத்துவராத video transcode செய்யச் சொல்வது. இந்த வழிகாட்டி பெரும்பாலும் இந்த இரண்டிலுமே கவனம் செலுத்துகிறது, ஏனெனில் ஆதரவுக் கோரிக்கைகள் பெரும்பாலும் அங்கே தான் வருகின்றன.

Jellyfin இலவசம் மற்றும் முழுமையாகத் திறந்த மூலத்துடன் வருகிறது. இதில் கணக்கு இல்லை, பணம் பறிக்கும் அம்சங்கள் இல்லை, telemetry-ம் இல்லை — இதுதான் இது 2026-இல் தானே host செய்வதற்குரிய பொருட்கள் பட்டியலில் ஏறக்குறைய எல்லாம் இடம்பெறுவதற்கான காரணம். இது நீங்கள் வைத்திருக்கும் மீடியாவை இயக்குகிறது. இது எந்தக் கொடுக்கப்பட்ட உள்ளடக்கத்தையும் கொண்டிருக்கவில்லை, மேலும் இந்த வழிகாட்டி எதையும் பெறுவதைப் பற்றியது அல்ல.

நீங்கள் எதையாவது வாடகைக்கு எடுப்பதற்கு முன், டிரான்ஸ்கோடிங் பற்றிய உண்மை

இதை முதலில் படியுங்கள், ஏனெனில் இது நீங்கள் எதை வாங்குகிறீர்கள் என்பதை மாற்றுகிறது. நீங்கள் play அழுத்தும்போது ஒரு மீடியா சர்வர் இரண்டில் ஒன்றைச் செய்கிறது. Direct play கோப்பை அப்படியே ஸ்ட்ரீம் செய்கிறது: VPS வட்டிலிருந்து பைட்டுகளைப் படித்து அவற்றை நெட்வொர்க் வழியாக அனுப்புகிறது, இதற்கு CPU கிட்டத்தட்ட தேவையில்லை. Transcoding வீடியோவை உடனடியாக மறு-என்கோட் செய்கிறது — புதிய resolution, புதிய codec, அல்லது subtitle உட்பொதிக்கப்படுகிறது — மேலும் அது முழுமையான CPU வேலை.

ஒரு வழக்கமான VPS-இல் GPU இருக்காது. எனவே ஒவ்வொரு transcode-ம் libx264/libx265 உடன் CPU-இல் இயங்குகிறது, மேலும் மென்பொருள் என்கோடிங் செலவு அதிகம். ஒரு ஒற்றை 1080p H.264 transcode பல shared vCPU-களை நிரப்பக்கூடும்; 4K அல்லது HEVC transcode பொதுவாக real time-உடன் ஈடுகொடுக்க முடியாது, எனவே playback நின்று தொடர்ந்து buffer செய்யும். Hardware transcoding — ஒரு Intel iGPU அல்லது Nvidia கார்டு கொண்ட வீட்டு சர்வரில் இதை மலிவாக்கும் வசதி — உங்கள் provider GPU instance-களை வாடகைக்கு தராவிட்டால் உங்களுக்கு கிடைக்காது.

எனவே VPS-இல் முழு உத்தியும்: transcoding-ஐ தவிர்க்கவும். உங்கள் கிளையன்ட் சாதனங்கள் இயல்பாக இயக்கும் codec-களில் உங்கள் லைப்ரரியை வைக்கவும் — H.264 வீடியோ, AAC அல்லது AC3 ஆடியோ, MP4 அல்லது MKV கொண்டியில் — மேலும் direct-play செய்யும் கிளையன்ட் செயலிகளைத் தேர்ந்தெடுக்கவும்: Android TV, iOS மற்றும் Roku-க்கான native Jellyfin செயலிகள், மேலும் Infuse, Kodi, மற்றும் desktop Jellyfin Media Player. இப்படி செய்தால் VPS ffmpeg-ஐ ஒருபோதும் தொடாது, மேலும் ஒரு சிறிய 2 vCPU சர்வர் ஒரே நேரத்தில் பலருக்கு ஸ்ட்ரீம் செய்யும். Transcode செய்ய திட்டமிட்டால் நீங்கள் மிகப் பெரிய, விலை அதிகமான சர்வர் தேவை, அப்படியும் 4K ஒரு மோசமான பந்தயமே.

பேண்ட்விட்த் கணக்கீட்டையும் செய்யுங்கள், ஏனெனில் இது மற்றொரு ஆச்சரியம். Direct play கோப்பை அதன் சொந்த bitrate-இல் அனுப்புகிறது. ஒரு சுருக்கப்பட்ட 1080p கோப்பு 8-12 Mbps-இல் இயங்குகிறது; ஒரு 1080p Blu-ray remux 20-30 Mbps; 4K HDR 40-80 Mbps. மூன்று பேர் 10 Mbps கோப்புகளை direct-play செய்வது உங்கள் VPS-இலிருந்து 30 Mbps தொடர்ச்சியான upload ஆகும். உங்கள் திட்டத்தில் இரண்டு எண்களை சரிபார்க்கவும்: port speed (இது 30 Mbps-ஐ upstream-ஆக அனுப்ப முடியுமா?) மற்றும் மாதாந்திர transfer வரம்பு. ஒரு இரண்டு மணிநேர 10 Mbps திரைப்படம் சுமார் 9 GB வெளியேற்றம், எனவே 1 TB/மாதம் அனுமதிக்கப்பட்ட வரம்பு ஒரு மாதத்திற்கு நூற்றுக்கும் மேற்பட்ட அத்தகைய திரைப்படங்கள் — ஒரு நாளைக்கு மூன்று அல்லது நான்கு — மேலும் 4K பார்க்கும் ஒரு வீடு, நான்கு முதல் எட்டு மடங்கு bitrate-இல், அதை விரைவாகவே தீர்த்துவிடும்.

முன்தேவைகள்

  • root அல்லது sudo அணுகலுடன் ஒரு புதிய Ubuntu 24.04 KVM VPS, மேலும் Docker மற்றும் Compose சொருகி நிறுவப்பட்டிருக்க வேண்டும்.
  • உங்கள் நூலகத்திற்கான அளவீட்டின்படி (கீழே உள்ள அளவீட்டைப் பார்க்கவும்) ஊடகங்களுக்கான ஒரு block-storage volume. VPS உடன் வரும் சிறிய root வட்டு உங்கள் திரைப்படங்கள் சேமிக்கப்படும் இடம் அல்ல.
  • பொது HTTPS அணுகல் தேவைப்பட்டால் ஒரு domain name, அல்லது இவை அனைத்தையும் தனிப்பட்டதாக வைத்திருக்க விரும்பினால் அதே VPS-இல் ஒரு WireGuard VPN.
  • சட்டப்பூர்வமாக ஸ்ட்ரீம் செய்ய உரிமை கொண்ட ஊடகங்கள் — உங்கள் சொந்த rip கோப்புகள், உங்கள் சொந்த பதிவுகள், உங்களுக்குச் சொந்தமான கோப்புகள்.

முதலில் block storage-ஐ mount செய்யவும்

உங்கள் provider-ன் panel-ல் volume-ஐ attach செய்யவும். பிறகு அதைக் கண்டுபிடித்து mount செய்யவும். சாதனத்தின் பெயரை 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 செய்யும்போது சாதன எழுத்துக்கள் மாறிவிடும். இதனால் நீங்கள் தவறான 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 செய்யப்பட்டால் கணினி boot ஆக மறுக்கும். அது emergency shell-க்குச் சென்றுவிடும். இங்கே பெரிய தவறு என்னவென்றால், ஏற்கனவே data உள்ள volume-ல் mkfs.ext4-ஐ இயக்குவது — அது data-ஐ அழித்துவிடும். புதிய volume-களை மட்டுமே format செய்யவும். அந்த disk-ல் ஏற்கனவே உங்கள் library இருந்தால், நேரடியாக 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 image, PUID/PGID environment variables-ஐ ஏற்காது. அந்த variables-கள் LinuxServer.io image-க்கு (lscr.io/linuxserver/jellyfin) சொந்தமானவை. அதிகாரப்பூர்வ image-ல், compose கோப்பில் user: key மூலம் பயனரை நீங்கள் கட்டுப்படுத்துகிறீர்கள். இதை நீங்கள் சேர்க்காவிட்டால், container root ஆக இயங்கும். நீங்கள் எதைப் பயன்படுத்தினாலும், விதி ஒன்றே: container இயங்கும் uid/gid-ஆல் ஒவ்வொரு media கோப்புறையையும் படிக்கவும் அணுகவும் முடிய வேண்டும்.

நாம் 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 bit (755-ல் உள்ள x) தேவை; வெறும் read அனுமதி மட்டும் போதாது. இது இல்லையென்றால், கோப்புறையின் பெயரை காண முடிந்தாலும் container அதற்குள் நுழைய முடியாது. ஒட்டுமொத்த நூலகத்தையும் வெறுமையாக்கும் சிக்கல் பெற்றோர் கோப்புறைதான். container-ன் uid-ஆல் mount-ஐ அணுக முடியாவிட்டால், அது /media/Movies அல்லது /media/Shows-ஐ ஒருபோதும் அடையாது. எல்லா நூலகங்களும் ஒரே நேரத்தில் வெறுமையாகும்; log-ல் Access to the path ... is denied காணப்படும். படிக்க முடியாத ஒரு media கோப்புறை log செய்யப்பட்டு தவிர்க்கப்படும். எனவே, root ஆக நகலெடுக்கப்பட்ட கோப்புகள் நூலகத்தில் அறிவிப்பு இல்லாமல் மறைந்துவிடும். இதுதான் நாம் ஒரு கோப்புறையை மட்டும் திருத்தாமல், ஒட்டுமொத்தத்திலும் chown செய்து ஒவ்வொரு கோப்புறைக்கும் execute bit அமைக்கிறோம்.

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-ஐ அணுக இரண்டு பாதுகாப்பான வழிகள் உள்ளன. தவிர்க்க வேண்டிய ஒரு பாதுகாப்பற்ற வழியும் உள்ளது. பாதுகாப்பற்ற வழி என்பது port 8096-ஐ நேரடியாக இணையத்திற்கு வெளியிடுவதாகும். உள்நுழைவு தகவல் cleartext-ஆகச் செல்கிறது. சில மணிநேரங்களில் இந்த port brute-force தாக்குதலுக்கு ஆளாகிறது.

விருப்பம் A — TLS ரிவர்ஸ் ப்ராக்ஸி. Jellyfin-ஐ ஒரு subdomain-ல் உங்கள் Docker செயலிகளுக்கான தானியங்கி TLS கொண்ட Traefik பின்னால் வைக்கவும். அல்லது Certbot மூலம் வழங்கப்பட்ட Let's Encrypt சான்றிதழ் கொண்ட nginx பின்னால் வைக்கவும். Jellyfin நிகழ்நேர புதுப்பிப்புகளுக்கு WebSockets பயன்படுத்துகிறது. எனவே ப்ராக்ஸி upgrade headers-ஐ அனுப்ப வேண்டும். 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:// முகவரியாக அமைக்கவும். இதனால் ஏதேனும் உள்ளூர் autodiscovery சரியான URL-ஐ விளம்பரப்படுத்தும். தொலை செயலிகள் நீங்கள் கொடுக்கும் முகவரியைப் பயன்படுத்துகின்றன. உள்நுழைவுக்கு எதிரான brute-force முயற்சிகளைத் தாமதப்படுத்த fail2ban சேர்க்கவும். சேவையகம் பொதுவில் கிடைத்ததும், URL-ஐ நோக்கி Uptime Kuma-ஐ சுட்டிக்கவும். இதனால் உங்கள் பார்வையாளர்களுக்கு முன்பே நீங்கள் சேவை தடையை அறிந்துகொள்வீர்கள்.

விருப்பம் B — VPN-ல் தனிப்பட்டதாக வைத்திருக்கவும். 8096-ஐ ஒருபோதும் வெளியிட வேண்டாம். Jellyfin-ஐ அதே சேவையகத்தில் முடியும் WireGuard tunnel வழியாக மட்டும் அணுகவும். ஒரு குடும்பத்திற்கு இதுதான் எளிமையான பாதுகாப்பான தேர்வு. சான்றிதழ் இல்லை, பொது வெளிப்பாடு இல்லை, brute-force ஆபத்து இல்லை. container-ஐ tunnel முகவரி அல்லது localhost-உடன் இணைக்கவும். VPN வழியாக இணைக்கவும். tunnel அமைப்பதற்கு தனிப்பட்ட VPS-க்கான WireGuard VPN அமைப்பு காண்க.

சேமிப்பக அளவீடு மற்றும் காப்பு நகல்கள்

கோப்பு எண்ணிக்கை அல்ல, தரத்தின் அடிப்படையில் பட்ஜெட்டை திட்டமிடுங்கள். சுருக்கப்பட்ட 1080p திரைப்படங்கள் ஒன்றுக்கு 4-15 GB இடம் எடுக்கும்; 1080p remux 20-40 GB; 1080p TV தொடரின் ஒரு சீசன் 15-40 GB; எந்தவொரு 4K திரைப்படமும் திரைப்படத்திற்கு 40-100 GB ஆகும். சில நூறு திரைப்படங்கள் மற்றும் சில நிகழ்ச்சிகள் கொண்ட நூலகத்திற்கு 2-4 TB தொகுதி தேவைப்படும். பின்னர் இடமாற்றம் செய்வதை விட, ஒருமுறை block volume அளவை அதிகமாக ஒதுக்குவது மலிவானது.

/config என்பது முழு சர்வர் நிலையாகும், எனவே நீங்கள் கட்டாயம் காப்பு எடுக்க வேண்டிய ஒன்று இதுவே. இதன் snapshot எடுக்கவும் அல்லது நிறுத்தி tar செய்யவும், பின்னர் அந்த நகலை சர்வருக்கு வெளியே வைக்கவும்:

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

/cache மற்றும் transcode கோப்புறை நீக்கக்கூடியவை. /mnt/media இல் உள்ள ஊடகத்தை நீங்கள் தனியாக காப்பு எடுக்கலாம் அல்லது மீண்டும் rip செய்யலாம் என்று ஏற்றுக்கொள்ளலாம் — அளவை கருத்தில் கொண்டு பெரும்பாலானவர்கள் பிந்தைய வழியையே பின்பற்றுகிறார்கள். மேம்படுத்தல்கள் docker compose pull && docker compose up -d; மேலே உள்ள :10 tag 10.x major க்குள் தான் இருக்கும், எனவே அடுத்த major க்கு மாறுவது என்பது வெளிப்படையான tag திருத்தமாகும் — அதைச் செய்வதற்கு முன் Jellyfin வெளியீட்டு குறிப்புகளை சுருக்கமாக படியுங்கள், ஏனெனில் major பதிப்புகளில் நூலக schema மாற்றங்கள் நிகழ்கின்றன.

பிழை வகைகள், நீங்கள் காணும் சரங்களுடன்

ஸ்கேனுக்குப் பிறகு நூலகம் காலியாக உள்ளது. Dashboard → Logs (அல்லது ~/jellyfin/config/log/log_*.log) இல் உள்ள பதிவு இதைக் காட்டுகிறது:

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

கன்டெய்னரின் uid அந்தப் பாதையைப் படிக்க முடியவில்லை. காரணம்: மீடியா root அல்லது உங்கள் user: மதிப்பை விட வேறு ஒரு uid-க்கு சொந்தமானது, ஒரு கோப்பகத்தின் execute bit இல்லை, அல்லது பெற்றோர் mount அந்த uid-ஆல் கடந்து செல்ல முடியாதது. தீர்வு: chown -R 1000:1000 /mnt/media, கோப்பகங்கள் 755, கோப்புகள் 644, பிறகு மீண்டும் ஸ்கேன் செய்யவும்.

பிளேபேக் CPU மற்றும் பஃபர்களைப் பிடித்துக் கொள்கிறது. docker stats jellyfin CPU உங்கள் கோர் எண்ணிக்கையின் 100% அருகே இருப்பதைக் காட்டுகிறது, மேலும் Dashboard → Playback அந்த அமர்வை 1.0x வேகத்திற்கும் கீழே Transcode என பட்டியலிடுகிறது. கிளையன்ட் direct-play செய்யவில்லை, எனவே VPS real time-ஐ விட மெதுவாக CPU-transcoding செய்கிறது மற்றும் பின்தங்குகிறது. காரணம்: ஆதரிக்காத codec அல்லது container, subtitle burn-in, அல்லது HDR tone-mapping. தீர்வு: direct-play கிளையன்ட்டிற்கு மாறவும், ஆதாரங்களை H.264/AAC-இல் வைக்கவும், burn-in-ஐ கட்டாயப்படுத்தும் image subtitles (PGS/VOBSUB) க்கு பதிலாக text subtitles (SRT) பயன்படுத்தவும், மேலும் CPU-only box-இல் 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." என்றிருக்கும். கிளையன்ட் ஆதாரத்தை நிராகரித்தது மற்றும் fallback transcode-ம் தொடங்கத் தவறியது. காரணம்: உடைந்த ffmpeg கட்டளை, படிக்க முடியாத கோப்பு, அல்லது பயனரின் profile வீடியோ மாற்றத்தைத் தடுக்கிறது. தீர்வு: Dashboard → Logs இல் ffmpeg வரியைப் படிக்கவும், கோப்பு ஏதேனும் இயங்குகிறதா என்பதை உறுதிப்படுத்தவும், நீங்கள் transcoding-ஐ நம்பியிருந்தால் பயனரின் playback அனுமதிகளைச் சரிபார்க்கவும், மேலும் browser codec சிக்கல்களை நீக்க இரண்டாவது கிளையன்ட்டை முயற்சிக்கவும்.

படங்களுக்கு போஸ்டர் இல்லை அல்லது தவறானது. மெட்டாடேட்டா பொருந்தவில்லை. காரணம்: ஒரு திரைப்படம் அதன் சொந்த Name (Year) கோப்பகத்தில் இல்லை, ஒரு சீசன் கோப்பகம் Season 01 க்கு பதிலாக S01 எனப் பெயரிடப்பட்டுள்ளது, அத்தியாயங்கள் S01E01 வடிவத்தில் இல்லை, அல்லது ஆண்டு இல்லை. தீர்வு: மேலே உள்ள அமைப்பிற்கு மறுபெயரிடவும், பிறகு Refresh metadata → Replace all, அல்லது சரியான TMDB/TVDB உள்ளீட்டைப் பொருத்த ஒரே ஒரு உருப்படியில் Identify பயன்படுத்தவும்.

FAQ

GPU இல்லாமல் ஒரு VPS வீடியோவை transcode செய்ய முடியுமா?

ஆம். ஆனால் இது CPU மூலம் மட்டுமே நடக்கும், மேலும் செலவு அதிகம். ஒரு 1080p software transcode பல vCPU-களை முழுமையாக பயன்படுத்தும். 4K அல்லது HEVC பொதுவாக real time-உடன் ஈடுகொடுக்க முடியாது, எனவே playback buffer ஆகும். சிறந்த தீர்வு transcode செய்வதை தவிர்ப்பது: உங்கள் library-ஐ H.264/AAC-ல் வைத்திருங்கள், direct-play செய்யும் client apps-ஐ பயன்படுத்துங்கள். அப்போது VPS வெறும் bytes-ஐ stream செய்யும். நீங்கள் உண்மையில் on-the-fly transcoding தேவைப்பட்டால் மட்டுமே GPU instance வாடகைக்கு எடுங்கள்.

ஸ்கேன் செய்த பிறகு என் Jellyfin library ஏன் காலியாக உள்ளது?

கிட்டத்தட்ட எப்போதும் இது permissions பிரச்சினை. அதிகாரப்பூர்வ jellyfin/jellyfin image நீங்கள் அமைக்கும் user: (அல்லது root) ஆக இயங்கும். அந்த uid-க்கு files படிக்க முடியாவிட்டால், scan logs Access to the path ... is denied காட்டி அவற்றை தவிர்க்கும். chown -R 1000:1000 /mnt/media கொண்ட ownership-ஐ சரிசெய்யவும். directories-க்கு execute bit (755) கொடுத்து மீண்டும் scan செய்யவும். parent-ஐயும் சரிபார்க்கவும், ஏனெனில் container-ன் uid-ஆல் /mnt/media ஊடாக செல்ல முடியாவிட்டால் அது library folders-ஐ அடையாது, எல்லாமே காலியாக காட்டும். இரண்டாவது பொதுவான காரணம், Jellyfin எதிர்பார்க்கும் அமைப்புடன் பொருந்தாத folder layout.

Jellyfin-ஐ தொலைவிலிருந்து பாதுகாப்பாக எப்படி அணுகுவது?

இரண்டு சிறந்த வழிகள். ஒரு subdomain-ல் TLS reverse proxy மூலம் இணைக்கவும், இதனால் login மற்றும் stream encrypted ஆகும். fail2ban சேர்க்கவும். port 8096-ஐ நேரடியாக expose செய்ய வேண்டாம், ஏனெனில் அது உங்கள் password-ஐ cleartext-ல் அனுப்பும். அல்லது அதை முற்றிலும் private ஆக வைத்து VPN மூலம் மட்டுமே அணுகவும். ஒரு வீட்டிற்கு இதுவே எளிய பாதுகாப்பான தேர்வு. apps-க்கு நேரடியாக public address கொடுக்கவும். autodiscovery என்பது local-network broadcast, எனவே internet வழியே வரும் clients-ஐ அது அடையாது.

ஒரு Jellyfin VPS-க்கு எவ்வளவு disk மற்றும் bandwidth தேவை?

Disk தரத்தைப் பொறுத்தது: ஒரு compressed 1080p film-க்கு 4-15 GB, ஒரு remux-க்கு 20-40 GB, 4K-க்கு 40-100 GB என கணக்கிடவும். எனவே பெரும்பாலான libraries-க்கு 2-4 TB block volume தேவை. Bandwidth direct-play bitrate மூலம் தீர்மானிக்கப்படுகிறது. ஒரு 1080p stream-க்கு 8-12 Mbps, 4K-க்கு இதை விட அதிகம். எனவே உங்கள் port speed ஒரே நேரத்தில் எத்தனை viewers-ஐ கையாளும் என்பதை உறுதி செய்யவும், மாதாந்திர transfer cap-ஐ கவனிக்கவும். நீங்கள் transcode செய்ய திட்டமிட்டால் CPU headroom சேர்க்கவும். direct-play செய்ய திட்டமிட்டால் cores-ை விட bandwidth-க்கு முன்னுரிமை கொடுக்கவும்.

ஒரு VPS-ல் Jellyfin இயக்குவது சட்டப்பூர்வமானதா?

Jellyfin இலவச, open-source software. இதை இயக்குவது முற்றிலும் சட்டப்பூர்வமானது. முக்கியமானது content: நீங்கள் சொந்தமாக வைத்திருக்கும் அல்லது வைத்திருக்க license உள்ள media-ஐ மட்டுமே stream செய்யவும். உங்கள் சொந்த disc rips, recordings, அல்லது உரிமை உள்ள files ஆக இருக்கலாம். Jellyfin எந்த media-ஐயும் கொண்டிருக்கவில்லை, பெற எந்த வழியையும் வழங்கவில்லை. இது நீங்கள் ஏற்கனவே சொந்தமாக வைத்திருக்கும் library-க்கான ஒரு player.

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