Jellyfin లైబ్రరీని 90ల నాటి వీడియో స్టోర్లా మార్చడం ఎలా?
Halcyon ఉపయోగించి మీ Jellyfin లైబ్రరీని 90ల నాటి వీడియో స్టోర్గా మార్చండి. Docker కమాండ్, రివర్స్ ప్రాక్సీ సెటప్ మరియు ఈ ప్రాజెక్ట్కు సంబంధించిన ముఖ్యమైన పరిమితుల గురించి తెలుసుకోండి.
Halcyon మీ Jellyfin లైబ్రరీ కోసం ఏమి చేస్తుంది
Halcyon Video మీ Jellyfin లైబ్రరీని బ్రౌజర్లో 1990ల నాటి వీడియో స్టోర్లా మారుస్తుంది. మీరు కలిగి ఉన్న ప్రతి సినిమా ఒక షెల్ఫ్లోని కేసెట్లా కనిపిస్తుంది. మీరు స్ట్రిప్ లైట్ల కింద నడుస్తూ, ఒక బాక్సును కిందకు దించి, వెనుక ఉన్న వివరాలను చదవడానికి దానిని తిప్పి, ప్లేబ్యాక్ ప్రారంభించడానికి కౌంటర్ వద్దకు తీసుకెళ్లవచ్చు. ప్లేబ్యాక్ ప్రారంభం, పురోగతి మరియు ముగింపు సమాచారం Jellyfinకు తిరిగి పంపబడుతుంది, కాబట్టి resume పాయింట్లు మరియు watch history సరిగ్గా ఉంటాయి.
Halcyon ఇప్పటికే ఉన్న Jellyfin సర్వర్ను Jellyfin API ద్వారా చదువుతుంది మరియు దీనికి సొంతంగా లైబ్రరీ ఉండదు. Jellyfin ఇప్పటికే రన్ అవుతూ, సరిగ్గా స్కాన్ అవుతోందని ఈ గైడ్ భావిస్తుంది. ఒకవేళ అలా లేకపోతే, ముందుగా VPSలో మీడియా సర్వర్గా Jellyfin ను సెటప్ చేసి, సాధారణ వెబ్ క్లయింట్లో మీ లైబ్రరీ సరిగ్గా కనిపించిన తర్వాత తిరిగి రండి. లైబ్రరీ ఇప్పటికే సిద్ధంగా ఉన్నప్పుడు మాత్రమే దీనిని ఇన్స్టాల్ చేయాలి, అంతే కానీ మీ self hosting జాబితాలో మరొక సేవ అవసరమని కాదు.
ఈ ప్రాజెక్ట్ GPL-3.0 లైసెన్స్తో ఉంది మరియు దీనిని ఒకే వ్యక్తి రూపొందించారు. ఎటువంటి pull requests స్వీకరించబడవని READMEలో స్పష్టంగా పేర్కొనబడింది. డెవలప్మెంట్ వేగంగా జరుగుతోంది మరియు రిగ్రెషన్లను సరిచేయడానికి వేరే మెయింటైనర్ ఎవరూ లేరు, కాబట్టి మీరు ఈ స్టోర్ను ఇతరులకు చూపించే ముందు ఇమేజ్ వెర్షన్ను పిన్ (pin) చేయండి. చివరి విభాగంలో అది ఎలా చేయాలో వివరించబడింది.
రెండరింగ్ ఎక్కడ జరుగుతుంది?
బ్రౌజర్లో జరుగుతుంది. Halcyon అనేది Vite మరియు TypeScript లతో నిర్మించిన అప్లికేషన్. ఇది three.js అనే JavaScript లైబ్రరీని ఉపయోగిస్తుంది. ఇది WebGL (వెబ్ గ్రాఫిక్స్ లైబ్రరీ, ఇది బ్రౌజర్ నుండి GPU కి అనుసంధానంగా పనిచేస్తుంది) ద్వారా 3D గ్రాఫిక్స్ను గీస్తుంది. స్టోర్ జ్యామితి (geometry) మరియు బాక్స్ ఆర్ట్, స్క్రీన్ను కలిగి ఉన్న పరికరంలోనే కంపోజిట్ చేయబడతాయి.
కంటైనర్ చాలా తక్కువ పని చేస్తుంది. ఇది npm run serve ని రన్ చేస్తుంది, ఇది vite preview --port 1420 --strictPort --host, మరియు బిల్డ్ చేసిన ఫైళ్లతో పాటు కొన్ని చిన్న మిడిల్వేర్ రూట్లను అందిస్తుంది. Halcyon సర్వర్లో ఎటువంటి ట్రాన్స్కోడింగ్ చేయదు మరియు ఎటువంటి ఇంజిన్ను రన్ చేయదు.
కాబట్టి GPU కి సంబంధించిన ప్రశ్న క్లయింట్కు వర్తిస్తుంది. ఒక చిన్న VPS దీనిని సులభంగా సర్వ్ చేయగలదు, ఎందుకంటే దీని అర్థం HTTP ద్వారా స్టాటిక్ ఫైళ్లను అందించడమే. బ్రౌజర్ను రన్ చేస్తున్న ల్యాప్టాప్, టాబ్లెట్ లేదా టెలివిజన్, స్టోర్ సాఫీగా కదులుతుందా లేదా నెమ్మదిగా నడుస్తుందా అని నిర్ణయిస్తుంది.
ఒక ఫీచర్ మాత్రం ఈ నియమాన్ని మారుస్తుంది. Remote Play సర్వర్లో headless Chromium ఇన్స్టాన్స్లను సృష్టిస్తుంది మరియు రెండర్ అయిన స్టోర్ను WebRTC (వెబ్ రియల్ టైమ్ కమ్యూనికేషన్) ద్వారా ఫోన్కు లేదా సెట్ టాప్ బాక్స్కు స్ట్రీమ్ చేస్తుంది. ఆ మార్గంలో రెండరింగ్ సర్వర్లోనే జరుగుతుంది. ఇది డిఫాల్ట్గా రెండు ఇన్స్టాన్స్లకు పరిమితం చేయబడింది మరియు దీనిని REMOTE_PLAY_MAX_INSTANCES తో సర్దుబాటు చేయవచ్చు. మ్యాప్ చేయబడిన /dev/dri పరికరం లేకపోతే, ఆ ఇన్స్టాన్స్లు CPU పై రెండర్ అవుతాయి, కాబట్టి రెండు కోర్ల VPS లో ప్రతి అదనపు వ్యూయర్ భారాన్ని కలిగిస్తుంది.
మీ లైబ్రరీ నుండి స్టోర్ ఏమి చదువుతుంది
ఈ ఐల్స్ (aisles) Jellyfin యొక్క స్వంత నిర్మాణం నుండి వస్తాయి. Halcyon మీ లైబ్రరీలు మరియు జానర్ల నుండి విభాగాలను రూపొందిస్తుంది, మరియు మీ BoxSets నుండి సీక్వెల్స్ను సమూహపరుస్తుంది. ప్రతి కేస్ వెనుక ముద్రించిన స్పెక్స్ (specs), Jellyfin ఇప్పటికే కలిగి ఉన్న MediaStreams మెటాడేటా నుండి వస్తాయి. అంటే Jellyfinలో లేని ఏదైనా సమాచారం షెల్ఫ్లో కూడా ఉండదు.
దీనివల్ల మీ మెటాడేటాకు ఈ స్టోర్ ఒక ఖచ్చితమైన ప్రతిబింబంగా ఉంటుంది. Docker Compose లోని arr stack ద్వారా ఆర్ట్వర్క్ మరియు జానర్లు ఇప్పటికే నింపబడిన లైబ్రరీ, సాధారణ పేర్లున్న విడి ఫైళ్ల ఫోల్డర్ కంటే ఇక్కడ చాలా మెరుగ్గా కనిపిస్తుంది. ఫోటో లైబ్రరీలు కూడా వాటిని ఇండెక్స్ చేసిన దానిపైనే ఆధారపడి ఉంటాయి. ఒకే సర్వర్లో ఉన్న ఫోటోల కోసం PhotoPrism మరియు Immich ల మధ్య ఎంచుకునేటప్పుడు ఈ విషయాన్ని గుర్తుంచుకోవడం మంచిది.
ఏదైనా ఇన్స్టాల్ చేసే ముందు వీడియో స్టోర్ డెమోను ప్రయత్నించండి
ఈ ప్రాజెక్ట్ ఒక కృత్రిమ లైబ్రరీతో నడుస్తున్న పూర్తి స్టోర్ను హోస్ట్ చేసిన డెమోలో ప్రచురిస్తుంది. ఏదైనా Halcyon URL చివరన ?demo=1ని చేర్చడం ద్వారా మీ స్వంత డిప్లాయ్మెంట్లో కూడా ఇదే ఫలితాన్ని పొందవచ్చు.
దీనిని హార్డ్వేర్ పరీక్షగా ఉపయోగించండి. ఈ డెమో లైబ్రరీలో సుమారు 2,000 శీర్షికలు ఉంటాయి మరియు దీనికి దాదాపు 2 GB బ్రౌజర్ మెమరీ అవసరం, ఇది చాలా వ్యక్తిగత లైబ్రరీల కంటే ఎక్కువ. మీరు బ్రౌజ్ చేయాలనుకుంటున్న పరికరంలో ఈ డెమో నెమ్మదిగా నడిస్తే (stutter అయితే), మీ స్వంత లైబ్రరీ కూడా అలాగే ఉంటుంది. దీనికి పరిష్కారం పెద్ద VPSని తీసుకోవడం కాదు, కింద వివరించిన 2.5D మోడ్ను ఉపయోగించడం.
Docker తో రన్ చేయడం
అప్స్ట్రీమ్ డాక్యుమెంటేషన్ సూచించిన కమాండ్ ఇది.
docker run -d --name halcyon --network host --restart unless-stopped \
ghcr.io/halcyon-video/halcyon-videoఆ తర్వాత అది ప్రారంభమైందో లేదో తనిఖీ చేయండి.
docker logs halcyon
curl -I http://127.0.0.1:1420ప్రివ్యూ సర్వర్ 1420 పోర్ట్లో వింటోందని లాగ్ చూపాలి, మరియు curl అనేది HTTP/1.1 200 OK కి సమాధానం ఇవ్వాలి. కొన్ని సెకన్లలోనే కంటైనర్ ఆగిపోతుందంటే, అది దాదాపు ఎప్పుడూ పోర్ట్ సమస్యే అయి ఉంటుంది. 1420 పోర్ట్ ఇప్పటికే ఆక్రమించబడి ఉంటే, సర్వర్ 1421 కి మారడానికి నిరాకరించి ఆగిపోతుందని --strictPort సూచిస్తుంది.
--network host అనేది స్టోర్ కోసం కాదు, రిమోట్ ప్లే (Remote Play) కోసం ఉద్దేశించబడింది. స్ట్రీమ్ కోరుకునే పరికరానికి WebRTC ఆ మెషీన్ యొక్క అసలైన అడ్రస్ను తెలియజేయాలి. డిఫాల్ట్ Docker bridge వెనుక ఉన్న కంటైనర్కు దాని స్వంత 172.x అడ్రస్ మాత్రమే తెలుస్తుంది, దీనిని మీ నెట్వర్క్లోని ఏ ఫోన్ కూడా చేరుకోలేదు, కాబట్టి స్ట్రీమ్ ఎప్పటికీ కనెక్ట్ అవ్వదు. మీకు బ్రౌజర్లో స్టోర్ మాత్రమే కావాలంటే, పోర్ట్ను పబ్లిష్ చేయండి.
docker run -d --name halcyon -p 1420:1420 --restart unless-stopped \
ghcr.io/halcyon-video/halcyon-videoVPSలో ఇది మెరుగైన డిఫాల్ట్, ఎందుకంటే host networking కంటైనర్ను మెషీన్లోని ప్రతి ఇంటర్ఫేస్పై ఉంచుతుంది, ఇందులో పబ్లిక్ ఇంటర్ఫేస్ కూడా ఉంటుంది. VPSపై Docker రన్ చేయడం ఈ అంశానికి సంబంధించిన మిగిలిన వివరాలను వివరిస్తుంది. రీబూట్ తర్వాత స్టోర్ను తిరిగి తీసుకురావడానికి --restart unless-stopped ఉపయోగపడుతుంది, ఇది బూట్ సమయంలో ప్రారంభమయ్యే Compose సేవలు అనే అంశం వంటిదే.
రిపోజిటరీని క్లోన్ చేసి docker compose up -d రన్ చేయడం ద్వారా ఇమేజ్ను లోకల్గా బిల్డ్ చేయవచ్చు. కమిట్ చేసిన Compose ఫైల్ డిఫాల్ట్గా సోర్స్ నుండి బిల్డ్ అవుతుంది మరియు ముందే బిల్డ్ చేసిన image: లైన్ను కామెంట్ చేసి ఉంచుతుంది, కాబట్టి మీకు Compose ద్వారా పబ్లిష్ చేసిన ఇమేజ్ కావాలంటే ఆ లైన్ను అన్కామెంట్ చేయండి.
ఆగస్టు 2026 నాటికి ఉన్న ఒక పరిమితి: పబ్లిష్ చేసిన ఇమేజ్ కేవలం linux/amd64 మాత్రమే. మల్టీ-ఆర్కిటెక్చర్ పుష్లోని arm64 భాగం ఎమ్యులేషన్ కింద విఫలమైంది మరియు నేటివ్ arm రన్నర్ల కోసం వేచి ఉంది. arm64 VPSలో పుల్ (pull) చేసినప్పుడు no matching manifest for linux/arm64/v8 in the manifest list entries ఎర్రర్తో విఫలమవుతుంది, కాబట్టి క్లోన్ నుండి బిల్డ్ చేయడమే దీనికి పరిష్కారం.
మీ Jellyfin సర్వర్కు కనెక్ట్ అవ్వండి
http://<host>:1420 ని తెరిచి, మీ Jellyfin సర్వర్ అడ్రస్, యూజర్ నేమ్ మరియు పాస్వర్డ్తో లాగిన్ అవ్వండి. రిపోజిటరీలోని .env.local.example ఫైల్ కేవలం లోకల్ డెవలప్మెంట్ కోసం మాత్రమే. Vite, VITE_ తో మొదలయ్యే వేరియబుల్స్ను క్లయింట్ సైడ్ కోడ్కు అందుబాటులో ఉంచుతుంది, కాబట్టి అందులో రాసిన Jellyfin పాస్వర్డ్, వెబ్సైట్ను సందర్శించే ప్రతి ఒక్కరూ డౌన్లోడ్ చేసుకునే JavaScript బండిల్లోకి వెళ్తుంది. ఇతరులు యాక్సెస్ చేయగల సర్వర్లో, ఇంటర్ఫేస్ ద్వారానే లాగిన్ అవ్వండి.
బ్రౌజర్ నేరుగా Jellyfin తో కమ్యూనికేట్ అవుతుంది. Halcyon కంటైనర్ Jellyfin API కి ప్రాక్సీగా పనిచేయదు, డీబగ్గింగ్ ప్రారంభించే ముందు ఈ రెండు విషయాలను గమనించాలి.
మొదటిది, Jellyfin కేవలం Halcyon ను హోస్ట్ చేసే VPS నుండే కాకుండా, బ్రౌజర్ నుండి కూడా అందుబాటులో ఉండాలి. 127.0.0.1:8096 కి బైండ్ అయిన Jellyfin లోకల్ టెస్టింగ్కు సరిపోతుంది, కానీ ఇతరులకు కంటెంట్ కనిపించదు.
రెండవది, ఇది క్రాస్-ఆరిజిన్ కాల్, అంటే Halcyon అడ్రస్ నుండి Jellyfin అడ్రస్కు జరుగుతుంది. Jellyfin డిఫాల్ట్గా API అభ్యర్థనలకు Access-Control-Allow-Origin: * తో సమాధానమిస్తుంది, కాబట్టి అదనపు కాన్ఫిగరేషన్ అవసరం లేదు. ఒకవేళ మీరు ఆ సెట్టింగ్ను మార్చినా, లేదా Jellyfin API ముందు ఏదైనా అథెంటికేషన్ ప్రాక్సీని ఉంచినా, బ్రౌజర్ కన్సోల్లో blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource అని కనిపిస్తుంది మరియు స్టోర్ లోడ్ అవ్వదు.
దీనిని రివర్స్ ప్రాక్సీ వెనుక ఉంచి, ముందు భాగంలో అథెంటికేషన్ అమర్చండి
vite preview అనేది ఒక ప్రివ్యూ సర్వర్. ఇది TLS (ట్రాన్స్పోర్ట్ లేయర్ సెక్యూరిటీ) ను టెర్మినేట్ చేయదు మరియు దీనికి సొంతంగా యాక్సెస్ కంట్రోల్ లేదు, కాబట్టి పబ్లిక్ నెట్వర్క్లో ఉన్న ఏదైనా సర్వర్లో దీనిని nginx లేదా Caddy వెనుక ఉంచడం అవసరం.
server {
listen 443 ssl;
server_name halcyon.example.com;
location / {
proxy_pass http://127.0.0.1:1420;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}కంటైనర్ ముందు ఉండే డొమైన్ పేరుకు మరొక సెట్టింగ్ అవసరం. DNS రీబైండింగ్ నుండి రక్షణ కోసం, Halcyon అనేది localhost, రా (raw) IP అడ్రస్లు మరియు అది నడుస్తున్న మెషీన్ పేర్లకు మాత్రమే స్పందిస్తుంది. కంటైనర్ లోపల, అది నడుస్తున్న మెషీన్ అంటే ఆ కంటైనరే, కాబట్టి దాని హోస్ట్నేమ్ మీది కాదు. halcyon.example.com గా వచ్చే అభ్యర్థన తిరస్కరించబడుతుంది మరియు ఆ ప్రతిస్పందన అది తిరస్కరించిన హోస్ట్ పేరును తెలియజేస్తుంది. ఆ పేరును జోడించండి.
docker run -d --name halcyon -p 127.0.0.1:1420:1420 --restart unless-stopped \
-e HALCYON_ALLOWED_HOSTS=halcyon.example.com \
ghcr.io/halcyon-video/halcyon-videoఈ విలువ కామాలతో వేరు చేయబడి ఉంటుంది, .example.com వంటి చుక్కతో మొదలయ్యే విలువ సబ్డొమైన్లను మ్యాచ్ చేస్తుంది, మరియు all ఈ తనిఖీని నిలిపివేస్తుంది. బయటి నుండి ఎవరూ చేరుకోలేని మెషీన్లలో మాత్రమే all ని ఉపయోగించండి.
స్టోర్ https:// ద్వారా అందించబడినప్పుడు, లాగిన్ సమయంలో మీరు టైప్ చేసే Jellyfin అడ్రస్ కూడా https:// అయి ఉండాలి. HTTPS పేజీ నుండి చేసే సాధారణ http:// API కాల్ను బ్రౌజర్ బ్లాక్ చేస్తుంది, మరియు కన్సోల్లో Mixed Content: The page at 'https://halcyon.example.com/' was loaded over HTTPS, but requested an insecure resource అని కనిపిస్తుంది. Halcyon లో ఎటువంటి వివరణ లేకుండానే లాగిన్ విఫలమవుతుంది. రెండింటినీ TLS ద్వారా అందించండి, లేదా ప్రైవేట్ నెట్వర్క్లో రెండింటినీ సాధారణ HTTP పైనే ఉంచండి.
తరువాత అథెంటికేషన్. ఈ స్టోర్ Jellyfin క్రెడెన్షియల్స్ను అడుగుతుంది, కాబట్టి URL ని కనుగొన్న అపరిచితుడు లాగిన్ స్క్రీన్ను చూస్తాడు. ఒక ఫీచర్ దీనిని మారుస్తుంది. సెట్టింగ్స్లో Connection కింద Remote Play ని ఆన్ చేయడం ద్వారా, మీ Jellyfin సెషన్ను సర్వర్కు అందిస్తారు; దీనివల్ల /remote.html ని సందర్శించే వారు మీ అసలు లైబ్రరీని వారి స్వంత ఇన్స్టెన్స్గా పొందుతారు. ఈ ఫీచర్ ఉద్దేశ్యం అదే, అంటే ఇంటర్నెట్కు మరియు మీ సినిమాలకు మధ్య URL యొక్క గోప్యత మాత్రమే రక్షణగా ఉంటుంది. మీరు Remote Play ని ఎనేబుల్ చేస్తే, Authentik as a self hosted SSO gateway ఉపయోగించి మొత్తం సైట్ ముందు సింగిల్ సైన్-ఆన్ (SSO) ను అమర్చండి, లేదా పబ్లిక్ హోస్ట్నేమ్ను తొలగించి a WireGuard tunnel managed with wg-easy ద్వారా స్టోర్ను చేరుకోండి.
దీనితో పాటు రెండు అంశాలు ఉన్నాయి. రివర్స్ ప్రాక్సీ కేవలం స్టోర్ను మాత్రమే తీసుకువెళుతుంది: Remote Play స్ట్రీమ్ అనేది UDP పై నడిచే WebRTC, ఇది HTTP ప్రాక్సీ ద్వారా ప్రయాణించదు. కాబట్టి, బండిల్ చేయబడిన TURN రిలే వాడుకలో ఉన్నప్పుడు, దీనికి 3478/udp మరియు 49200 నుండి 49260/udp వరకు ప్రత్యేక మార్గం అవసరం. పైన పేర్కొన్న సాధారణ docker run ఎటువంటి వాల్యూమ్ను సేవ్ చేయదు, కాబట్టి Remote Play సీడ్ docker rm తర్వాత ఉండదు. సరిగ్గా ఆ కారణం చేతనే, Compose ఫైల్ halcyon-data వాల్యూమ్ను /data వద్ద మౌంట్ చేస్తుంది మరియు REMOTE_PLAY_SEED ని /data/remote-play-seed.json కి సెట్ చేస్తుంది.
స్టోర్ సరిగ్గా పనిచేయనప్పుడు ఏమి చేయాలి
Halcyon డిమాండ్ను బట్టి రెండర్ అవుతుంది. స్టోర్ ఖాళీగా ఉన్నప్పుడు ఎటువంటి ఫ్రేమ్లను కంపోజిట్ చేయదు, మరియు విండో ఫోకస్ కోల్పోతే యానిమేషన్ లూప్ ఆగిపోతుంది; అందుకే ట్యాబ్ను అలాగే వదిలేసినప్పుడు ల్యాప్టాప్ బ్యాటరీ ఖర్చు కాదు. ఇది సామర్థ్యం సరిహద్దులో ఉన్న యంత్రాలకు సహాయపడుతుంది. కానీ స్టోర్ను అస్సలు డ్రా చేయలేని యంత్రాలకు ఇది ఏమీ చేయదు.
అటువంటి క్లయింట్ల కోసం 2.5D మోడ్ ఉంది. ఇది WebGL లేని సాధారణ HTML మరియు CSS తో పనిచేస్తుంది, ఇది Raspberry Pi వంటి చిన్న హార్డ్వేర్ కోసం ఉద్దేశించబడింది. మీరు సెట్టింగ్స్ లేదా పవర్ మెనూ నుండి 3D మరియు 2.5D మధ్య పేజీని రీలోడ్ చేయకుండానే మారవచ్చు, కాబట్టి ఒకే పరికరంలో రెండింటినీ పరీక్షించడానికి కొన్ని సెకన్లు మాత్రమే పడుతుంది. మీరు పొందే ఫలితం గురించి వాస్తవికంగా ఉండండి: రచయిత ఈ ఫ్లాట్ మోడ్ను ఇంకా అభివృద్ధి దశలో ఉన్న ప్రాథమిక వెర్షన్గా పేర్కొన్నారు. దీనిని బలహీనమైన క్లయింట్ల కోసం ఒక ప్రత్యామ్నాయంగా (fallback) పరిగణించండి.
ఒక క్లయింట్ 3D స్టోర్ను నిర్వహించడానికి చాలా బలహీనంగా ఉన్నప్పుడు, వైఫల్యం స్పష్టంగా కనిపిస్తుంది. షెల్ఫ్లు నిండుతున్న సమయంలోనే ట్యాబ్ తనంతట తానుగా రీలోడ్ అవ్వడం లేదా బ్రౌజర్ WebGL కాంటెక్స్ట్ కోల్పోయినట్లు రిపోర్ట్ చేయడం జరుగుతుంది. అటువంటి సందర్భాల్లో మీ లైబ్రరీని తగ్గించుకునే బదులు, ఆ పరికరాన్ని 2.5D మోడ్కు మార్చండి.
ఇమేజ్ను పిన్ చేయండి మరియు పుల్ చేసే ముందు తనిఖీ చేయండి
ఈ అంశాన్ని సీరియస్గా తీసుకోండి. v0.1.0 నుండి v0.3.1 వరకు ఉన్న ట్యాగ్లు అన్నీ కొన్ని రోజుల వ్యవధిలోనే విడుదలయ్యాయి, మరియు v0.2.0 కోసం ఇమేజ్ పుష్ విఫలం కావడం వల్లే v0.2.1 ఉనికిలోకి వచ్చింది. అప్స్ట్రీమ్లో బగ్ రిపోర్టులను స్వీకరిస్తారు, కానీ ప్యాచ్లను కాదు, కాబట్టి ఈ రిలీజ్ స్ట్రీమ్ అనేది ఒక వ్యక్తి యొక్క పని స్థితి (working state) మాత్రమే.
docker pull అలవాటుతో latest రన్ చేయడం అంటే, ఏదైనా సాధారణ మంగళవారం నాడు మీ స్టోర్ అకస్మాత్తుగా మారిపోవచ్చు. ఇమేజ్ను digest ద్వారా పిన్ చేయండి, ఎందుకంటే ఇది మారలేని ఏకైక రిఫరెన్స్.
docker buildx imagetools inspect ghcr.io/halcyon-video/halcyon-video:0.3.1ఇది ట్యాగ్ వెనుక ఉన్న digest ను ప్రింట్ చేస్తుంది. ట్యాగ్కు బదులుగా దీనిని ఉపయోగించండి.
docker run -d --name halcyon -p 1420:1420 --restart unless-stopped \
ghcr.io/halcyon-video/halcyon-video@sha256:747dcc821a3d2fa318b50e76024783c1835609047e84f502e23d021bc1898b20ఆ digest, 10 August 2026 న 0.3.1 గా ఉంది. దీనిని కాపీ చేసే బదులు, ప్రస్తుత digest ను మీరే స్వయంగా చదవండి. అలాగే, మీరు అప్డేట్ చేసే ముందు రిలీజ్ నోట్స్ను చదవండి, ఎందుకంటే ఇక్కడ వచ్చే ప్యాచ్ రిలీజ్లో ఫిక్స్లతో పాటు స్టోర్ లేఅవుట్ మార్పులు కూడా ఉండవచ్చు.
FAQ
నా VPSలో Halcyon కోసం GPU అవసరమా?
సాధారణ వినియోగానికి అవసరం లేదు. స్టోర్ బ్రౌజర్లో three.js ద్వారా డ్రా చేయబడుతుంది, కాబట్టి క్లయింట్ మెషీన్ రెండరింగ్ చేస్తుంది మరియు కంటైనర్ కేవలం port 1420లో స్టాటిక్ ఫైళ్లను మాత్రమే అందిస్తుంది. Remote Play దీనికి మినహాయింపు, ఇది సర్వర్లో headless Chromiumను రన్ చేసి ఫలితాన్ని స్ట్రీమ్ చేస్తుంది. మీరు హార్డ్వేర్ యాక్సిలరేషన్ కోసం /dev/driని కంటైనర్లోకి మ్యాప్ చేయకపోతే, ఆ పాత్ CPUపైనే రెండర్ అవుతుంది.
నేను Halcyonను పబ్లిక్ ఇంటర్నెట్లో ఉంచవచ్చా?
కేవలం అథెంటికేషన్ (authentication) ఉన్నప్పుడు మాత్రమే ఉంచండి. స్టోర్ Jellyfin క్రెడెన్షియల్స్ను అడుగుతుంది, కానీ Remote Playని ఆన్ చేస్తే మీ Jellyfin సెషన్ సర్వర్కు బదిలీ అవుతుంది. కాబట్టి, ఎవరైనా /remote.htmlని లోడ్ చేస్తే, వారు లాగిన్ అవ్వకుండానే మీ అసలు లైబ్రరీని చూడగలరు. దీని ముందు సింగిల్ సైన్-ఆన్ (SSO) ఉన్న రివర్స్ ప్రాక్సీని ఉంచండి, లేదా హోస్ట్నేమ్ను పబ్లిక్ DNSలో ఉంచకుండా VPN ద్వారా స్టోర్ను యాక్సెస్ చేయండి.
లాగిన్ అయిన తర్వాత షెల్ఫ్లు ఎందుకు ఖాళీగా ఉన్నాయి?
బ్రౌజర్ నేరుగా Jellyfin APIని పిలుస్తుంది, కాబట్టి Jellyfin కేవలం VPS నుండే కాకుండా, బ్రౌజర్ నుండి కూడా అందుబాటులో ఉండాలి. బ్రౌజర్ కన్సోల్ను చూడండి. blocked by CORS policy అంటే Halcyon అడ్రస్ నుండి వచ్చే అభ్యర్థనను Jellyfin అంగీకరించడం లేదని అర్థం. Mixed Content సందేశం అంటే, మీరు ఎంటర్ చేసిన Jellyfin అడ్రస్ plain HTTPలో ఉండి, పేజీ HTTPSలో ఉందని అర్థం.
నాకు --network host అవసరమా?
కేవలం Remote Play కోసం మాత్రమే. WebRTC మెషీన్ యొక్క అసలు అడ్రస్ను తెలియజేయాలి, కానీ Docker బ్రిడ్జ్ వెనుక ఉన్న కంటైనర్ కేవలం 172.x అడ్రస్ను మాత్రమే ఇవ్వగలదు, దీనిని మీ నెట్వర్క్లోని ఏ ఫోన్ కూడా చేరుకోలేదు. బ్రౌజర్లో స్టోర్ను బ్రౌజ్ చేయడానికి, -p 1420:1420 సరిపోతుంది మరియు ఇది హోస్ట్ యొక్క తక్కువ సమాచారాన్ని మాత్రమే బయటపెడుతుంది.
నేను ఏ ఇమేజ్ ట్యాగ్ని ఉపయోగించాలి?
latest కంటే digestని పిన్ చేయడం మంచిది. docker buildx imagetools inspect ghcr.io/halcyon-video/halcyon-video:0.3.1 ఉన్న వెర్షన్ కోసం digestని చదవండి, ఆ digestని రన్ చేయండి మరియు రిలీజ్ నోట్స్ చదివిన తర్వాతే అప్డేట్ చేయండి. ఆగస్టు 2026 నాటికి, ప్రచురించబడిన ఇమేజ్ కేవలం linux/amd64 మాత్రమే, కాబట్టి arm64 హోస్ట్ ఉన్నవారు docker compose up -dతో క్లోన్ చేసి బిల్డ్ చేసుకోవాలి.