SSD Nodes Learn Hosting plans →
मार्गदर्शक Matt Connorद्वारे Matt Connor · अपडेटेड 2026-08-30

VPS वर OpenHands self-host कसे करावे

OpenHands code लिहून आणि चालवून पाहतो. Docker सह VPS वर ते install करा, Web UI सुरक्षित करा आणि Docker socket मुळे मिळणारा root access व secrets लॉक करा.

OpenHands काय आहे आणि प्रथम समजून घेण्यासारखा एक धोका

OpenHands, ज्याला पूर्वी OpenDevin म्हटले जात असे, हा स्वायत्त software-engineering agent आहे. तुम्ही त्याला साध्या भाषेत कार्य देता. तो कामाचे नियोजन करतो, code लिहितो, commands चालवतो, output वाचतो आणि कार्य पूर्ण होईपर्यंत पुढील प्रक्रिया करतो. Docker वापरून तुम्ही तो तुमच्या स्वतःच्या server वर चालवता आणि त्याला language model शी जोडता. VPS वर तो तुम्ही अनुपस्थित असतानाही काम करणारा coding agent बनतो.

तुमच्या संपूर्ण setup चे स्वरूप ठरवणारी एक बाब आहे. OpenHands केवळ code सुचवत नाही; तो code चालवतो. हे करण्यासाठी त्याचा controller container host Docker socket ला /var/run/docker.sock येथे mount करतो, ज्यामुळे तो प्रत्येक कार्यासाठी sandbox containers सुरू करू शकतो. Docker socket शी संवाद साधू शकणारी कोणतीही गोष्ट तुमची संपूर्ण host filesystem mount करणारा नवीन container सुरू करू शकते. याचा अर्थ socket access म्हणजे त्या machine वरील root access होय. त्यामुळे OpenHands च्या server ला untrusted code चालवणारा server समजा, कारण तो नेमके तेच करतो. खालील प्रत्येक hardening निर्णय याच बाबीवर आधारित आहे.

तुम्हाला काय आवश्यक आहे

तुमच्याकडे अलीकडील Docker Engine असलेला Ubuntu 24.04 चालणारा VPS, किमान 4 GB RAM आणि language model साठी API key (OpenAI, Anthropic किंवा Google) असणे आवश्यक आहे. याऐवजी त्याच VPS वर Ollama द्वारे उपलब्ध केलेले local model वापरू शकता. OpenHands अनेक डझन model backends ला support करते, त्यामुळे निवड तुमची आहे. तुम्ही यापूर्वी containers सेट up केले नसतील, तर VPS वर Docker ची मूलभूत माहिती या मार्गदर्शकात गृहीत धरलेली प्राथमिक माहिती देते.

Docker सह स्थापित करा

OpenHands दोन images म्हणून release केले जाते: तुम्ही चालवता ती application image आणि प्रत्येक task चे sandbox चालवण्यासाठी OpenHands pull करते ती agent-server image. Project च्या documentation मधील सध्याचे 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 वापरले जातात. त्यामुळे ते जुळवण्याचा प्रयत्न करू नका. तुमच्या app version सोबत documentation मध्ये दिलेला agent-server tag वापरा. तसेच -p 127.0.0.1:3000:3000 ऐवजी -p 3000:3000 नाही, याकडे लक्ष द्या. या एका बदलामुळे Web UI फक्त तुम्हीच access करू शकता की संपूर्ण internet access करू शकते, यात फरक पडतो. पुढील section मध्ये याच विषयाचे वर्णन आहे.

सार्वजनिक इंटरनेटपासून Web UI दूर ठेवा

OpenHands त्याचा interface port 3000 वर उपलब्ध करून देतो. हा interface code चालवणाऱ्या agent ला नियंत्रित करतो. त्यामुळे तो इंटरनेटवर प्रकाशित केल्यास, तो शोधणाऱ्या कोणालाही commands execute करणाऱ्या process पर्यंत remote प्रवेश मिळतो. वरील run command प्रमाणे त्याला loopback वर bind करा आणि SSH tunnel द्वारे आपल्या laptop वरून त्याचा वापर करा:

ssh -L 3000:127.0.0.1:3000 you@your-vps

त्यानंतर आपल्या मशीनवर http://127.0.0.1:3000 उघडा. हा traffic आपल्या विद्यमान SSH session मधून जातो आणि सार्वजनिक इंटरनेटवर कोणतेही नवीन listener सुरू होत नाही. प्रत्येक agent साठी port आवश्यक नसतो: त्याच VPS वरील Claude Code sessions terminal द्वारे एकमेकांशी संदेशवहन करतात, त्यामुळे आपण प्रत्यक्षात फक्त SSH expose करता. आपण host करत असलेल्या प्रत्येक agent dashboard साठी हीच loopback-and-tunnel पद्धत वापरणे योग्य आहे; open-kritt च्या scanning UI पर्यंत tunnel द्वारे पोहोचणे याच प्रकारे कार्य करते, फक्त port 5173 वर. अधिक कायमस्वरूपी setup साठी त्याला VPN मागे ठेवा. कोणतीही पद्धत वापरली तरी box च्या पुढे default-deny firewall ठेवा, जेणेकरून काहीही चुकून expose होणार नाही. तसेच, फक्त IPv4 कव्हर करणारा firewall IPv6 वर तोच port उघडा ठेवतो, आणि हीच IPv6 firewall gap अनेकांच्या लक्षात येत नाही.

मॉडेल key आणि repository credentials वेगळे ठेवा

OpenHands ला त्याच्या मॉडेलसाठी API key आणि अनेकदा repositories clone व push करण्यासाठी token आवश्यक असतो. या दोन्हींमधून खर्च होऊ शकतो आणि ते तुमच्या वतीने कृती करू शकतात. त्यामुळे त्यांना passwords प्रमाणे हाताळा. ही माहिती फक्त योग्य account वाचू शकेल अशा environment file मध्ये ठेवा. ती run command मध्ये ठेवू नका, कारण तेथे ती shell history आणि process list मध्ये दिसू शकते. तसेच ती git repository मधील कोणत्याही file मध्ये ठेवू नका. मूळ credentials self-hosted password manager मध्ये ठेवत असल्यास तो server देखील सुरक्षित करा. कारण vault मधील कमकुवत दुवे encrypted items नसून त्याचा admin token आणि backup file असतात. Vaultwarden hardening प्रक्रिया याच बाबी स्पष्ट करते.

फेकून देता येईल अशा सर्व्हरवर चालवा

Controller कडे Docker socket असणे आवश्यक असल्यामुळे OpenHands ला त्याच्या host पासून पूर्णपणे sandbox करता येत नाही. यासाठी व्यवहार्य उपाय म्हणजे स्थाननिहाय isolation: OpenHands स्वतंत्र VPS वर चालवा. त्या VPS वर आपल्याला आवश्यक असलेली इतर कोणतीही सेवा ठेवू नका. Database किंवा website चालवणाऱ्या सर्व्हरवर OpenHands चालवू नका. सुरू करण्यापूर्वी snapshot घ्या. agent ने लिहिलेला code एक आठवडा चालवलेल्या box वर विश्वास ठेवण्याऐवजी त्या snapshot मधून पुन्हा build करा. स्वस्त, सहज बदलून टाकता येणारा आणि एका कामासाठी वापरलेला VPS हे यासाठी योग्य ठिकाण आहे. येथे OpenHands प्रत्यक्षात फक्त placement चा पर्याय देते. Agent ने थांबून परवानगी मागण्यापूर्वी तो किती काम करू शकतो हेही नियंत्रित करायचे असल्यास, कोणीही निरीक्षण करत नसलेल्या server वर दुसरा नियंत्रण-पर्याय कसा दिसतो हे Claude Code च्या permission modes मध्ये पाहा.

याभोवतीचा सर्व्हर सुरक्षित करा

उर्वरित बाबी सर्वसाधारण server hygiene च्या आहेत. मात्र येथे त्या नेहमीपेक्षा अधिक महत्त्वाच्या आहेत, कारण हे workload नेहमीपेक्षा अधिक जोखमीचे आहे. root म्हणून काम करण्याऐवजी unprivileged admin user तयार करा. त्यासाठी unprivileged user म्हणून सेवा चालवणे हे मार्गदर्शन अनुसरा. SSH मध्ये केवळ key-based authentication वापरा. त्यानंतर खालील checklist चालवा आणि ती पुन्हा दिसेल अशा ठिकाणी जतन करा.

ToolVPS hardening checklist

ही साधने केवळ चालवण्याऐवजी त्यामागील घटक समजून घ्यायचे असल्यास VPS वर स्वतःचा AI agent तयार करणे पहा. कमी-code प्लॅटफॉर्मसाठी Dify self-host करणे हा अधिक सोपा प्रारंभबिंदू आहे.

FAQ

OpenHands सर्व्हरवर चालवणे सुरक्षित आहे का?

काळजी घेतल्यास ते सुरक्षित असू शकते. मात्र, सामान्य web app च्या तुलनेत ते अधिक जोखमीचे आहे. OpenHands code लिहिते आणि चालवते. त्याच्या controller कडे host Docker socket असतो. हा socket मशीनवरील root इतकाच शक्तिशाली असतो. OpenHands अशा dedicated, disposable VPS वर चालवा ज्यावर इतर कोणतीही महत्त्वाची माहिती नसेल. त्याचा Web UI loopback वरच ठेवा आणि SSH tunnel किंवा VPN मागे सुरक्षित करा. त्याच्या keys वेगळ्या ठेवा आणि मशीनचे hardening करा. ते तुमच्या महत्त्वाच्या सेवांसोबत चालवू नका.

OpenHands ला Docker socket ची गरज का असते?

OpenHands प्रत्येक task स्वतंत्र नवीन sandbox container मध्ये चालवते. हे container तयार करण्यासाठी ते host Docker daemon ला विनंती करते. त्यासाठी /var/run/docker.sock controller मध्ये mount केले जाते. त्यामुळे controller container ला host वरील Docker नियंत्रित करता येते. ही क्षमता शक्तिशाली असून जोखमीची आहे. म्हणून host वर untrusted code चालते असेच गृहीत धरले पाहिजे.

होय. OpenHands Ollama किंवा vLLM द्वारे उपलब्ध केलेले local models वापरते. त्यामुळे ते पूर्णपणे self-hosted पद्धतीने चालवता येते. Per-token खर्च येत नाही आणि data तुमच्या server बाहेर जात नाही. सक्षम coding model चालवण्यासाठी पुरेशी memory असलेले मशीन आवश्यक आहे. हा sizing चा तोच प्रश्न आहे जो Ollama guide मध्ये स्पष्ट केला आहे.

OpenHands माझ्या मुख्य server वर चालवावे का?

नाही. OpenHands agent ने तयार केलेले code चालवते आणि Docker socket वापरते. त्यामुळे ते स्वतंत्र, single-purpose VPS वर ठेवा आणि आवश्यक असल्यास तो VPS पुन्हा तयार करता येईल अशी तयारी ठेवा. ते database, website किंवा इतर सेवांसोबत एकाच server वर ठेवल्यास agent ची चूक किंवा त्यातील bug अशा संसाधनांपर्यंत पोहोचू शकतो ज्यांना त्याचा स्पर्श होणे अपेक्षित नव्हते.