Docker Compose மூலம் Arr Stack அமைப்பது எப்படி?
Prowlarr, Sonarr, Radarr மற்றும் qBittorrent ஆகியவற்றை ஒரே Docker Compose கோப்பில் நிறுவுவது எப்படி? Hardlinks வேலை செய்ய தேவையான PUID, PGID மற்றும் வால்யூம் அமைப்புகளை விரிவாகக்
நீங்கள் உருவாக்குவது என்ன
Docker Compose arr stack என்பது மீடியா லைப்ரரியை நிர்வகிக்கும் நான்கு கன்டெய்னர்களைக் கொண்டது: இன்டெக்ஸர் அமைப்புகளுக்கு Prowlarr, தொடர்களுக்கு Sonarr, திரைப்படங்களுக்கு Radarr, மற்றும் டவுன்லோட் கிளையண்டாக qBittorrent. இவை Compose நெட்வொர்க்கில் சர்வீஸ் பெயர்களைக் கொண்டு ஒன்றோடொன்று தொடர்புகொள்கின்றன, மேலும் ஹோஸ்ட் கணினியில் ஒரே ஃபோல்டர் கட்டமைப்பைப் பகிர்ந்து கொள்கின்றன. இதன் நிறுவல் எளிதானது. இந்த stack பல ஆண்டுகள் சீராக இயங்குமா அல்லது வாரந்தோறும் சிக்கல்களைத் தருமா என்பதைத் தீர்மானிப்பது அதன் வால்யூம் (volume) அமைப்புதான், எனவே இந்த வழிகாட்டியின் பெரும்பகுதி அதைப் பற்றியதே.
இந்த stack உங்களுக்காக உள்ளடக்கத்தைத் தேடித் தராது. நீங்கள் சேர்க்கும் இன்டெக்ஸர்களை Prowlarr வைத்திருக்கும், எந்த இன்டெக்ஸர்களைப் பயன்படுத்துவது என்பது உங்கள் முடிவு மற்றும் உங்கள் சட்டப்பூர்வ பொறுப்பு. இந்த வழிகாட்டி அதன் அடிப்படை கட்டமைப்பை விளக்குகிறது: பயனர்கள், பாதைகள் (paths), அனுமதிகள் (permissions), கன்டெய்னர் நெட்வொர்க்கிங் மற்றும் அது சரியாகச் செயல்படுவதை உறுதி செய்யும் சோதனைகள்.
நீங்கள் இதுவரை Compose ஃபைலை எழுதியதில்லை என்றால், முதலில் VPS-க்கான Docker Compose அடிப்படைகள் என்பதைப் படிக்கவும். இந்த இடுகை, உங்கள் சர்வரில் docker compose version ஏற்கனவே இயங்குகிறது என்று கருதுகிறது.
ஹார்ட்லிங்க் (hardlink) ஏன் செயலிழக்கிறது மற்றும் அதன் முக்கியத்துவம்
Sonarr ஒரு பதிவிறக்கத்தை முடித்ததும், அது கோப்பை உங்கள் லைப்ரரிக்கு (library) இறக்குமதி செய்கிறது. பதிவிறக்க கோப்புறையும் (download folder) லைப்ரரி கோப்புறையும் ஒரே ஃபைல்சிஸ்டமில் (filesystem) இருந்தால், அந்த இறக்குமதி ஒரு ஹார்ட்லிங்க் ஆக அமையும்: இது வட்டில் உள்ள அதே தரவைச் சுட்டிக்காட்டும் இரண்டாவது பெயராகும். இதற்கு கூடுதல் இடமோ அல்லது நேரமோ தேவைப்படாது. உங்கள் மீடியா சர்வர் புதிய பெயரிலிருந்து கோப்பை வாசிக்கும் அதே வேளையில், பழைய பெயரிலிருந்து டொரண்ட் (torrent) தொடர்ந்து சீடிங் (seeding) ஆகும்.
இந்த இரண்டு கோப்புறைகளும் வெவ்வேறு ஃபைல்சிஸ்டம்களில் இருந்தால், கர்னலால் (kernel) அந்த இணைப்பை உருவாக்க முடியாது. அப்போது Sonarr கோப்பை நகலெடுக்கும் (copy) முறைக்கு மாறுகிறது. 40 GB கொண்ட ஒரு சீசன் இப்போது 80 GB வட்டு இடத்தைப் பிடிக்கும், மேலும் நகலெடுக்க பல நிமிடங்கள் எடுக்கும். ஹார்ட்லிங்க் தோல்வியடைந்ததாகவும், அதற்குப் பதிலாக கோப்பு நகலெடுக்கப்பட்டதாகவும் இறக்குமதி பதிவேட்டில் (import log) குறிக்கப்படும். குறிப்பிட்ட வட்டு அளவு மட்டுமே கொண்ட ஒரு VPS-ல், இதுவே ஒரு வாரத்தில் வட்டு இடம் தீர்ந்துபோகக் காரணமாகிறது.
இங்கேதான் சிக்கல் உள்ளது. ஒரு கன்டெய்னருக்குள் (container), பைண்ட் மவுண்ட் (bind mount) என்பது ஒரு ஃபைல்சிஸ்டம் எல்லையாகும். /mnt/data/torrents என்பதை /downloads ஆகவும், /mnt/data/media என்பதை /tv ஆகவும் மவுண்ட் செய்தால், அவை இரண்டும் ஒரே ஹோஸ்ட் வட்டில் இருந்தாலும், Sonarr அவற்றை இரண்டு தனித்தனி மவுண்ட்களாகவே பார்க்கும். எனவே, அவற்றுக்கிடையே இணைப்பை உருவாக்க மறுத்துவிடும். அதிகாரப்பூர்வ LinuxServer.io இமேஜ் ஆவணங்கள் இதை நேரடியாகக் குறிப்பிடுகின்றன: தனித்தனி /downloads மற்றும் /tv பாதைகளைப் பயன்படுத்துவது ஹார்ட்லிங்க் செய்யும் திறனை இழக்கச் செய்யும்.
இதற்கான தீர்வு ஒரே ஒரு மவுண்ட் மட்டுமே. மீடியாவைக் கையாளும் ஒவ்வொரு கன்டெய்னருக்கும் ஒரே ஒரு வால்யூம் (volume), அதாவது /mnt/data:/data வழங்கப்பட வேண்டும். அவை பயன்படுத்தும் ஒவ்வொரு பாதையும் அதற்குள் இருக்கும் ஒரு கோப்புறையாக இருக்க வேண்டும். ஒரே ஒரு மவுண்ட் பாயிண்ட், ஒரே ஒரு ஃபைல்சிஸ்டம், இதுவே ஹார்ட்லிங்க் சரியாகச் செயல்பட வழிவகுக்கும்.
பயனர், குழு மற்றும் கோப்புறைகளை உருவாக்குதல்
கண்டெய்னர்கள் PUID மற்றும் PGID மூலம் அமைக்கப்படும் எண் சார்ந்த பயனர் அடையாளத்தைக் (numeric user id) கொண்டு கோப்புகளை எழுதுகின்றன. sudo இன்றி அந்த கோப்புகளை SSH வழியாக வாசிக்கவும் திருத்தவும் உங்கள் சொந்த கணக்கைப் பயன்படுத்தவும்.
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தொடர்வதற்கு முன், இது ஒரே கோப்பு முறைமை (filesystem) தானா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்:
df --output=source,target /mnt/data/torrents /mnt/data/mediaஇரண்டு வரிகளும் ஒரே மூல சாதனத்தைக் (source device) காட்ட வேண்டும். இரண்டு வெவ்வேறு சாதனங்கள் இருந்தால், கண்டெய்னர் அமைப்பில் நீங்கள் எதை அமைத்தாலும் hardlinks வேலை செய்யாது.
நூலகக் கோப்புறைகள் வேண்டுமென்றே Movies மற்றும் Shows என பெயரிடப்பட்டுள்ளன. நீங்கள் ஏற்கனவே Jellyfin-ஐ உங்கள் மீடியா சர்வராக பயன்படுத்துகிறீர்கள் என்றால், /mnt/data/media-ஐ Jellyfin-ல் /media என மவுண்ட் (mount) செய்யுங்கள். அதன் நூலகங்கள் /media/Movies மற்றும் /media/Shows ஆகிய இடங்களில் அமையும், இது அந்த வழிகாட்டி குறிப்பிடும் அதே இடமாகும்.
சூழல் கோப்பு (The 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 ஊடகக் கோப்புகளை ஒருபோதும் திறக்காது என்பதால், அதற்கு இது தேவையில்லை.
ஒவ்வொரு இணைய போர்ட்டும் 127.0.0.1 உடன் பிணைக்கப்பட்டுள்ளது, எனவே Docker அதை லூப்பேக் முகவரியில் மட்டுமே வெளியிடுகிறது. ஒரு சாதாரண 8989:8989 அதை எல்லா இடைமுகங்களிலும் வெளியிடும், மேலும் Docker-இன் சொந்த ஃபயர்வால் விதிகள் அந்த டிராஃபிக்கை ufw deny விதியைத் தாண்டி நேரடியாக அனுமதிக்கும். இந்தச் செயல்பாடு பயனர்களைத் தொடர்ந்து ஆச்சரியப்படுத்துகிறது, மேலும் இது Docker ஏன் ufw-ஐத் தாண்டி போர்ட்களை வெளியிடுகிறது என்பதில் விளக்கப்பட்டுள்ளது.
6881 போர்ட் அனைத்து இடைமுகங்களிலும் வேண்டுமென்றே வெளியிடப்படுகிறது. இது டொரண்ட் லிசனிங் போர்ட் ஆகும், மேலும் உள்வரும் பியர் இணைப்புகளுக்கு இது அணுகக்கூடியதாக இருக்க வேண்டும். sudo ufw allow 6881 மூலம் இதை அனுமதிக்கவும், மேலும் இந்த கட்டளை உங்களுக்குப் புதியது என்றால் VPS-க்கான ufw ஃபயர்வால் அடிப்படைகள் என்பதைப் படிக்கவும்.
கான்ஃபிக் கோப்பகங்கள் ஒவ்வொரு பயன்பாட்டிற்கும் தனித்தனியாக உள்ளன, மேலும் ஊடக வால்யூம் மட்டுமே பகிரப்படுகிறது. முதல் தொடக்கத்திற்கு முன்பே அவற்றை உருவாக்கவும், அப்போதுதான் அவை 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 டேக் தற்போதைய நிலையான ரிலீஸைப் பின்பற்றுகிறது. எனவே, மேம்படுத்தல்கள் தானாக நிகழ்வதை விட உங்கள் முடிவாக இருக்க வேண்டும் எனில், ஒரு குறிப்பிட்ட வெர்ஷன் டேக்கைப் பயன்படுத்தவும்.
இணைய இடைமுகங்களை பாதுகாப்பாக அணுகுதல்
போர்ட்கள் (ports) லூப்பேக் (loopback) முகவரியில் இருப்பதால், இதுவரை எதுவும் பொதுவெளியில் வெளிப்படவில்லை. உங்கள் கணினியிலிருந்து 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இப்போது உங்கள் பிரவுசரில் http://127.0.0.1:8989 என்பதை உள்ளிடுவதன் மூலம் சர்வரில் உள்ள Sonarr-ஐ அணுகலாம். நிரந்தர அணுகலுக்கு, இந்த ஸ்டேக்கை Traefik with TLS certificates for several apps என்பதற்குப் பின்னால் வைக்கவும், அல்லது a WireGuard VPN you host yourself வழியாக சர்வரை அணுகவும். இந்த அப்ளிகேஷன்கள் எதையும், அவற்றின் சொந்த லாகின் பக்கத்தை மட்டும் வைத்துக்கொண்டு பொது இணையத்தில் (public internet) வைக்கக்கூடாது.
qBittorrent முதல்முறை தொடங்கும் போது ஒரு ரேண்டம் அட்மினிஸ்ட்ரேட்டர் கடவுச்சொல்லை உருவாக்கி, அதை கன்டெய்னர் லாக் (container log) கோப்பில் பதிவிடும். அதை வாசித்துவிட்டு, இணைய இடைமுகத்தில் கடவுச்சொல்லை மாற்றவும்:
docker compose logs qbittorrent | grep -i passwordநீங்கள் கடவுச்சொல்லை மாற்றத் தவறினால், ஒவ்வொரு முறை ரீஸ்டார்ட் (restart) செய்யும் போதும் புதிய ரேண்டம் கடவுச்சொல் உருவாக்கப்படும். இதனால் ஒவ்வொரு முறையும் நீங்கள் லாக் கோப்புகளைப் பார்க்க வேண்டியிருக்கும்.
ஒவ்வொரு பயன்பாட்டிற்குள்ளும் பாதைகளை அமைத்தல்
qBittorrent-இல், Options என்பதைத் திறந்து, பின் Downloads என்பதைத் தேர்வு செய்து, இயல்புநிலை சேமிப்புப் பாதையை /data/torrents என அமைக்கவும். முழுமையடையாத பதிவிறக்கங்களுக்கான கோப்புறையை (incomplete-downloads folder) அதே படிநிலை அமைப்பிற்குள், உதாரணமாக /data/torrents/incomplete என்பதில் வைத்திருக்கவும். /data என்பதற்கு வெளியே முடிவடையும் எந்தவொரு பதிவிறக்கத்தையும் லைப்ரரிக்குள் hardlink செய்ய முடியாது.
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 இண்டெக்சர் (indexer) வரையறைகளை மற்ற செயலிகளுக்கு அனுப்புகிறது. இதனால் நீங்கள் ஒரு இண்டெக்சரை இருமுறை உள்ளமைக்க வேண்டியதில்லை. இதற்கு ஒவ்வொரு செயலியிலிருந்தும் ஒரு API (application programming interface) கீ தேவைப்படுகிறது.
Sonarr-இல், Settings என்பதைத் திறந்து, பின் General என்பதற்குச் சென்று, API கீயை நகலெடுக்கவும். 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:8989HTTP ஸ்டேட்டஸ் கோடு நெட்வொர்க் பாதை சரியாக இருப்பதற்கான சான்றாகும். பெயர் தீர்மானிப்பதில் ஏற்படும் பிழை, சேவைப் பெயர் தவறாக இருப்பதைக் காட்டுகிறது.
ஹார்ட்லிங்க் (hardlinks) சரியாகச் செயல்படுவதை உறுதிப்படுத்துதல்
இணைப்பு எண்ணிக்கையை (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 என்று காட்டும். இரண்டு வெவ்வேறு inode எண்கள் இருந்து, ஒவ்வொன்றின் இணைப்பு எண்ணிக்கையும் 1 என்று இருந்தால், Sonarr கோப்பை நகலெடுத்துள்ளது என்று பொருள். ஹார்ட்லிங்க் தோல்வியடைந்ததை இறக்குமதிப் பதிவேடு (import log) குறிப்பிடும்.
வட்டு பயன்பாட்டையும் கவனிக்கவும். இறக்குமதி நடக்கும்போது df -h /mnt/data மிகக் குறைவாகவே மாற வேண்டும். ஏனெனில், ஹார்ட்லிங்க் என்பது தரவை நகலெடுக்காமல் ஒரு புதிய பெயரை மட்டுமே உருவாக்குகிறது.
உண்மையில் என்ன பாதிப்படைகிறது
இறக்குமதி செய்யும் போது ஏற்படும் அனுமதிப் பிழைகள், கண்டெய்னரின் பயனர் ஐடி (user id) லைப்ரரி கோப்புறையில் எழுத முடியாது என்பதைக் குறிக்கிறது. இதற்கான செய்தி Access to the path ... is denied ஆகும். உரிமையாளர் ஐடி உங்கள் PUID உடன் பொருந்துகிறதா என்பதை ls -ln /mnt/data/media மூலம் சரிபார்க்கவும். கண்டெய்னர் கோப்புறைகளுக்குள் நுழைவதற்கு முன்பு, அந்த கோப்புறைகளுக்கு எக்ஸிகியூட் (execute) பிட் தேவை என்பதை நினைவில் கொள்ளவும்.
கோப்புகள் root-க்கு சொந்தமானதாகத் தோன்றினால், ஹோஸ்ட் கோப்புறை உருவாவதற்கு முன்பே கண்டெய்னர் தொடங்கிவிட்டது என்று அர்த்தம். எனவே, Docker அதை root பயனராக உருவாக்கியுள்ளது. ஸ்டேக்கை நிறுத்திவிட்டு, கோப்புறையை chown செய்து, மீண்டும் தொடங்கவும்.
qBittorrent-லிருந்து ஒரு டொரண்ட்டை நீக்கும்போது லைப்ரரி கோப்பு காணாமல் போனால், அந்த இறக்குமதி ஒரு நகலாக இருந்து பின்னர் நீக்கப்பட்டிருக்கலாம் அல்லது நீங்கள் டொரண்ட் உள்ளீட்டிற்குப் பதிலாக தரவையே நீக்கியிருக்கலாம் என்று அர்த்தம். உண்மையான ஹார்ட்லிங்க் (hardlink) பயன்படுத்தப்படும்போது, ஒரு பெயரை நீக்கினாலும் மற்றொன்று அப்படியே இருக்கும். ஏனெனில், லிங்க் எண்ணிக்கை பூஜ்ஜியத்தை அடையும் போது மட்டுமே தரவு விடுவிக்கப்படும்.
நீங்கள் சேர்த்த மீடியாவை விட வட்டு வேகமாக நிரம்புவது, நகல் சிக்கலின் மிக மோசமான வடிவமாகும். அதிக சேமிப்பகத்தை வாங்குவதற்கு முன்பு மேலே உள்ள stat சோதனையை இயக்கவும்.
இந்த ஸ்டேக்கிற்கு ஒரு VPS-இடம் தேவைப்படுபவை
மூன்று arr அப்ளிகேஷன்களும் எடை குறைந்தவை. இவை இன்டெக்சர்களை (indexers) அவ்வப்போது சரிபார்க்கின்றன, சிறிய SQLite டேட்டாபேஸில் எழுதுகின்றன, மேலும் கோப்புகளின் பெயர்களை மாற்றுகின்றன. 2 GB RAM கொண்ட ஒரு சர்வரில் நான்கு கன்டெய்னர்களும் (containers) தாராளமாக இயங்கும். சுமை பிற இடங்களிலிருந்து வருகிறது. பெரிய டோரண்டுகளை (torrents) பதிவிறக்கும்போது, டவுன்லோட் கிளைண்ட் (download client) வட்டு உள்ளீடு மற்றும் வெளியீட்டை (disk I/O) முழுமையாக ஆக்கிரமிக்கும். அதே சர்வரில் மீடியா சர்வர் வீடியோவை டிரான்ஸ்கோட் (transcoding) செய்தால், அது CPU-வை எடுத்துக்கொள்ளும். மீடியா கோப்புகளை அதிக செயல்திறன் கொண்ட வால்யூமில் (volume) வைத்திருங்கள். சர்வரில் நீங்கள் முக்கியமாகக் கருதும் பிற பணிகள் ஏதேனும் இருந்தால், டவுன்லோட் கிளைண்டில் பேண்ட்விட்த் (bandwidth) வரம்பை அமைத்துக்கொள்ளுங்கள்.
FAQ
Sonarr ஏன் கோப்புகளை ஹார்ட்லிங்க் (hardlink) செய்வதற்குப் பதிலாக நகலெடுக்கிறது?
கண்டெய்னரின் பார்வையில் மூலக் கோப்பும் (source) சேருமிடமும் (destination) வெவ்வேறு கோப்பு முறைமைகளில் (filesystems) இருப்பதால் இது நிகழ்கிறது. /downloads மற்றும் /tv போன்ற இரண்டு தனித்தனி பைண்ட் மவுண்ட்கள் (bind mounts), ஒரே ஹோஸ்ட் வட்டில் இருந்தாலும், அவை இரண்டு வெவ்வேறு கோப்பு முறைமைகளாகவே கருதப்படும். ஒவ்வொரு கண்டெய்னரிலும் ஒரு பொதுவான பெற்றோர் கோப்பகத்தை (parent directory) /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 மூலம் ஏற்கனவே உள்ள கோப்புகளைச் சரிசெய்யவும்.
இந்த இணைய இடைமுகங்களை (web interfaces) இணையத்தில் வெளிப்படுத்த வேண்டுமா?
கூடாது, அவ்வாறு செய்யக்கூடாது. Compose கோப்பில் ஒவ்வொரு போர்ட்டையும் 127.0.0.1 உடன் பிணைக்கவும் (bind). பின்னர், 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 ஸ்டேக் எழுதும் கோப்புகளை மீடியா சர்வரால் வாசிக்க முடியும்.