Docker Compose मध्ये Prowlarr, Sonarr आणि Radarr सेटअप
एकाच Docker Compose फाईलमध्ये Prowlarr, Sonarr, Radarr आणि qBittorrent कसे सेट करावे ते शिका. हार्डलिंक्ससाठी आवश्यक PUID, PGID आणि योग्य व्हॉल्यूम लेआउटची संपूर्ण माहिती येथे मिळेल.
तुम्ही काय तयार करत आहात
Docker Compose arr stack हे media library व्यवस्थापित करणारे चार containers आहेत: indexer settings साठी Prowlarr, series साठी Sonarr, films साठी Radarr आणि download client म्हणून qBittorrent. हे containers Compose network वर service name वापरून एकमेकांशी संवाद साधतात आणि host वरील एकच folder tree share करतात. Installation लहान आहे. हा stack अनेक वर्षे सुरळीत चालेल की दर आठवड्याला अडचणी निर्माण करेल, हे volume layout ठरवते. त्यामुळे या guide मधील बहुतांश भाग त्यावर आहे.
हा stack तुमच्यासाठी content शोधत नाही. Prowlarr मध्ये तुम्ही जोडलेले indexers त्यातच ठेवले जातात. कोणते indexers वापरायचे, हा तुमचा निर्णय आणि कायदेशीर जबाबदारी आहे. या guide मध्ये plumbing समाविष्ट आहे: users, paths, permissions, container networking आणि stack कार्यरत असल्याचे सिद्ध करणाऱ्या तपासण्या.
तुम्ही यापूर्वी Compose file लिहिली नसेल, तर आधी VPS साठी Docker Compose ची मूलतत्त्वे वाचा. तुमच्या server वर docker compose version आधीच काही output दाखवत आहे, असे हे post गृहीत धरते. Docker Engine 28.0.0 किंवा त्यानंतरची आवृत्ती वापरा: जुन्या releases मध्ये त्याच local network segment वरील hosts ना localhost वर publish केलेल्या ports पर्यंत पोहोचता येत होते.
हार्डलिंक्स का अपयश का होते आणि हा संपूर्ण मुद्दा का आहे
Sonarr डाउनलोड पूर्ण केल्यानंतर फाइल तुमच्या लायब्ररीत आयात करतो. डाउनलोड फोल्डर आणि लायब्ररी फोल्डर एकाच filesystem वर असतील आणि hardlinking सक्षम असेल, तर Sonarr hardlink तयार करण्याचा प्रयत्न करतो: डिस्कवरील त्याच डेटाकडे निर्देश करणारे दुसरे नाव. यासाठी अतिरिक्त जागा किंवा वेळ लागत नाही. Torrent जुन्या नावावरून seeding सुरू ठेवतो आणि तुमचा media server नवीन नावावरून फाइल वाचतो.
दोन्ही फोल्डर वेगवेगळ्या filesystems वर असतील, तर kernel ही link तयार करू शकत नाही. Sonarr त्याऐवजी copy करतो. 40 GB च्या season साठी आता 80 GB disk space आणि input व output साठी काही मिनिटे लागतात. Sonarr cross-filesystem hardlink failures ची नोंद Trace स्तरावर आणि इतर hardlink exceptions ची नोंद Debug स्तरावर करतो. त्यामुळे सामान्य logs मध्ये failure message दिसेलच असे नाही. निश्चित disk allowance असलेल्या VPS वर एका आठवड्यात जागा संपण्याचे हेच कारण असते.
इथे एक महत्त्वाचा अडथळा आहे. Container च्या आत bind mount ही filesystem boundary असते. /mnt/data/torrents ला /downloads म्हणून आणि /mnt/data/media ला /tv म्हणून mount केल्यास, दोन्ही एकाच host disk वर असले तरी Sonarr त्यांना दोन स्वतंत्र mounts म्हणून पाहतो आणि त्यांच्या दरम्यान hardlink तयार करू शकत नाही. अधिकृत LinuxServer.io image documentation मध्ये हे स्पष्टपणे सांगितले आहे: स्वतंत्र /downloads आणि /tv paths वापरल्यास hardlink तयार करण्याची क्षमता गमावली जाते.
उपाय म्हणजे एकच mount वापरणे. Media हाताळणाऱ्या प्रत्येक container ला /mnt/data:/data हा समान single volume द्या आणि ते वापरत असलेला प्रत्येक path त्यातील folder असू द्या. एक mount point, एक filesystem आणि कार्यरत hardlinks.
वापरकर्ता, गट आणि फोल्डर्स तयार करा
कंटेनर फाइल्सना एका अंकीय युजर आयडीने (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/dataTZ हे तुमच्या स्वतःच्या झोनवर सेट करा, उदाहरणार्थ 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 ला bind केला आहे. त्यामुळे Docker तो फक्त loopback address वर publish करतो. साधा 8989:8989 वापरल्यास तो प्रत्येक interface वर publish होईल आणि Docker चे स्वतःचे firewall rules तो traffic थेट ufw deny rule च्या पुढे पाठवतील. हे वर्तन वापरकर्त्यांना वारंवार अनपेक्षित वाटते. याचे स्पष्टीकरण Docker पोर्ट थेट ufw च्या पुढे का publish करतो येथे दिले आहे.
6881 पोर्ट सर्व interfaces वर जाणीवपूर्वक publish केला आहे. हा torrent listening port आहे आणि incoming peer connections साठी तो reachable असणे आवश्यक आहे. येथेही Docker चे तेच वर्तन लागू होते. त्यामुळे त्यासाठी ufw rule आवश्यक नाही. असे rule जोडल्यास काहीही बदलणार नाही. November 8, 2026 रोजी तपासलेल्या Docker documentation नुसार, published port कडे जाणारा traffic ufw वापरत असलेल्या chains पर्यंत पोहोचण्यापूर्वीच route केला जातो. त्यामुळे sudo ufw allow 6881 चा या पोर्टवर कोणताही परिणाम होत नाही. कंटेनर सुरू होताच Docker हा पोर्ट host च्या सर्व interfaces वर publish करतो. ufw deny देखील तो बंद करणार नाही. या पोर्टशी कोण connect करू शकतो यावर मर्यादा घालायची असल्यास, Docker documentation मध्ये default iptables backend वापरताना त्याच्या DOCKER-USER chain मधील rules वापरण्याचा निर्देश आहे. nftables backend साठी त्याऐवजी स्वतंत्र nftables table मध्ये rules आवश्यक असतात. Docker मध्ये न चालणाऱ्या सेवांसाठी, जसे SSH, ufw वापरत राहा. हे साधन नवीन असल्यास VPS साठी ufw firewall ची मूलभूत माहिती वाचा.
Configuration directories प्रत्येक application साठी स्वतंत्र आहेत आणि फक्त media volume सामायिक आहे. पहिल्यांदा सुरू करण्यापूर्वी त्या तयार करा, जेणेकरून त्या root ऐवजी तुमच्या user च्या मालकीच्या राहतील:
mkdir -p ~/arr/config/prowlarr ~/arr/config/sonarr ~/arr/config/radarr ~/arr/config/qbittorrent
docker compose up -d
docker compose psसर्व चार services ने running वाचले पाहिजे. November 8, 2026 रोजी या images lscr.io वर publish केल्या आहेत आणि latest tag सध्याच्या stable release चे अनुसरण करतो. त्यामुळे upgrades ही अनपेक्षित घटना न राहता जाणीवपूर्वक घेतलेला निर्णय असावा असे वाटत असल्यास त्याऐवजी version tag निश्चित करा.
वेब इंटरफेस सुरक्षितपणे वापरा
वेब इंटरफेस loopback ला bind केलेले आहेत. ते तुमच्या स्वतःच्या मशीनवरून SSH द्वारे forward करा:
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आता तुमच्या browser मधील http://127.0.0.1:8989 सर्व्हरवरील Sonarr पर्यंत पोहोचते. कायमस्वरूपी प्रवेशासाठी हा stack अनेक अॅप्ससाठी TLS प्रमाणपत्रांसह Traefik मागे ठेवा किंवा सर्व्हरवर तुम्ही स्वतः होस्ट केलेल्या WireGuard VPN द्वारे प्रवेश करा. मात्र VPN मुळे हे ports आपोआप उपलब्ध होत नाहीत. November 8, 2026 रोजी तपासलेल्या Docker च्या documentation नुसार, Docker Engine 28.0.0 किंवा त्यानंतरची आवृत्ती आणि default bridge configuration वापरल्यास localhost address वर प्रकाशित केलेल्या port ला फक्त Docker host access करू शकतो. VPN वापरण्यासाठी, त्यावरून SSH tunnel चालू ठेवा किंवा Compose file मधील bindings 127.0.0.1 ऐवजी VPN interface वरील सर्व्हरचा स्वतःचा address वापरतील अशा प्रकारे बदला. यापैकी कोणतेही application समोर फक्त त्याची स्वतःची login page ठेवून public internet वर चालवू नये. Reverse proxy मार्ग निवडला आणि चार स्वतंत्र application logins व्यवस्थापित करण्याऐवजी चारही interface साठी एकच account वापरायचा असेल, तर Authentik self-hosted single sign-on उपलब्ध करून देते. Traefik प्रत्येक request वर forward auth वापरून ते लागू करू शकतो. Proxy मागे Sonarr आणि Radarr साठी प्रत्येकी दोन स्वतंत्र बाबी लक्षात घ्याव्या लागतात. त्यामुळे त्यांना Traefik द्वारे route करण्यापूर्वी Sonarr आणि Radarr reverse proxy मागे कसे चालवायचे हे वाचा. त्यात Invalid Hostname errors रोखणाऱ्या Allowed Hosts entries आणि /api ने login का वगळला पाहिजे हे स्पष्ट केले आहे.
qBittorrent पहिल्यांदा सुरू झाल्यावर random administrator password तयार करते आणि तो container log मध्ये लिहिते. तो वाचा आणि नंतर web interface मध्ये बदला:
docker compose logs qbittorrent | grep -i passwordतो बदल टाळल्यास प्रत्येक restart वेळी नवीन random password तयार होतो आणि प्रत्येक वेळी तुम्हाला पुन्हा logs तपासावे लागतात.
प्रत्येक अॅप्लिकेशनमध्ये path सेट करा
qBittorrent मध्ये Options उघडा, त्यानंतर Downloads उघडा आणि default save path /data/torrents वर सेट करा. अपूर्ण downloads चे folder त्याच tree मध्ये ठेवा, उदाहरणार्थ /data/torrents/incomplete. /data च्या बाहेर कुठेही पूर्ण झालेला download या Compose file द्वारे library मध्ये hardlink करता येत नाही.
Sonarr मध्ये Settings उघडा, त्यानंतर Media Management उघडा आणि root folder म्हणून /data/media/Shows जोडा. Radarr मध्ये root folder /data/media/Movies आहे. हे container मधील paths आहेत. Host path /mnt/data/media/Shows नाकारला जातो, कारण container च्या दृष्टीने ती directory अस्तित्वात नाही.
Sonarr आणि Radarr या दोन्हींमध्ये Settings उघडा, त्यानंतर Download Clients उघडा आणि qBittorrent जोडा. Host qbittorrent आणि port 8080 आहे. Compose सर्व चार containers एकाच network वर internal DNS (domain name system) service सह ठेवते, त्यामुळे service name hostname म्हणून कार्य करते. येथे localhost वापरू नका: Sonarr container मध्ये localhost हे Sonarr आहे.
Remote Path Mappings रिकामे ठेवा. Download client ने कळवलेला path arr application ला दिसणाऱ्या path मध्ये रूपांतरित करण्यासाठी हे feature वापरले जाते. एकच shared /data mount असल्यामुळे दोन्ही containers आधीपासून प्रत्येक path बाबत एकमताने कार्य करतात. ही रचना उपयुक्त ठरण्याचे हे दुसरे कारण आहे.
Prowlarr ला Sonarr आणि Radarr शी जोडा
Prowlarr इतर अॅप्लिकेशन्समध्ये indexer definitions पाठवते. त्यामुळे प्रत्येक indexer दोनदा configure करण्याऐवजी एकदाच configure करता येतो. यासाठी प्रत्येक अॅप्लिकेशनकडून API (application programming interface) key आवश्यक असते.
Sonarr मध्ये Settings उघडा, त्यानंतर General उघडा आणि API key कॉपी करा. Prowlarr मध्ये Settings उघडा, त्यानंतर Apps उघडा आणि Sonarr application जोडा. तीन fields भरा. Prowlarr Server मध्ये http://prowlarr:9696 द्या. Sonarr Server मध्ये http://sonarr:8989 द्या. API Key मध्ये कॉपी केलेली value द्या. Test दाबा. हिरवा result म्हणजे Prowlarr ने Compose network द्वारे Sonarr पर्यंत पोहोचले आहे. Radarr साठी http://radarr:7878 वापरून हीच प्रक्रिया पुन्हा करा.
Connection refused असा लाल result दिसल्यास, configure केलेल्या address आणि port वर listening service पर्यंत connection पोहोचलेले नाही. Container मधून name resolve होत आहे का ते तपासा:
docker compose exec prowlarr curl -sS -o /dev/null -w '%{http_code}\n' http://sonarr:8989HTTP status code मिळाल्यास network path योग्य आहे. Name resolution error म्हणजे service name resolve झालेले नाही. Spelling तपासा आणि दोन्ही containers एकाच Compose network वर चालू आहेत का ते पडताळा.
हार्डलिंक प्रत्यक्षात तयार झाले आहेत हे सिद्ध करा
लिंक count पाहिल्याशिवाय सेटअपवर विश्वास ठेवू नका. एक आयटम import केल्यानंतर downloaded file आणि library file यांची तुलना करा:
stat -c '%i %h %n' /mnt/data/torrents/tv/*/*.mkv
stat -c '%i %h %n' /mnt/data/media/Shows/*/*/*.mkvपहिला क्रमांक inode असतो आणि दुसरा link count असतो. एकाच filesystem वर, एकमेकांचे hardlinks असलेल्या दोन files मध्ये तोच inode आणि किमान 2 इतका link count दिसतो; अतिरिक्त hardlinks तयार झाल्यास हा count वाढतो. वेगवेगळे inodes दिसल्यास त्या files एकमेकांचे hardlinks नाहीत. मात्र, यावरून hardlink तयार करण्याचा प्रयत्न अयशस्वी झाला हे सिद्ध होत नाही. hardlink setting disabled असल्यास Sonarr hardlink तयार करण्याचा प्रयत्न न करता file copy करते. Cross-filesystem hardlink failures Trace स्तरावर आणि इतर hardlink exceptions Debug स्तरावर log केल्या जातात. त्यामुळे सामान्य import logs मध्ये कारण नक्कीच दिसेल असे नाही.
Disk usage वरही लक्ष ठेवा. Import होताना df -h /mnt/data मध्ये फारच कमी बदल झाला पाहिजे, कारण hardlink मुळे नवीन नाव जोडले जाते; data ची दुसरी प्रत तयार होत नाही.
प्रत्यक्षात काय बिघडते
Import करताना permission errors येत असल्यास, container चा user id library folder मध्ये लिहू शकत नाही. संदेश Access to the path ... is denied असा आहे. मालकाचा id तुमच्या PUID शी जुळतो का हे ls -ln /mnt/data/media वापरून तपासा. तसेच container directory मध्ये प्रवेश करण्यापूर्वी त्या directory ला execute bit आवश्यक असतो.
Host directory अस्तित्वात येण्यापूर्वी container सुरू केल्यास root-owned directories तयार होऊ शकतात, कारण Docker नसलेल्या bind-mount directories स्वतः तयार करते. Stack थांबवा, directory chown करा आणि पुन्हा सुरू करा.
qBittorrent मधून torrent हटवल्यानंतर library file देखील गायब झाल्याचे आढळल्यास, कोणते paths हटवले गेले हे तपासा. Download हटवल्याने स्वतंत्र library copy किंवा hardlink हटत नाही. खरा hardlink असल्यास, एक नाव हटवल्यावर दुसरे नाव कायम राहते, कारण link count शून्यावर पोहोचेपर्यंत data मुक्त होत नाही.
तुम्ही जोडलेल्या media पेक्षा disk वेगाने भरत असेल, तर copy problem चे हे सर्वात खर्चिक रूप आहे. अधिक storage खरेदी करण्यापूर्वी वरील stat तपासणी चालवा.
VPS कडून या स्टॅकला आवश्यक असलेल्या गोष्टी
तीन arr अॅप्स हलके आहेत. ते indexers कडून माहिती घेतात, लहान SQLite database मध्ये लिहितात आणि फाइलची नावे बदलतात. मुख्य भार इतर सेवांमुळे येतो. मोठ्या torrents दरम्यान download client disk input आणि output पूर्ण क्षमतेने वापरू शकतो. त्याच सर्व्हरवर video transcoding करणारा media server CPU वापरेल. Media चा डेटा प्रत्यक्षात चांगला throughput देणाऱ्या volume वर ठेवा. सर्व्हरवर इतर महत्त्वाचे काम सुरू असेल, तर download client वर bandwidth limit सेट करा. त्या इतर कामांसाठी स्वतंत्रपणे संसाधनांची तरतूद करा; पुरेशी क्षमता उपलब्ध आहे असे गृहीत धरू नका: self-hosted AFFiNE workspace मध्ये database सहित आणखी चार containers असतात. मूलभूत वापरासाठी AFFiNE 2 GB RAM ची आणि 10,000 शब्दांपेक्षा मोठ्या documents साठी 4 GB RAM ची शिफारस करते. self-hosted openGym workout tracker सारख्या एका विशिष्ट कामासाठी वापरल्या जाणाऱ्या सेवेला स्वतंत्र TLS द्या. तसेच, एका वर्षाचा training history साठवण्यापूर्वी त्याचा data folder कुठे आहे हे निश्चित करा. Web application, Postgres database आणि background worker queue असलेली कोणतीही सेवा या क्षमतेच्या श्रेणीतील AFFiNE च्या टोकाजवळ येते. त्यामुळे import अर्ध्यावर पोहोचल्यावर मर्यादा समजण्यापूर्वी self-hosted Chatwoot support desk या सर्व्हरवर ठेवायचे की स्वतंत्र सर्व्हरवर, हे ठरवा. अचानक वाढणाऱ्या workload बाबत आणखी काळजी घ्या. कारण import दरम्यान सरासरी वापरापेक्षा peak वापरामुळे समस्या निर्माण होतात: प्रत्येक व्यक्तीला स्वतंत्र sandboxed agent देणारा self-hosted OneCLI वापरण्याचा विचार करत असल्यास, qBittorrent पूर्ण क्षमतेने चालू असताना प्रत्यक्षात किती संसाधने मोकळी आहेत, त्याच्या तुलनेत त्याचे प्रकाशित sizing numbers तपासा. निष्क्रिय सर्व्हरवर free -h जे दाखवते, त्याच्या तुलनेत तपासू नका.
FAQ
Sonarr फाइल्स hardlink करण्याऐवजी copy का करते?
कारण hardlinking अक्षम केलेले असते किंवा hardlink करण्याचा प्रयत्न अयशस्वी होतो. कंटेनरच्या दृष्टीने source आणि destination वेगवेगळ्या filesystems वर असतील, तरीही हे घडते. /downloads आणि /tv सारखे दोन स्वतंत्र bind mounts, एकाच host disk वरून आले असले तरी, स्वतंत्र mount points असतात आणि hardlinks त्यांच्या पलीकडे तयार करता येत नाहीत. प्रत्येक कंटेनरमध्ये एकच parent directory /data म्हणून mount करा आणि त्यात downloads व library ठेवा. त्यानंतर link तयार करणे शक्य होईल. दोन्ही फाइल्सवर stat -c '%i %h %n' चालवून परिणाम तपासा. त्या एकाच filesystem वर असल्यास त्यांचा inode समान असला पाहिजे आणि link count किमान 2 असला पाहिजे.
मी कोणते PUID आणि PGID वापरावे?
media tree च्या मालकीच्या host account चे numeric id वापरा. हे id id -u आणि id -g मधून मिळतात. नवीन Ubuntu VPS वर दोन्हींसाठी ते सहसा 1000 असतात. stack मधील प्रत्येक कंटेनरने हीच जोडी वापरली पाहिजे. अन्यथा एखादे application लिहिलेल्या फाइल्समध्ये दुसरे application बदल करू शकणार नाही. मूल्ये बदलल्यानंतर docker compose up -d --force-recreate वापरून कंटेनर्स पुन्हा तयार करा आणि विद्यमान फाइल्सचे permissions chown -R वापरून दुरुस्त करा.
या web interfaces ना इंटरनेटवर उपलब्ध करून देणे आवश्यक आहे का?
नाही. तसे करू नये. Compose file मध्ये प्रत्येक published port 127.0.0.1 ला bind करा. त्यानंतर SSH tunnel द्वारे किंवा server वरील reverse proxy द्वारे interfaces पर्यंत पोहोचा. हा reverse proxy TLS (transport layer security) termination करतो आणि स्वतःचे authentication लागू करतो. Docker Engine 28.0.0 किंवा त्यानंतरची आवृत्ती आणि default bridge configuration वापरताना, केवळ VPN द्वारे 127.0.0.1 वर published केलेल्या port पर्यंत पोहोचता येत नाही. कारण Docker हा published port फक्त host कडून उपलब्ध करतो. जुन्या Docker releases मध्ये त्याच local network segment वरील hosts ना localhost वर published केलेल्या ports पर्यंत पोहोचता येत होते. VPN द्वारे थेट प्रवेश हवा असल्यास ports server च्या VPN address वर publish करा. ते public interface वर थेट publish करणे दिसते त्यापेक्षा अधिक धोकादायक आहे. Docker स्वतःचे firewall rules जोडते आणि ufw मधील deny rule हा traffic थांबवू शकत नाही.
qBittorrent चा password कुठे मिळेल?
LinuxServer.io image startup log मध्ये admin user साठी temporary password दाखवते. तो वाचण्यासाठी docker compose logs qbittorrent | grep -i password चालवा. त्यानंतर Options आणि Web UI अंतर्गत permanent password सेट करा. स्वतःचा password सेट करेपर्यंत प्रत्येक restart वेळी नवीन temporary password तयार केला जातो.
Jellyfin हेच folders वापरू शकते का?
होय. हीच या layout ची उद्दिष्टपूर्ती आहे. /mnt/data/media तुमच्या media server मध्ये /media म्हणून mount करा. त्याच्या libraries /media/Movies आणि /media/Shows येथे असतील, तर Sonarr आणि Radarr /data/media द्वारे त्याच directories मध्ये लिहितील. media server ला तेच PUID आणि PGID द्या, जेणेकरून arr stack ने लिहिलेल्या फाइल्स तो वाचू शकेल.