VPSలో OpenHands సెటప్ చేయడం
OpenHands అనేది కోడ్ రాసి అమలు చేసే AI ఏజెంట్. దీన్ని VPSలో Dockerతో ఇన్స్టాల్ చేసి, Web UI మరియు సీక్రెట్స్ భద్రంగా ఉంచే విధానం ఇక్కడ ఉంది.
OpenHands అంటే ఏమిటి, మరియు ముందుగా అర్థం చేసుకోవలసిన ఒకే ఒక్క రిస్క్
OpenHands, పూర్వపు పేరు OpenDevin, అనేది ఒక స్వయంప్రతిపత్తి సాఫ్ట్వేర్ ఇంజనీరింగ్ ఏజెంట్. మీరు దానికి సాధారణ భాషలో ఒక పనిని ఇస్తే, అది పనిని ప్రణాళిక చేస్తుంది, కోడ్ను వ్రాస్తుంది, కమాండ్లను అమలు చేస్తుంది, అవుట్పుట్ను చదువుతుంది మరియు పని పూర్తయ్యే వరకు పునరావృతం చేస్తుంది. మీరు దీన్ని మీ స్వంత సర్వర్లో Dockerతో అమలు చేస్తారు మరియు దాన్ని ఒక భాషా మోడల్ వైపు మళ్లిస్తారు. VPSలో ఇది మీ లేనప్పుడు పని చేసే ఒక కోడింగ్ ఏజెంట్గా మారుతుంది.
ఒక వాస్తవం మీ మొత్తం సెటప్ను నిర్మాణాత్మకంగా మార్చేస్తుంది. OpenHands కేవలం కోడ్ను సూచించదు, అది దాన్ని అమలు చేస్తుంది. అలా చేయడానికి దాని కంట్రోలర్ కంటైనర్, ప్రతి పనికీ సాండ్బాక్స్ కంటైనర్లను సృష్టించడానికి హోస్ట్ Docker సాకెట్ను /var/run/docker.sock వద్ద మౌంట్ చేస్తుంది. Docker సాకెట్తో మాట్లాడగలిగే దేనికైనా మీ మొత్తం హోస్ట్ ఫైల్ సిస్టమ్ను మౌంట్ చేసే కొత్త కంటైనర్ను ప్రారంభించగలదు. దీనర్థం సాకెట్ యాక్సెస్ అనేది ఆ మెషీన్లో వాస్తవానికి root హక్కులతో సమానం. కాబట్టి OpenHands బాక్స్ను నమ్మకమైన కోడ్ను అమలు చేసే సర్వర్గా పరిగణించండి, ఎందుకంటే అది ఖచ్చితంగా అలాగే చేస్తుంది. దిగువ ఉన్న ప్రతి హార్డెనింగ్ ఎంపిక ఈ కారణం నుండి వస్తుంది.
మీకు కావలసినవి
మీకు Ubuntu 24.04 నడుస్తున్న ఒక VPS, ఇటీవలి Docker Engine, కనీసం 4 GB RAM, మరియు ఒక భాషా మోడల్ (OpenAI, Anthropic, లేదా Google) కోసం API కీ అవసరం. లేదంటే అదే VPSలో Ollama ద్వారా అందించబడిన ఒక స్థానిక మోడల్ కావాలి. OpenHands డజన్ల కొద్దీ మోడల్ బ్యాకెండ్లను సపోర్ట్ చేస్తుంది, కాబట్టి ఎంపిక మీదే. మీరు ఇంతకు ముందు కంటైనర్లను సెటప్ చేయనట్లయితే, VPSలో Docker ప్రాథమిక అంశాలు ఈ గైడ్ అనుకుంటున్న నేపథ్యాన్ని అందిస్తాయి.
Dockerతో ఇన్స్టాల్ చేయండి
OpenHands రెండు ఇమేజ్లుగా వస్తుంది: మీరు అమలు చేసే యాప్ ఇమేజ్, మరియు ప్రతి పని యొక్క సాండ్బాక్స్ను నడపడానికి అది పుల్ చేసుకునే ఏజెంట్-సర్వర్ ఇమేజ్. ప్రాజెక్ట్ డాక్స్ నుండి ప్రస్తుత ట్యాగ్లను భర్తీ చేస్తూ, దీన్ని ఇలా అమలు చేయండి:
docker run -it --rm --pull=always \
-e AGENT_SERVER_IMAGE_REPOSITORY=ghcr.io/openhands/agent-server \
-e AGENT_SERVER_IMAGE_TAG=1.26.0-python \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/.openhands \
-p 127.0.0.1:3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands \
docker.openhands.dev/openhands/openhands:1.8రెండు వివరాలు మీకు గంట కన్ఫ్యూజన్ను ఆదా చేస్తాయి. యాప్ ఇమేజ్ మరియు ఏజెంట్-సర్వర్ ఇమేజ్ ఉద్దేశపూర్వకంగా వేర్వేరు వెర్షన్ నంబర్లను కలిగి ఉంటాయి, కాబట్టి వాటిని సరిపోయేలా చేయడానికి ప్రయత్నించకండి: డాక్స్ మీ యాప్ వెర్షన్తో జతపరిచే ఏజెంట్-సర్వర్ ట్యాగ్ను ఉపయోగించండి. మరియు -p 3000:3000 కి బదులుగా -p 127.0.0.1:3000:3000 ని గమనించండి. ఆ ఒక్క మార్పు కేవలం మీరు మాత్రమే చేరుకోగలిగే Web UI కి, మరియు మొత్తం ఇంటర్నెట్ చేరుకోగలిగే Web UI కి మధ్య ఉన్న తేడా, దీని గురించి తదుపరి విభాగంలో ఉంది.
Web UI ని పబ్లిక్ ఇంటర్నెట్ నుండి దూరంగా ఉంచండి
OpenHands దాని ఇంటర్ఫేస్ను పోర్ట్ 3000 లో అందిస్తుంది. ఆ ఇంటర్ఫేస్ కోడ్ను అమలు చేసే ఏజెంట్ను నియంత్రిస్తుంది, కాబట్టి దాన్ని ఇంటర్నెట్కు ప్రచురించడం వల్ల దాన్ని కనుగొనే ఎవరికైనా కమాండ్లను అమలు చేసే ప్రక్రియలోకి దూరంగా ప్రవేశించే మార్గం లభిస్తుంది. పైన ఉన్న రన్ కమాండ్ చేసినట్లుగా దాన్ని లూప్బ్యాక్కి బైండ్ చేయండి, మరియు మీ ల్యాప్టాప్ నుండి SSH టన్నెల్ ద్వారా దానిని చేరుకోండి:
ssh -L 3000:127.0.0.1:3000 you@your-vpsతర్వాత మీ స్వంత మెషీన్లో http://127.0.0.1:3000 ని తెరండి. ట్రాఫిక్ మీ ఇప్పటికే ఉన్న SSH సెషన్ ద్వారా వెళుతుంది, మరియు పబ్లిక్ ఇంటర్నెట్లో కొత్తగా ఏదీ లిజన్ చేయదు. మరింత శాశ్వత సెటప్ కోసం, దాన్ని VPN వెనుక ఉంచండి. ఏ విధంగానైనా, పెట్టె ముందు డిఫాల్ట్-డినై ఫైర్వాల్ను ఉంచండి తద్వారా ప్రమాదవశాత్తూ ఏదీ బయటపడదు. మరియు IPv4 మాత్రమే కవర్ చేసే ఫైర్వాల్ అదే పోర్ట్ను IPv6 లో తెరిచే ఉంచుతుందని గుర్తుంచుకోండి, ఇది చాలా మందిని బాధించే IPv6 ఫైర్వాల్ గ్యాప్.
మోడల్ కీ మరియు ఏ రెపో క్రెడెన్షియల్స్నైనా వేరు చేయండి
OpenHands కు దాని మోడల్ కోసం ఒక API కీ అవసరం, మరియు తరచుగా మీ రిపోజిటరీలను క్లోన్ చేయడానికి మరియు పుష్ చేయడానికి ఒక టోకెన్ అవసరం. రెండూ డబ్బును ఖర్చు చేయగలవు మరియు మీ వలే పని చేయగలవు, కాబట్టి వాటిని పాస్వర్డ్ల మాదిరిగానే చూసుకోండి. వాటిని సరైన ఖాతా మాత్రమే చదివేలా ఒక ఎన్విరాన్మెంట్ ఫైల్లో ఉంచండి. రన్ కమాండ్లో ఎప్పుడూ ఉంచకండి, అక్కడ అవి మీ షెల్ హిస్టరీ మరియు ప్రాసెస్ లిస్ట్లో చేరతాయి. మరియు git రిపోజిటరీ లోపల ఉన్న ఫైల్లో ఎప్పుడూ ఉంచకండి.
మీరు పక్కన పెట్టగలిగే బాక్స్లో దాన్ని అమలు చేయండి
కంట్రోలర్ తప్పనిసరిగా Docker సాకెట్ను పట్టుకోవలసి వస్తుంది కాబట్టి, మీరు OpenHands ను దాని హోస్ట్ నుండి పూర్తిగా సాండ్బాక్స్ చేయలేరు. సరైన నివారణ ప్లేస్మెంట్ ద్వారా వేరుచేయడం: OpenHands ను మీకు పట్టించుకోవలసిన మరేమీ లేని ప్రత్యేక VPS లో అమలు చేయండి, మీ డేటాబేస్ లేదా వెబ్సైట్ను కూడా నడిపే సర్వర్లో కాదు. మీరు ప్రారంభించే ముందు స్నాప్షాట్ తీసుకోండి, మరియు ఒక వారం పాటు ఏజెంట్-రచించిన కోడ్ను అమలు చేసిన బాక్స్ను నమ్మకంతో కాకుండా, ఆ స్నాప్షాట్ నుండి రీబిల్డ్ చేయండి. చౌకమైన, డిస్పోజబుల్, సింగిల్-పర్పస్ VPS దానికి సరైన స్థానం.
దాని చుట్టూ ఉన్న బాక్స్ను హార్డెన్ చేయండి
మిగిలినవన్నీ ప్రామాణిక సర్వర్ హైజీన్, మరియు ఇక్కడ ఇది మామూలుగా ఉన్నదానికంటే ఎక్కువ ముఖ్యం ఎందుకంటే వర్క్లోడ్ మామూలుదానికంటే ప్రమాదకరమైనది. root గా పని చేయకుండా, అన్ప్రివిలేజ్డ్ యూజర్గా సర్వీస్లను అమలు చేయడం పాటిస్తూ ఒక అన్ప్రివిలేజ్డ్ అడ్మిన్ యూజర్ను సృష్టించండి. SSH ని కీ-ఓన్లీ ఆథంటికేషన్కు మార్చండి. తర్వాత దిగువ చెక్లిస్ట్ను అమలు చేయండి మరియు దాన్ని మీరు మళ్లీ చూసే చోట ఉంచుకోండి.
కేవలం అమలు చేయడం కాకుండా మూవింగ్ పార్ట్స్ను అర్థం చేసుకోవడానికి, VPSలో మీ స్వంత AI ఏజెంట్ను బిల్డ్ చేయడం చూడండి; తక్కువ కోడ్ ఉన్న ప్లాట్ఫారమ్ కోసం, Dify ని సెల్ఫ్-హోస్ట్ చేయడం ఒక సులభమైన మార్గం.
FAQ
OpenHands ను సర్వర్లో అమలు చేయడం సురక్షితమేనా?
జాగ్రత్త వహిస్తే అవును, కానీ ఇది సాధారణ వెబ్ యాప్కంటే ప్రమాదకరమైనది ఎందుకంటే ఇది కోడ్ను వ్రాసి అమలు చేస్తుంది మరియు దాని కంట్రోలర్ హోస్ట్ Docker సాకెట్ను పట్టుకుంటుంది, ఇది మెషీన్లో వాస్తవానికి root హక్కులతో సమానం. దాన్ని వేరే విలువైన వాటిని కలిగి ఉండని ప్రత్యేక, డిస్పోజబుల్ VPS లో అమలు చేయండి, దాని Web UI ని SSH టన్నెల్ లేదా VPN వెనుక లూప్బ్యాక్లో ఉంచండి, దాని కీలను వేరు చేయండి, మరియు ఆ బాక్స్ను హార్డెన్ చేయండి. దాన్ని మీ ముఖ్యమైన సర్వీస్ల పక్కన అమలు చేయకండి.
OpenHands కి Docker సాకెట్ ఎందుకు అవసరం?
OpenHands ప్రతి పనినీ కొత్త సాండ్బాక్స్ కంటైనర్లో అమలు చేస్తుంది, మరియు అది ఆ కంటైనర్లను సృష్టించమని హోస్ట్ Docker డెమాన్ను అభ్యర్థిస్తుంది, అందుకోసం /var/run/docker.sock ని దాని కంట్రోలర్లోకి మౌంట్ చేస్తుంది. ఇది కంట్రోలర్ కంటైనర్కు హోస్ట్లోని Docker పై నియంత్రణను ఇస్తుంది, ఇది శక్తివంతమైనది మరియు ప్రమాదకరమైనది, కాబట్టి హోస్ట్ను నమ్మకమైన కోడ్ను అమలు చేసేదిగానే పరిగణించాలి.
OpenHands పెయిడ్ API కి బదులుగా స్థానిక మోడల్ను ఉపయోగించగలదా?
అవును. OpenHands అనేది Ollama లేదా vLLM ద్వారా అందించబడిన స్థానిక మోడల్లను సపోర్ట్ చేస్తుంది, కాబట్టి మీరు దాన్ని పూర్తిగా సెల్ఫ్-హోస్ట్ చేయగలరు, పెర్-టోకెన్ ఖర్చు లేకుండా మరియు మీ సర్వర్ నుండి డేటా బయటకు వెళ్లకుండా. మీకు సమర్థవంతమైన కోడింగ్ మోడల్ను నిల్వ ఉంచడానికి సరిపడా మెమరీ ఉన్న మెషీన్ అవసరం, ఇది Ollama గైడ్లో కవర్ చేసిన అదే సైజింగ్ ప్రశ్న.
నేను OpenHands ను నా ప్రధాన సర్వర్లో అమలు చేయాలా?
వద్దు. ఇది ఏజెంట్-రచించిన కోడ్ను అమలు చేసి, Docker సాకెట్ను పట్టుకున్నందున, దాన్ని మీరు రీబిల్డ్ చేయడానికి సిద్ధంగా ఉన్న ప్రత్యేక, సింగిల్-పర్పస్ VPS లో ఉంచండి. దీన్ని డేటాబేస్, వెబ్సైట్, లేదా మీ ఇతర సర్వీస్లతో పాటు ఉంచడం అనేది ఏజెంట్ చేసిన తప్పు, లేదా దానిలోని బగ్, అది తాకకూడని వాటిని కూడా చేరుకోగలదని అర్థం.