SSD Nodes Learn Hosting plans →
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-08-28

Docker Compose मध्ये Prowlarr, Sonarr आणि Radarr सेटअप

एकाच Docker Compose फाईलमध्ये Prowlarr, Sonarr, Radarr आणि qBittorrent कसे सेट करावे ते शिका. हार्डलिंक्ससाठी आवश्यक PUID, PGID आणि योग्य व्हॉल्यूम लेआउटची संपूर्ण माहिती येथे मिळेल.

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

Docker Compose arr स्टॅक म्हणजे मीडिया लायब्ररी व्यवस्थापित करणारे चार कंटेनर: इंडेक्सर सेटिंग्जसाठी Prowlarr, मालिकांसाठी Sonarr, चित्रपटांसाठी Radarr आणि डाउनलोड क्लायंट म्हणून qBittorrent. हे सर्व कंटेनर Compose नेटवर्कवर सर्व्हिसच्या नावाने एकमेकांशी संवाद साधतात आणि होस्टवर एकच फोल्डर ट्री शेअर करतात. याची स्थापना प्रक्रिया छोटी आहे. हा स्टॅक अनेक वर्षे सुरळीत चालेल की दर आठवड्याला समस्या निर्माण करेल, हे तुमच्या 'व्हॉल्यूम लेआउट'वर अवलंबून असते, म्हणून या मार्गदर्शकाचा मोठा भाग त्याबद्दलच आहे.

हा स्टॅक तुमच्यासाठी आशय (content) शोधत नाही. Prowlarr मध्ये तुम्ही जे इंडेक्सर्स जोडता, तेच त्यात राहतात. कोणते इंडेक्सर्स वापरायचे हा तुमचा निर्णय आणि तुमची कायदेशीर जबाबदारी आहे. हे मार्गदर्शक तांत्रिक बाबींवर लक्ष केंद्रित करते: युजर्स, पाथ्स (paths), परवानग्या, कंटेनर नेटवर्किंग आणि ते व्यवस्थित काम करत असल्याची खात्री करण्यासाठीच्या चाचण्या.

जर तुम्ही यापूर्वी कधीही Compose फाईल लिहिली नसेल, तर आधी VPS साठी Docker Compose ची मूलभूत माहिती वाचा. या पोस्टमध्ये असे गृहीत धरले आहे की तुमच्या सर्व्हरवर docker compose version आधीच काहीतरी आउटपुट देत आहे.

हार्डलिंक्स का निकामी होतात आणि हे का महत्त्वाचे आहे

जेव्हा Sonarr डाउनलोड पूर्ण करते, तेव्हा ती फाईल तुमच्या लायब्ररीमध्ये इम्पोर्ट केली जाते. जर डाउनलोड फोल्डर आणि लायब्ररी फोल्डर एकाच फाईलसिस्टमवर असतील, तर हे इम्पोर्ट 'हार्डलिंक' म्हणून होते: म्हणजे एकाच डेटाकडे निर्देश करणारे दुसरे नाव. यासाठी कोणतीही अतिरिक्त जागा किंवा वेळ लागत नाही. टोरंट जुन्या नावाने सीडिंग सुरू ठेवते, तर तुमचा मीडिया सर्व्हर नवीन नावाने फाईल वाचतो.

जर ही दोन फोल्डर्स वेगवेगळ्या फाईलसिस्टमवर असतील, तर कर्नल अशी लिंक तयार करू शकत नाही. अशा वेळी Sonarr फाईल कॉपी करण्याचा पर्याय निवडते. 40 GB चा सीझन आता डिस्कवर 80 GB जागा व्यापतो आणि कॉपी होण्यासाठी काही मिनिटांचा वेळ लागतो. इम्पोर्ट लॉगमध्ये हार्डलिंक अयशस्वी झाल्याची आणि फाईल कॉपी केल्याची नोंद होते. मर्यादित डिस्क स्पेस असलेल्या VPS वर, यामुळेच लोकांची डिस्क काही दिवसांतच पूर्ण भरते.

येथेच खरी अडचण येते. कंटेनरच्या आत, 'bind mount' ही एक फाईलसिस्टमची सीमा असते. जर तुम्ही /mnt/data/torrents ला /downloads म्हणून आणि /mnt/data/media ला /tv म्हणून माउंट केले, तर जरी त्या दोन्ही एकाच होस्ट डिस्कवर असल्या, तरी Sonarr ला त्या दोन स्वतंत्र माउंट्स दिसतात आणि ती त्यांच्यामध्ये लिंक करण्यास नकार देते. अधिकृत LinuxServer.io इमेजच्या डॉक्युमेंटेशनमध्ये हे स्पष्टपणे नमूद केले आहे: स्वतंत्र /downloads आणि /tv पाथ वापरल्यामुळे हार्डलिंक करण्याची क्षमता गमावली जाते.

यावर उपाय म्हणजे एकच माउंट वापरणे. मीडियाशी संबंधित प्रत्येक कंटेनरला एकच व्हॉल्यूम, /mnt/data:/data द्या आणि ते वापरत असलेले प्रत्येक पाथ त्यातील एक फोल्डर असावे. एक माउंट पॉइंट, एक फाईलसिस्टम, आणि हार्डलिंक्स व्यवस्थित काम करतात.

वापरकर्ता, गट आणि फोल्डर्स तयार करा

कंटेनर फाइल्सना एका अंकीय युजर आयडीने (numeric user id) लिहितात, जो PUID आणि PGID द्वारे सेट केला जातो. तुमच्या स्वतःच्या अकाउंटचा वापर करा, जेणेकरून तुम्ही SSH द्वारे sudo शिवाय त्या फाइल्स वाचू आणि संपादित करू शकाल.

id -u
id -g

दोन्ही कमांड्स सहसा नवीन Ubuntu VPS वर 1000 आउटपुट देतात. आता डिरेक्टरी ट्री तयार करा. हे ट्री तुमच्या मीडिया साठवलेल्या डिस्कवर ठेवा आणि संपूर्ण ट्री एकाच डिस्कवर मर्यादित ठेवा.

sudo mkdir -p /mnt/data/torrents/movies /mnt/data/torrents/tv
sudo mkdir -p /mnt/data/media/Movies /mnt/data/media/Shows
sudo chown -R 1000:1000 /mnt/data
sudo chmod -R 775 /mnt/data

पुढे जाण्यापूर्वी ते एकाच फाइलसिस्टमवर असल्याची खात्री करा:

df --output=source,target /mnt/data/torrents /mnt/data/media

दोन्ही ओळींनी समान सोर्स डिव्हाइस दर्शवले पाहिजे. दोन भिन्न डिव्हाइसेसचा अर्थ असा आहे की हार्डलिंक्स कधीही काम करणार नाहीत, मग तुम्ही कंटेनर कॉन्फिगरेशनमध्ये काहीही सेट केले तरीही.

लायब्ररी फोल्डर्सना मुद्दाम Movies आणि Shows असे नाव दिले आहे. जर तुम्ही आधीच Jellyfin ला मीडिया सर्व्हर म्हणून चालवत असाल, तर /mnt/data/media ला Jellyfin मध्ये /media म्हणून माउंट करा आणि त्याच्या लायब्ररी /media/Movies आणि /media/Shows वर येतील, जिथे त्या मार्गदर्शिकेनुसार अपेक्षित आहेत.

Environment file

प्रत्येक सर्व्हरनुसार बदलणारी मूल्ये .env मध्ये, Compose फाईलच्या शेजारी ठेवा.

mkdir -p ~/arr && cd ~/arr

~/arr/.env लिहा:

PUID=1000
PGID=1000
TZ=Etc/UTC
DATA_ROOT=/mnt/data

TZ हे तुमच्या स्वतःच्या झोनवर सेट करा, उदाहरणार्थ Europe/Berlin. arr ॲप्लिकेशन्स याच झोनमध्ये कार्ये शेड्यूल करतात आणि लॉग लाईन्सवर स्टॅम्प लावतात, त्यामुळे चुकीच्या व्हॅल्यूमुळे नंतर प्रत्येक लॉग गोंधळात टाकणारा ठरू शकतो.

Compose फाईल

~/arr/docker-compose.yml लिहा:

services:
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ./config/prowlarr:/config
    ports:
      - 127.0.0.1:9696:9696
    restart: unless-stopped

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ./config/sonarr:/config
      - ${DATA_ROOT}:/data
    ports:
      - 127.0.0.1:8989:8989
    restart: unless-stopped

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - ./config/radarr:/config
      - ${DATA_ROOT}:/data
    ports:
      - 127.0.0.1:7878:7878
    restart: unless-stopped

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - WEBUI_PORT=8080
      - TORRENTING_PORT=6881
    volumes:
      - ./config/qbittorrent:/config
      - ${DATA_ROOT}:/data
    ports:
      - 127.0.0.1:8080:8080
      - 6881:6881
      - 6881:6881/udp
    stop_grace_period: "10s"
    restart: unless-stopped

या फाईलमधील चार गोष्टी प्रत्यक्ष काम करत आहेत.

मीडिया हाताळणाऱ्या तिन्ही कंटेनर्समध्ये ${DATA_ROOT}:/data समान आहे. Prowlarr मध्ये हे समाविष्ट केलेले नाही, कारण Prowlarr कधीही मीडिया फाईल उघडत नाही.

प्रत्येक वेब पोर्ट 127.0.0.1 शी बांधलेले आहे, त्यामुळे Docker ते फक्त loopback ॲड्रेसवर प्रकाशित करते. साधे 8989:8989 वापरल्यास ते सर्व इंटरफेसवर प्रकाशित होईल आणि Docker चे स्वतःचे फायरवॉल नियम त्या ट्रॅफिकला थेट ufw deny नियमाच्या पलीकडे नेतील. हे वर्तन वापरकर्त्यांना नेहमीच चकित करते आणि Docker ufw च्या पलीकडे पोर्ट्स का प्रकाशित करते यामध्ये याचे स्पष्टीकरण दिले आहे.

पोर्ट 6881 मुद्दाम सर्व इंटरफेसवर प्रकाशित केले आहे. हे टॉरेंट लिसनिंग पोर्ट आहे आणि येणाऱ्या पीअर कनेक्शन्ससाठी ते पोहोचण्यायोग्य असणे आवश्यक आहे. sudo ufw allow 6881 वापरून त्याला परवानगी द्या आणि जर हा कमांड तुमच्यासाठी नवीन असेल, तर VPS साठी ufw फायरवॉलची मूलभूत माहिती वाचा.

कॉन्फिगरेशन डिरेक्टरीज प्रत्येक ॲप्लिकेशनसाठी स्वतंत्र आहेत आणि फक्त मीडिया व्हॉल्यूम सामायिक (shared) आहे. पहिल्यांदा सुरू करण्यापूर्वी त्या तयार करा जेणेकरून त्यांची मालकी root ऐवजी तुमच्या युजरकडे असेल:

mkdir -p ~/arr/config/prowlarr ~/arr/config/sonarr ~/arr/config/radarr ~/arr/config/qbittorrent
docker compose up -d
docker compose ps

सर्व चार सेवांनी running वाचले पाहिजे. जुलै 2026 पर्यंत या इमेजेस lscr.io वर प्रकाशित केल्या आहेत आणि latest टॅग सध्याच्या स्थिर रिलीजचे (stable release) अनुसरण करतो. त्यामुळे, जर तुम्हाला अपग्रेड्स अचानक नको असतील आणि ते तुमच्या निर्णयानुसार हवे असतील, तर त्याऐवजी व्हर्जन टॅग पिन करा.

वेब इंटरफेस सुरक्षितपणे ॲक्सेस करणे

पोर्ट्स loopback वर असल्याने, सध्या काहीही उघड (exposed) नाही. तुमच्या स्वतःच्या मशीनवरून SSH द्वारे ते फॉरवर्ड करा:

ssh -L 9696:127.0.0.1:9696 -L 8989:127.0.0.1:8989 \
    -L 7878:127.0.0.1:7878 -L 8080:127.0.0.1:8080 you@your-server

आता तुमच्या ब्राउझरमध्ये http://127.0.0.1:8989 वापरून तुम्ही सर्व्हरवरील Sonarr पर्यंत पोहोचू शकता. कायमस्वरूपी ॲक्सेससाठी, या स्टॅकच्या पुढे अनेक ॲप्ससाठी Traefik आणि TLS प्रमाणपत्रे लावा किंवा तुम्ही स्वतः होस्ट केलेल्या WireGuard VPN द्वारे सर्व्हर ॲक्सेस करा. यापैकी कोणतेही ॲप्लिकेशन केवळ त्यांच्या स्वतःच्या लॉगिन पेजसह सार्वजनिक इंटरनेटवर उघडे ठेवू नका. जर तुम्ही reverse proxy चा मार्ग निवडला असेल आणि तुम्हाला चार स्वतंत्र ॲप्लिकेशन लॉगिन लक्षात ठेवण्याऐवजी सर्व चार इंटरफेससाठी एकच खाते हवे असेल, तर Authentik तुम्हाला self-hosted single sign-on ची सुविधा देते, जे Traefik द्वारे प्रत्येक विनंतीवर forward auth वापरून लागू करता येते.

qBittorrent पहिल्यांदा सुरू झाल्यावर एक यादृच्छिक (random) ॲडमिनिस्ट्रेटर पासवर्ड तयार करते आणि तो कंटेनर लॉगमध्ये प्रिंट करते. तो वाचा आणि त्यानंतर वेब इंटरफेसमध्ये तो बदलून घ्या:

docker compose logs qbittorrent | grep -i password

जर तुम्ही हा बदल केला नाही, तर प्रत्येक रीस्टार्टला एक नवीन यादृच्छिक पासवर्ड तयार होईल आणि तुम्हाला प्रत्येक वेळी लॉग्स तपासावे लागतील.

प्रत्येक ॲप्लिकेशनमधील पाथ सेट करा

qBittorrent मध्ये, Options उघडा, त्यानंतर Downloads वर जा आणि डीफॉल्ट सेव्ह पाथ /data/torrents वर सेट करा. अपूर्ण डाउनलोड्ससाठीचे फोल्डर त्याच ट्रीमध्ये ठेवा, जसे की /data/torrents/incomplete. /data च्या बाहेर पूर्ण झालेले कोणतेही डाउनलोड लायब्ररीमध्ये हार्डलिंक करता येणार नाही.

Sonarr मध्ये, Settings उघडा, त्यानंतर Media Management वर जा आणि रूट फोल्डर /data/media/Shows जोडा. Radarr मध्ये रूट फोल्डर /data/media/Movies आहे. हे कंटेनरच्या आतील पाथ आहेत. होस्ट पाथ /mnt/data/media/Shows नाकारला जाईल, कारण कंटेनरच्या दृष्टिकोनातून ती डिरेक्टरी अस्तित्वात नाही.

Sonarr आणि Radarr या दोन्हीमध्ये, Settings उघडा, त्यानंतर Download Clients वर जा आणि qBittorrent जोडा. होस्ट qbittorrent आहे आणि पोर्ट 8080 आहे. सर्व्हिसचे नाव होस्टनेम म्हणून काम करते कारण Compose सर्व चार कंटेनर्सना एकाच नेटवर्कवर अंतर्गत DNS (domain name system) सर्व्हिससह ठेवते. येथे localhost वापरू नका: Sonarr कंटेनरच्या आत, localhost म्हणजे स्वतः Sonarr आहे.

Remote Path Mappings रिकामे सोडा. डाउनलोड क्लायंटने रिपोर्ट केलेला पाथ, arr ॲप्लिकेशनला दिसणाऱ्या पाथमध्ये रूपांतरित करण्यासाठी हे फिचर असते. एका सामायिक /data माउंटमुळे, दोन्ही कंटेनर्स आधीच प्रत्येक पाथवर सहमत असतात, हेच या लेआउटचे दुसरे महत्त्वाचे कारण आहे.

Prowlarr ला Sonarr आणि Radarr शी कनेक्ट करा

Prowlarr इंडेक्सरची व्याख्या इतर ॲप्लिकेशन्समध्ये पाठवते, त्यामुळे तुम्हाला इंडेक्सर एकदाच कॉन्फिगर करावा लागतो. यासाठी प्रत्येक ॲप्लिकेशनकडून एक API (application programming interface) की आवश्यक असते.

Sonarr मध्ये, Settings उघडा, त्यानंतर General वर जा आणि API key कॉपी करा. Prowlarr मध्ये, Settings उघडा, त्यानंतर Apps वर जा, एक Sonarr ॲप्लिकेशन जोडा आणि तीन फील्ड्स भरा. Prowlarr Server हे http://prowlarr:9696 आहे. Sonarr Server हे http://sonarr:8989 आहे. API Key मध्ये तुम्ही कॉपी केलेली व्हॅल्यू टाका. Test बटण दाबा. हिरवा निकाल म्हणजे Prowlarr ने Compose नेटवर्कद्वारे Sonarr शी संपर्क साधला आहे. Radarr साठी http://radarr:7878 वर हीच प्रक्रिया पुन्हा करा.

कनेक्शन नाकारल्याचा लाल निकाल येणे म्हणजे बहुतेक वेळा चुकीचे सर्व्हिस नाव किंवा http:// प्रीफिक्स गहाळ असणे होय. कंटेनरच्या आतून नाव रिझॉल्व्ह होते का ते तपासा:

docker compose exec prowlarr curl -sS -o /dev/null -w '%{http_code}\n' http://sonarr:8989

HTTP स्टेटस कोड नेटवर्क मार्ग योग्य असल्याचे सिद्ध करतो. नाव रिझोल्यूशनमधील त्रुटी म्हणजे सर्व्हिसचे नाव चुकीचे आहे.

हार्डलिंक्स प्रत्यक्षात तयार होत आहेत हे सिद्ध करा

लिंक काउंट (link count) तपासेपर्यंत सेटअपवर विश्वास ठेवू नका. एकदा एक आयटम इम्पोर्ट झाला की, डाउनलोड केलेली फाईल आणि लायब्ररी फाईल यांची तुलना करा:

stat -c '%i %h %n' /mnt/data/torrents/tv/*/*.mkv
stat -c '%i %h %n' /mnt/data/media/Shows/*/*/*.mkv

पहिली संख्या म्हणजे inode आणि दुसरी म्हणजे लिंक काउंट. ज्या फाईलची हार्डलिंक तयार झाली आहे, तिचा inode दोन्ही ठिकाणी सारखाच दिसेल आणि लिंक काउंट 2 असेल. जर दोन वेगळे inodes असतील आणि प्रत्येकाचा लिंक काउंट 1 असेल, तर याचा अर्थ Sonarr ने फाईल कॉपी केली आहे आणि इम्पोर्ट लॉगमध्ये हार्डलिंक अयशस्वी झाल्याचा संदेश दिसेल.

डिस्कच्या वापराकडेही लक्ष द्या. इम्पोर्ट होत असताना df -h /mnt/data मध्ये फारसा बदल होऊ नये, कारण हार्डलिंकमुळे फक्त एक नाव जोडले जाते, कोणताही डेटा कॉपी होत नाही.

नेमके काय बिघडते

इम्पोर्ट करताना येणाऱ्या परमिशन त्रुटींचा अर्थ असा आहे की कंटेनरच्या user id ला लायब्ररी फोल्डरमध्ये लिहिण्याची परवानगी नाही. हा संदेश Access to the path ... is denied असा दिसतो. ls -ln /mnt/data/media वापरून मालकीचा id तुमच्या PUID शी जुळतो का ते तपासा. तसेच, कंटेनरला डिरेक्टरीमध्ये प्रवेश मिळण्यासाठी त्या डिरेक्टरीला execute bit असणे आवश्यक आहे हे लक्षात ठेवा.

जर फाईल्सची मालकी root कडे असल्याचे दिसत असेल, तर याचा अर्थ असा की होस्ट डिरेक्टरी अस्तित्वात येण्यापूर्वीच कंटेनर सुरू झाला होता, त्यामुळे Docker ने ती root मालकीची तयार केली. स्टॅक थांबवा, डिरेक्टरी chown करा आणि पुन्हा सुरू करा.

qBittorrent मधून एखादी टोरेंट डिलीट केल्यावर लायब्ररी फाईल गायब होणे याचा अर्थ असा की इम्पोर्ट ही एक प्रत (copy) होती जी नंतर काढून टाकली गेली, किंवा तुम्ही टोरेंट एंट्रीऐवजी थेट डेटाच डिलीट केला. खऱ्या hardlink च्या बाबतीत, एक नाव काढून टाकल्यास दुसरे नाव सुरक्षित राहते, कारण डेटा तेव्हाच मोकळा होतो जेव्हा link count शून्य होतो.

तुम्ही जोडलेल्या मीडियापेक्षा डिस्क वेगाने भरत असेल, तर ही 'कॉपी' समस्येची सर्वात महागडी आवृत्ती आहे. अधिक स्टोरेज विकत घेण्यापूर्वी वरील stat तपासणी करून घ्या.

या स्टॅकसाठी VPS ची आवश्यकता

तीन arr अॅप्लिकेशन्स हलकी आहेत. ती indexers कडून माहिती घेतात, लहान SQLite database मध्ये नोंदी करतात आणि फाइलची नावे बदलतात. 2 GB RAM असलेला सर्व्हर चारही containers सहज चालवतो. प्रत्यक्ष भार इतर सेवांमुळे येतो. मोठ्या torrents दरम्यान download client disk input आणि output पूर्ण क्षमतेने वापरू शकतो. त्याच मशीनवर video transcoding करणारा media server CPU वापरेल. Media जास्त प्रत्यक्ष throughput असलेल्या volume वर ठेवा. सर्व्हरवर इतर महत्त्वाची कामे सुरू असतील, तर download client वर bandwidth limit सेट करा. इतर सेवांसाठी स्वतंत्रपणे संसाधनांचा अंदाज ठेवा. पुरेशी क्षमता शिल्लक आहे असे गृहीत धरू नका: self-hosted AFFiNE workspace म्हणजे database मागे असलेले आणखी चार containers. 2 GB असलेल्या मशीनवर तेवढी जवळपास संपूर्ण memory त्याला लागते. प्रत्येक अतिरिक्त सेवेला इतकीच संसाधने लागत नाहीत: self-hosted openGym workout tracker सारखी एका उद्देशाची सेवा स्वतंत्र TLS दिल्यास आणि training history च्या एका वर्षाचा विश्वास ठेवण्यापूर्वी तिची database file कुठे आहे हे माहीत असल्यास त्याच मशीनवरील संसाधने सहज सामायिक करते. Web application, Postgres database आणि background worker queue असलेली कोणतीही सेवा या श्रेणीच्या AFFiNE टोकाजवळ येते. त्यामुळे import अर्ध्यावर असताना मर्यादा लक्षात येण्यापूर्वी self-hosted Chatwoot support desk या सर्व्हरवर ठेवायचा की स्वतंत्र सर्व्हरवर, हे ठरवा. अचानक वाढणाऱ्या workloads बाबत आणखी सावध रहा. कारण import शी सरासरी भार नव्हे, तर कमाल भार संघर्ष करतो: self-hosted OneCLI handing each person their own sandboxed agent वापरण्याचा विचार असल्यास, qBittorrent पूर्ण क्षमतेने चालू असताना प्रत्यक्षात किती संसाधने मोकळी आहेत याच्याशी त्याचे प्रकाशित sizing numbers तुलना करा. idle box वर free -h जे दाखवते त्याच्याशी तुलना करू नका.

FAQ

Sonarr फाईल्स कॉपी का करते, हार्डलिंक का करत नाही?

कारण कंटेनरच्या दृष्टिकोनातून सोर्स आणि डेस्टिनेशन वेगवेगळ्या फाईलसिस्टमवर असतात. दोन स्वतंत्र bind mounts, जसे की /downloads आणि /tv, या दोन वेगवेगळ्या फाईलसिस्टम मानल्या जातात, जरी त्या दोन्ही एकाच होस्ट डिस्कवरून येत असल्या तरीही. प्रत्येक कंटेनरमध्ये एकच पॅरेंट डिरेक्टरी /data म्हणून माऊंट करा, त्यामध्ये downloads आणि library ठेवा, म्हणजे लिंक करणे शक्य होईल. दोन्ही फाईल्सवर stat -c '%i %h %n' वापरून निकाल तपासा: दोन्हीचा inode समान असावा आणि लिंक काउंट 2 असावा.

मी कोणते PUID आणि PGID वापरावे?

ज्या होस्ट अकाउंटकडे मीडिया ट्रीची मालकी आहे, त्याचा न्यूमेरिक आयडी वापरा, जो तुम्हाला id -u आणि id -g द्वारे मिळेल. नवीन Ubuntu VPS वर सहसा दोन्हीसाठी 1000 हा आयडी असतो. स्टॅकमधील प्रत्येक कंटेनरने हीच जोडी वापरली पाहिजे, अन्यथा एका ॲप्लिकेशनने लिहिलेल्या फाईल्स दुसरे ॲप्लिकेशन बदलू शकणार नाही. व्हॅल्यूज बदलल्यानंतर, docker compose up -d --force-recreate वापरून कंटेनर पुन्हा तयार करा आणि chown -R वापरून अस्तित्वात असलेल्या फाईल्स दुरुस्त करा.

मला हे वेब इंटरफेस इंटरनेटवर उघड (expose) करण्याची गरज आहे का?

नाही, आणि तुम्ही तसे करूही नये. Compose फाईलमध्ये प्रत्येक पब्लिश पोर्ट 127.0.0.1 ला बाइंड करा, त्यानंतर SSH टनेल, VPN किंवा TLS (transport layer security) टर्मिनेट करणारा आणि स्वतःचे ऑथेंटिकेशन जोडणारा reverse proxy वापरून इंटरफेस ॲक्सेस करा. त्यांना थेट पब्लिश करणे दिसण्यापेक्षा जास्त धोकादायक आहे, कारण Docker स्वतःचे फायरवॉल नियम इन्सर्ट करते आणि ufw deny नियम त्या ट्रॅफिकला थांबवू शकत नाही.

मला qBittorrent चा पासवर्ड कुठे मिळेल?

LinuxServer.io इमेज स्टार्टअप लॉगमध्ये admin युजरसाठी तात्पुरता पासवर्ड प्रिंट करते. तो वाचण्यासाठी docker compose logs qbittorrent | grep -i password रन करा, त्यानंतर Options आणि Web UI मध्ये जाऊन कायमस्वरूपी पासवर्ड सेट करा. जोपर्यंत तुम्ही स्वतःचा पासवर्ड सेट करत नाही, तोपर्यंत प्रत्येक रीस्टार्टवर नवीन तात्पुरता पासवर्ड तयार केला जातो.

Jellyfin एकाच फोल्डर्सचा वापर करू शकते का?

हो, आणि लेआउटचा मुख्य उद्देश हाच आहे. /mnt/data/media ला तुमच्या मीडिया सर्व्हरमध्ये /media म्हणून माऊंट करा, आणि त्याच्या लायब्ररीज /media/Movies आणि /media/Shows वर असतील, तर Sonarr आणि Radarr त्याच डिरेक्टरीजमध्ये /data/media द्वारे फाईल्स लिहितात. मीडिया सर्व्हरला तेच PUID आणि PGID द्या, जेणेकरून arr स्टॅकने लिहिलेल्या फाईल्स तो वाचू शकेल.

#sonarr#radarr#prowlarr#docker-compose#self-hosting