SSD Nodes Learn Hosting plans →
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-08-30

Docker Compose తో Prowlarr, Sonarr, Radarr సెటప్

ఒకే Docker Compose ఫైల్ ద్వారా Prowlarr, Sonarr, Radarr మరియు qBittorrent లను ఎలా సెటప్ చేయాలో తెలుసుకోండి. హార్డ్‌లింక్‌లు పనిచేసేలా వాల్యూమ్ లేఅవుట్‌ను సరిగ్గా అమర్చడం ఎలాగో చూడండి.

మీరు ఏమి నిర్మిస్తున్నారు

Docker Compose arr stack అనేది మీడియా లైబ్రరీని నిర్వహించే నాలుగు కంటైనర్ల సమూహం: ఇండెక్సర్ సెట్టింగ్‌ల కోసం Prowlarr, సిరీస్ కోసం Sonarr, సినిమాల కోసం Radarr, మరియు డౌన్‌లోడ్ క్లయింట్‌గా qBittorrent. ఇవి Compose నెట్‌వర్క్‌లో సర్వీస్ పేరు ద్వారా ఒకదానితో ఒకటి కమ్యూనికేట్ చేసుకుంటాయి మరియు హోస్ట్ మెషీన్‌పై ఒకే ఫోల్డర్ ట్రీని పంచుకుంటాయి. దీని ఇన్‌స్టాలేషన్ ప్రక్రియ చాలా చిన్నది. ఈ stack సంవత్సరాల తరబడి సజావుగా పనిచేస్తుందా లేదా ప్రతి వారం సమస్యలు ఇస్తుందా అనేది మీరు అమర్చే వాల్యూమ్ లేఅవుట్‌పై ఆధారపడి ఉంటుంది, కాబట్టి ఈ గైడ్‌లో ఎక్కువ భాగం దాని గురించే ఉంటుంది.

ఈ stack మీ కోసం కంటెంట్‌ను వెతకదు. మీరు జోడించే ఇండెక్సర్‌లను Prowlarr నిర్వహిస్తుంది; మీరు ఏ ఇండెక్సర్‌లను ఉపయోగిస్తారనేది మీ నిర్ణయం మరియు మీ చట్టపరమైన బాధ్యత. ఈ గైడ్ కేవలం సాంకేతిక అమరికలను మాత్రమే వివరిస్తుంది: యూజర్లు, పాత్‌లు, అనుమతులు, కంటైనర్ నెట్‌వర్కింగ్, మరియు అది సరిగ్గా పనిచేస్తుందో లేదో తనిఖీ చేసే పద్ధతులు.

మీరు ఇంతకుముందు ఎప్పుడూ Compose ఫైల్ రాయకపోతే, ముందుగా the Docker Compose basics for a VPS చదవండి. ఈ పోస్ట్ మీ సర్వర్‌లో docker compose version ఇప్పటికే పనిచేస్తుందని భావిస్తుంది.

Sonarr ఒక డౌన్‌లోడ్‌ను పూర్తి చేసినప్పుడు, అది ఫైల్‌ను మీ లైబ్రరీలోకి ఇంపోర్ట్ చేస్తుంది. డౌన్‌లోడ్ ఫోల్డర్ మరియు లైబ్రరీ ఫోల్డర్ ఒకే filesystem పై ఉన్నట్లయితే, ఆ ఇంపోర్ట్ ఒక hardlink అవుతుంది: అంటే డిస్క్‌లోని ఒకే డేటాను సూచించే రెండవ పేరు. దీనికి అదనపు స్థలం లేదా సమయం అవసరం లేదు. మీ మీడియా సర్వర్ కొత్త పేరుతో ఫైల్‌ను చదువుతున్నప్పుడు, టొరెంట్ పాత పేరుతో సీడింగ్ కొనసాగిస్తుంది.

ఒకవేళ ఈ రెండు ఫోల్డర్లు వేర్వేరు filesystem లపై ఉంటే, kernel ఆ link ను సృష్టించలేదు. అప్పుడు Sonarr కాపీ చేసే పద్ధతికి మారుతుంది. దీనివల్ల 40 GB సీజన్ ఇప్పుడు 80 GB డిస్క్ స్థలాన్ని ఆక్రమిస్తుంది మరియు I/O ప్రక్రియకు చాలా సమయం పడుతుంది. hardlink విఫలమైందని మరియు దానికి బదులుగా ఫైల్ కాపీ చేయబడిందని ఇంపోర్ట్ లాగ్‌లో నమోదవుతుంది. పరిమిత డిస్క్ సామర్థ్యం ఉన్న VPS లలో, ఇలాగే వారం రోజుల్లోనే డిస్క్ స్థలం నిండిపోతుంది.

ఇక్కడే అసలు చిక్కు ఉంది. కంటైనర్ లోపల, bind mount అనేది ఒక filesystem సరిహద్దుగా పనిచేస్తుంది. మీరు /mnt/data/torrents ను /downloads గా మరియు /mnt/data/media ను /tv గా మౌంట్ చేస్తే, అవి రెండూ ఒకే హోస్ట్ డిస్క్‌లో ఉన్నప్పటికీ, Sonarr వాటిని రెండు వేర్వేరు మౌంట్లుగా చూస్తుంది మరియు వాటి మధ్య link చేయడానికి నిరాకరిస్తుంది. అధికారిక LinuxServer.io ఇమేజ్ డాక్యుమెంటేషన్ దీనిని స్పష్టంగా పేర్కొంది: వేర్వేరు /downloads మరియు /tv పాత్‌లను ఉపయోగించడం వల్ల hardlink చేసే సామర్థ్యాన్ని కోల్పోతారు.

దీనికి పరిష్కారం ఒకే మౌంట్. మీడియాను యాక్సెస్ చేసే ప్రతి కంటైనర్‌కు ఒకే volume, అంటే /mnt/data:/data ను కేటాయించాలి, మరియు అవి ఉపయోగించే ప్రతి పాత్ ఆ వాల్యూమ్ లోపల ఉన్న ఫోల్డర్ అయి ఉండాలి. ఒకే మౌంట్ పాయింట్, ఒకే filesystem, అప్పుడే hardlinks సరిగ్గా పనిచేస్తాయి.

యూజర్, గ్రూప్ మరియు ఫోల్డర్లను సృష్టించడం

కంటైనర్లు ఫైళ్లను సంఖ్యాపరమైన యూజర్ ఐడి (numeric user id) తో రాస్తాయి, దీనిని PUID మరియు PGID ద్వారా సెట్ చేస్తారు. మీ స్వంత ఖాతాను ఉపయోగించండి, తద్వారా మీరు sudo అవసరం లేకుండానే SSH ద్వారా ఆ ఫైళ్లను చదవగలరు మరియు సవరించగలరు.

id -u
id -g

సాధారణంగా కొత్త Ubuntu VPSలో ఇవి రెండూ 1000 అని చూపిస్తాయి. ఇప్పుడు డైరెక్టరీ నిర్మాణాన్ని (tree) రూపొందించండి. దీనిని మీ మీడియా ఉన్న డిస్క్‌లో ఉంచండి మరియు మొత్తం నిర్మాణాన్ని అదే డిస్క్‌లో ఉంచండి.

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

రెండు లైన్లు ఒకే సోర్స్ డివైజ్‌ను చూపాలి. రెండు వేర్వేరు డివైజ్‌లు ఉంటే, మీరు కంటైనర్ కాన్ఫిగరేషన్‌లో ఏమి సెట్ చేసినా హార్డ్‌లింక్‌లు (hardlinks) పనిచేయవు.

లైబ్రరీ ఫోల్డర్లకు ఉద్దేశపూర్వకంగానే Movies మరియు Shows అని పేరు పెట్టడం జరిగింది. మీరు ఇప్పటికే మీ మీడియా సర్వర్‌గా Jellyfin వాడుతుంటే, /mnt/data/media ను Jellyfin లోకి /media గా మౌంట్ చేయండి. అప్పుడు దాని లైబ్రరీలు /media/Movies మరియు /media/Shows వద్దకు చేరుతాయి, అంటే ఆ గైడ్‌లో పేర్కొన్న చోటనే అవి ఉంటాయి.

Environment ఫైల్

సర్వర్ వారీగా మారే విలువలను .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 ఎప్పుడూ మీడియా ఫైల్‌ను తెరవదు కాబట్టి, దానికి ఇది అవసరం లేదు.

ప్రతి వెబ్ పోర్ట్ 127.0.0.1 కి బైండ్ చేయబడింది, కాబట్టి Docker దీనిని కేవలం loopback అడ్రస్‌పై మాత్రమే ప్రచురిస్తుంది. సాధారణ 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 ట్యాగ్ ప్రస్తుత stable రిలీజ్‌ను అనుసరిస్తుంది. కాబట్టి, అప్‌గ్రేడ్‌లు ఆకస్మికంగా కాకుండా మీ నిర్ణయం మేరకు జరగాలంటే, ఒక నిర్దిష్ట వెర్షన్ ట్యాగ్‌ను పిన్ చేయండి.

వెబ్ ఇంటర్‌ఫేస్‌లను సురక్షితంగా చేరుకోవడం

పోర్ట్‌లు loopback లో ఉన్నందున, ఏవీ ఇంకా బయటకు కనిపించవు. మీ స్వంత మెషీన్ నుండి 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 ను చేరుకోవచ్చు. శాశ్వత ప్రాప్యత కోసం, ఈ stack ను అనేక అప్లికేషన్ల కోసం TLS certificates తో Traefik వెనుక ఉంచండి, లేదా మీరు హోస్ట్ చేసే 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 ను చేరుకోగలిగిందని అర్థం. ఇదే పద్ధతిని http://radarr:7878 వద్ద ఉన్న Radarr తో కూడా పునరావృతం చేయండి.

కనెక్షన్ తిరస్కరించబడిందని ఎరుపు రంగు ఫలితం వస్తే, అది దాదాపుగా తప్పు సర్వీస్ పేరు లేదా తప్పిపోయిన 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, రెండవది link count. ఒక ఫైల్ hardlink చేయబడితే, రెండు చోట్లా ఒకే inode కనిపిస్తుంది మరియు link count 2 గా ఉంటుంది. రెండు వేర్వేరు inode లు ఉండి, ప్రతిదానికీ link count 1 ఉంటే, Sonarr ఫైల్‌ను కాపీ చేసిందని అర్థం; అప్పుడు import log లో hardlink విఫలమైందని కనిపిస్తుంది.

డిస్క్ వినియోగాన్ని కూడా గమనించండి. ఇంపోర్ట్ జరిగేటప్పుడు df -h /mnt/data లో మార్పు చాలా తక్కువగా ఉండాలి, ఎందుకంటే hardlink కేవలం ఒక పేరును మాత్రమే జోడిస్తుంది, డేటాను కాపీ చేయదు.

ఏమి విఫలమవుతుంది

ఇంపోర్ట్ చేసేటప్పుడు వచ్చే Permission errors అంటే కంటైనర్ యొక్క user id లైబ్రరీ ఫోల్డర్‌లో రాయలేకపోతోందని అర్థం. ఆ సందేశం Access to the path ... is denied. ls -ln /mnt/data/media కమాండ్‌తో owner id మీ PUID కి సరిపోలుతుందో లేదో తనిఖీ చేయండి. అలాగే, కంటైనర్ ఒక డైరెక్టరీలోకి ప్రవేశించాలంటే దానికి execute bit అవసరమని గుర్తుంచుకోండి.

ఫైల్స్ root యాజమాన్యంలో కనిపిస్తున్నాయంటే, హోస్ట్ డైరెక్టరీ ఏర్పడకముందే కంటైనర్ ప్రారంభమైందని అర్థం, అందుకే Docker దానిని root గా సృష్టించింది. స్టాక్‌ను ఆపి, ఆ డైరెక్టరీని chown చేసి, మళ్ళీ ప్రారంభించండి.

qBittorrent నుండి ఒక టొరెంట్‌ను తొలగించినప్పుడు లైబ్రరీ ఫైల్ కూడా మాయమైతే, ఆ ఇంపోర్ట్ కేవలం ఒక కాపీ మాత్రమేనని, అది తర్వాత తొలగించబడిందని లేదా మీరు టొరెంట్ ఎంట్రీని కాకుండా డేటాను తొలగించారని అర్థం. నిజమైన hardlink ఉన్నప్పుడు, ఒక పేరును తొలగించినా మరొకటి అలాగే ఉంటుంది, ఎందుకంటే link count సున్నాకి చేరినప్పుడు మాత్రమే డేటా తొలగించబడుతుంది.

మీరు జోడించిన మీడియా కంటే డిస్క్ వేగంగా నిండిపోతుందంటే, అది కాపీ సమస్య యొక్క అత్యంత ఖరీదైన రూపం. మీరు మరిన్ని స్టోరేజ్ కొనే ముందు పైన పేర్కొన్న stat తనిఖీని రన్ చేయండి.

ఈ stack కోసం VPS నుండి ఏమి అవసరం

మూడు arr అప్లికేషన్లు చాలా తేలికైనవి. ఇవి indexerలను poll చేస్తాయి, చిన్న SQLite డేటాబేస్‌లో రాస్తాయి మరియు ఫైళ్లను rename చేస్తాయి. 2 GB RAM ఉన్న సర్వర్ ఈ నాలుగు కంటైనర్లను సులభంగా నడపగలదు. లోడ్ వేరే చోట నుండి వస్తుంది. పెద్ద torrentలను డౌన్‌లోడ్ చేసేటప్పుడు download client డిస్క్ ఇన్‌పుట్ మరియు అవుట్‌పుట్‌ను పూర్తిగా వినియోగించుకుంటుంది, అలాగే అదే సర్వర్‌లో వీడియోను ట్రాన్స్‌కోడ్ చేసే మీడియా సర్వర్ CPUని వాడేస్తుంది. మీడియాను మంచి throughput ఉన్న వాల్యూమ్‌లో ఉంచండి, మరియు సర్వర్‌లో మీరు ముఖ్యమైన ఇతర పనులు చేస్తుంటే download clientకి bandwidth పరిమితిని విధించండి. ఆ అదనపు పనుల కోసం విడిగా బడ్జెట్ కేటాయించండి; అక్కడ ఖాళీ స్థలం ఉందని ఊహించుకోవద్దు: self-hosted AFFiNE workspace అనేది వెనుక డేటాబేస్‌తో కలిపి మరో నాలుగు కంటైనర్లను తీసుకుంటుంది, 2 GB సర్వర్‌లో ఇది మెమరీలో ఎక్కువ భాగాన్ని ఆక్రమిస్తుంది. ప్రతి అదనపు సేవకు అంత ఖర్చు అవ్వదు: self-hosted openGym workout tracker వంటి ఒకే పని కోసం ఉద్దేశించిన సేవలు సర్వర్‌ను సులభంగా పంచుకోగలవు, అయితే దానికి సొంత TLS ఇచ్చి, ఒక సంవత్సరం శిక్షణ చరిత్రను నమ్మే ముందు దాని డేటాబేస్ ఫైల్ ఎక్కడ ఉందో తెలుసుకోవాలి. వెబ్ అప్లికేషన్, Postgres డేటాబేస్ మరియు బ్యాక్‌గ్రౌండ్ వర్కర్ క్యూ ఉన్న ఏదైనా సేవ AFFiNE స్థాయికి దగ్గరగా ఉంటుంది, కాబట్టి self-hosted Chatwoot support desk ను ఈ సర్వర్‌లోనే ఉంచాలా లేదా విడిగా ఉంచాలా అనేది డేటా ఇంపోర్ట్ మధ్యలో పరిమితిని చేరుకోకముందే నిర్ణయించుకోండి. అకస్మాత్తుగా పెరిగే పనిభారం (Bursty workloads) విషయంలో మరింత జాగ్రత్తగా ఉండాలి, ఎందుకంటే సగటు లోడ్ కంటే పీక్ లోడ్ వల్లనే సమస్యలు వస్తాయి: మీరు self-hosted OneCLI ద్వారా ప్రతి వ్యక్తికి ఒక sandboxed agent ఇవ్వాలని అనుకుంటే, qBittorrent పూర్తి వేగంతో నడుస్తున్నప్పుడు అందుబాటులో ఉన్న వనరులను చూడండి, అంతే కానీ free -h ఖాళీగా ఉన్నప్పుడు చూపే గణాంకాలను నమ్మవద్దు.

FAQ

ఎందుకంటే కంటైనర్ దృక్కోణంలో మూలం (source) మరియు గమ్యం (destination) వేర్వేరు ఫైల్‌సిస్టమ్‌లలో ఉన్నాయి. /downloads మరియు /tv వంటి రెండు వేర్వేరు bind mounts, ఒకే హోస్ట్ డిస్క్ నుండి వచ్చినప్పటికీ, అవి రెండు వేర్వేరు ఫైల్‌సిస్టమ్‌లుగా పరిగణించబడతాయి. ప్రతి కంటైనర్‌లో ఒకే parent directoryని /data గా మౌంట్ చేసి, అందులోనే downloads మరియు library ఫోల్డర్లను ఉంచితే, అప్పుడు hardlink సాధ్యమవుతుంది. రెండు ఫైళ్లపై stat -c '%i %h %n' కమాండ్ ఉపయోగించి ఫలితాన్ని నిర్ధారించుకోండి: రెండింటికీ ఒకే inode మరియు 2 link count ఉండాలి.

నేను ఏ PUID మరియు PGID ఉపయోగించాలి?

మీడియా ఫైళ్లు ఉన్న డైరెక్టరీకి యజమానిగా ఉన్న హోస్ట్ అకౌంట్ యొక్క numeric id ని ఉపయోగించండి. దీనిని id -u మరియు id -g ద్వారా పొందవచ్చు. కొత్తగా ఇన్‌స్టాల్ చేసిన Ubuntu VPS లో సాధారణంగా రెండింటికీ 1000 ఉంటుంది. స్టాక్‌లోని ప్రతి కంటైనర్ ఒకే జత IDలను ఉపయోగించాలి, లేకపోతే ఒక అప్లికేషన్ రాసిన ఫైళ్లను మరొకటి మార్చలేదు. ఈ విలువలను మార్చిన తర్వాత, docker compose up -d --force-recreate తో కంటైనర్లను రీక్రియేట్ చేయండి మరియు ఇప్పటికే ఉన్న ఫైళ్లను chown -R తో సరిచేయండి.

ఈ వెబ్ ఇంటర్‌ఫేస్‌లను ఇంటర్నెట్‌కు ఎక్స్‌పోజ్ చేయాలా?

అవసరం లేదు, మరియు అలా చేయకూడదు. Compose ఫైల్‌లో ప్రతి published port ను 127.0.0.1 కి bind చేయండి. ఆ తర్వాత SSH tunnel, VPN, లేదా TLS (transport layer security) ను ముగించి, సొంతంగా authentication జోడించే reverse proxy ద్వారా మాత్రమే ఇంటర్‌ఫేస్‌లను యాక్సెస్ చేయండి. వీటిని నేరుగా పబ్లిష్ చేయడం ప్రమాదకరం, ఎందుకంటే Docker తన సొంత firewall నియమాలను జోడిస్తుంది, కాబట్టి ufw deny నియమం ఆ ట్రాఫిక్‌ను ఆపలేదు.

qBittorrent పాస్‌వర్డ్ ఎక్కడ దొరుకుతుంది?

LinuxServer.io ఇమేజ్ తన startup log లో 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