VPS वर OpenHands कसे इंस्टॉल करावे
Docker वापरून VPS वर OpenHands सेटअप करण्याची पद्धत शिका. Docker socket मुळे येणारे सुरक्षा धोके टाळण्यासाठी सर्व आवश्यक hardening स्टेप्स येथे पाहा.
OpenHands म्हणजे काय आणि प्रथम समजून घेण्यासारखी एक जोखीम
OpenHands (पूर्वीचे OpenDevin) हा एक autonomous software-engineering agent आहे. तुम्ही त्याला साध्या भाषेत एखादे कार्य देता आणि तो कामाचे नियोजन करतो, कोड लिहितो, commands चालवतो, output वाचतो आणि कार्य पूर्ण होईपर्यंत प्रक्रिया पुन्हा पुन्हा करतो. तुम्ही ते तुमच्या स्वतःच्या server वर Docker वापरून चालवू शकता आणि त्याला एखाद्या language model कडे निर्देशित करू शकता. VPS वर, ते एक coding agent बनते जे तुम्ही अनुपस्थित असतानाही काम करते.
एक तथ्य तुमच्या संपूर्ण setup साठी महत्त्वाचे आहे. OpenHands फक्त कोड सुचवत नाही, तर तो रन देखील करतो; आणि हे करण्यासाठी त्याचे controller container host Docker socket /var/run/docker.sock वर mount करते, जेणेकरून ते प्रत्येक task साठी sandbox containers तयार करू शकेल. Docker socket शी संवाद साधू शकणारी कोणतीही गोष्ट तुमच्या संपूर्ण host filesystem ला mount करणारा नवीन container सुरू करू शकते, याचा अर्थ socket access म्हणजे मशीनवर प्रभावीपणे root अधिकार आहेत. म्हणून OpenHands box ला अशा server प्रमाणे treat करा जे untrusted code चालवते, कारण ते नक्की तेच करते. खालील सर्व hardening निवडी याच कारणास्तव आहेत.
तुम्हाला कशाची आवश्यकता आहे
तुम्हाला Ubuntu 24.04 चालवणाऱ्या VPS ची आवश्यकता आहे ज्यामध्ये अलीकडील Docker Engine, किमान 4 GB RAM आणि language model (OpenAI, Anthropic, किंवा Google) साठी API key, किंवा Ollama on the same VPS द्वारे सर्व्ह केले जाणारे local model आवश्यक आहे. OpenHands अनेक model backends ला सपोर्ट करते, त्यामुळे निवड तुमची आहे. जर तुम्ही यापूर्वी कधीही containers सेटअप केले नसतील, तर या guide मध्ये गृहीत धरलेले the basics of Docker on a VPS वाचा.
Docker सह इंस्टॉल करा
OpenHands दोन images म्हणून येते: तुम्ही चालवण्याची application image, आणि प्रत्येक task च्या sandbox साठी ते pull करत असलेली agent-server image. खालीलप्रमाणे चालवा, प्रोजेक्टच्या docs मधील सध्याचे tags वापरून:
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दोन तपशील तुमचा एक तासाचा गोंधळ वाचवू शकतात. App image आणि agent-server image चे version numbers जाणीवपूर्वक वेगळे असतात, त्यामुळे ते सारखे करण्याचा प्रयत्न करू नका: docs मध्ये तुमच्या app version सोबत दिलेले agent-server tag वापरा. आणि -p 3000:3000 ऐवजी -p 127.0.0.1:3000:3000 कडे लक्ष द्या. हा एक बदल Web UI फक्त तुमच्यासाठी उपलब्ध असणे आणि संपूर्ण इंटरनेटसाठी उपलब्ध असणे यातील फरक आहे, ज्याबद्दल पुढील section मध्ये माहिती दिली आहे.
Web UI सार्वजनिक इंटरनेटपासून दूर ठेवा
OpenHands port 3000 वर आपले interface सर्व्ह करते. ते interface अशा agent ला चालवते जो code रन करतो, त्यामुळे ते इंटरनेटवर प्रकाशित करणे म्हणजे कोणालाही रिमोट पाथ देणे आहे, ज्यामुळे ते commands execute करणाऱ्या प्रक्रियेत प्रवेश करू शकतात. वर दिलेल्या run command प्रमाणे ते loopback ला bind करा आणि SSH tunnel द्वारे तुमच्या laptop वरून ते एक्सेस करा:
ssh -L 3000:127.0.0.1:3000 you@your-vpsत्यानंतर तुमच्या स्वतःच्या मशीनवर http://127.0.0.1:3000 उघडा. ट्रॅफिक तुमच्या अस्तित्वात असलेल्या SSH session द्वारे जाते आणि सार्वजनिक इंटरनेटवर काहीही नवीन listen होत नाही. अधिक कायमस्वरूपी setup साठी, त्याऐवजी VPN वापरा. कोणत्याही परिस्थितीत, box च्या समोर default-deny firewall ठेवा जेणेकरून चुकून काहीही expose होणार नाही, आणि लक्षात ठेवा की फक्त IPv4 कव्हर करणारा firewall IPv6 वर तोच port उघडा ठेवतो, जो IPv6 firewall gap आहे ज्यामध्ये अनेक लोक अडकतात.
Model key आणि कोणत्याही repo credentials वेगळे ठेवा
OpenHands ला त्याच्या model साठी API key आणि अनेकदा तुमच्या repositories clone आणि push करण्यासाठी token ची आवश्यकता असते. दोन्ही गोष्टी पैसे खर्च करू शकतात आणि तुमच्या नावाने काम करू शकतात, म्हणून त्यांना passwords प्रमाणे treat करा. त्यांना अशा environment file मध्ये ठेवा जो फक्त योग्य account वाचू शकते, कधीही run command मध्ये ठेवू नका कारण ते तुमच्या shell history आणि process list मध्ये येतात, आणि कधीही git repository मधील file मध्ये ठेवू नका.
अशा box वर चालवा जो तुम्ही फेकून देऊ शकता
Controller ला Docker socket धारण करणे आवश्यक असल्यामुळे, तुम्ही OpenHands ला त्याच्या host पासून पूर्णपणे sandbox करू शकत नाही. खरे mitigation म्हणजे 'isolation by placement': OpenHands एका समर्पित VPS वर चालवा ज्यामध्ये तुम्हाला महत्त्वाचे असे इतर काहीही नाही, अशा server वर नाही जिथे तुमचे database किंवा तुमची website देखील चालते. सुरू करण्यापूर्वी snapshot घ्या, आणि एक आठवडा agent-authored code चालवलेल्या box वर विश्वास ठेवण्याऐवजी त्या snapshot मधून पुन्हा rebuild करा. स्वस्त, विल्हेवाट लावण्यायोग्य (disposable), single-purpose VPS हे त्याच्यासाठी योग्य घर आहे.
त्याच्याभोवती box harden करा
बाकी सर्व standard server hygiene आहे, आणि येथे ते नेहमीपेक्षा जास्त महत्त्वाचे आहे कारण workload नेहमीपेक्षा अधिक जोखमीचे आहे. root म्हणून काम करण्याऐवजी running services as an unprivileged user चे अनुसरण करून एक unprivileged admin user तयार करा. SSH ला key-only authentication वर हलवा. त्यानंतर खालील checklist चालवा आणि ती अशा ठिकाणी ठेवा जिथे तुम्हाला ती पुन्हा दिसेल.
केवळ चालवण्याऐवजी घटक समजून घेण्यासाठी, building your own AI agent on a VPS पहा; कमी-कोड प्लॅटफॉर्मसाठी, self-hosting Dify हा एक सोपा मार्ग आहे.
FAQ
Server वर OpenHands चालवणे सुरक्षित आहे का?
काळजीपूर्वक केल्यास ते असू शकते, परंतु ते सामान्य web app पेक्षा अधिक जोखमीचे आहे कारण ते code लिहितो आणि रन करते आणि त्याच्या controller कडे host Docker socket असतो, जो मशीनवर प्रभावीपणे root आहे. ते एका समर्पित, disposable VPS वर चालवा ज्यामध्ये इतर कोणतेही मौल्यवान घटक नाहीत, त्याचे Web UI SSH tunnel किंवा VPN च्या मागे loopback वर ठेवा, त्याच्या keys वेगळ्या ठेवा आणि box harden करा. ते तुमच्या महत्त्वाच्या services सोबत चालवू नका.
OpenHands ला Docker socket ची गरज का आहे?
OpenHands प्रत्येक task एका नवीन sandbox container मध्ये चालवते, आणि ते host Docker daemon ला /var/run/docker.sock त्याच्या controller मध्ये mount करून ते containers तयार करण्यास सांगते. यामुळे controller container ला host वरील Docker वर नियंत्रण मिळते, जे शक्तिशाली आणि जोखमीचे आहे, म्हणून host ला स्वतः एक untrusted code चालवणारा म्हणून treat केले पाहिजे.
OpenHands सशुल्क API ऐवजी local model वापरू शकते का?
हो. OpenHands Ollama किंवा vLLM द्वारे सर्व्ह केलेल्या local models ला सपोर्ट करते, त्यामुळे तुम्ही कोणताही per-token खर्च न करता आणि तुमचा डेटा तुमच्या server च्या बाहेर न जाता ते पूर्णपणे self-hosted पद्धतीने चालवू शकता. तुम्हाला सक्षम coding model साठी पुरेसा memory असलेला machine आवश्यक आहे, जो Ollama guide मध्ये कव्हर केलेला तोच sizing प्रश्न आहे.
मी माझ्या मुख्य server वर OpenHands चालवले पाहिजे का?
नाही. कारण ते agent-authored code चालवते आणि Docker socket धारण करते, म्हणून ते वेगळ्या, single-purpose VPS वर ठेवा जो तुम्ही rebuild करण्यास तयार आहात. ते database, website किंवा तुमच्या इतर services सोबत चालवणे म्हणजे agent ची चूक किंवा त्यातील bug अशा गोष्टींपर्यंत पोहोचू शकतो ज्यांना स्पर्श करण्याचा त्याला कधीही उद्देश नव्हता.