VPS-ல் OpenHands நிறுவுவது எப்படி
OpenHands code-ஐ எழுதுவதுடன் இயக்கவும் செய்கிறது. Docker மூலம் VPS-ல் நிறுவி, Docker socket, Web UI மற்றும் API secrets-ஐ பாதுகாப்பாக அமைப்பது எப்படி என்பதை அறியுங்கள்.
OpenHands என்ன, முதலில் புரிந்துகொள்ள வேண்டிய ஒரே ஆபத்து என்ன
முன்பு OpenDevin என்று அழைக்கப்பட்ட OpenHands, autonomous software-engineering agent ஆகும். இதற்கு plain language-ல் ஒரு task-ஐ வழங்கினால், அது பணியைத் திட்டமிட்டு, code-ஐ எழுதிக், commands-ஐ இயக்கி, output-ஐப் படித்து, task முடியும் வரை தொடர்ந்து மாற்றங்களைச் செய்யும். Docker-ஐப் பயன்படுத்தி இதை உங்கள் சொந்த server-ல் இயக்கி, language model ஒன்றுடன் இணைக்கலாம். VPS-ல் இயக்கும்போது, நீங்கள் இல்லாத நேரத்திலும் செயல்படும் coding agent ஆக இது மாறும்.
உங்கள் முழு setup-ஐ வழிநடத்த வேண்டிய ஒரு முக்கிய உண்மை உள்ளது. OpenHands code-ஐ பரிந்துரைப்பது மட்டுமல்ல; அதை இயக்கவும் செய்கிறது. இதற்காக, ஒவ்வொரு task-க்கும் sandbox containers-ஐ உருவாக்கும் வகையில், அதன் controller container host Docker socket-ஐ /var/run/docker.sock-ல் mount செய்கிறது. Docker socket-உடன் தொடர்புகொள்ளக்கூடிய எதுவும், முழு host filesystem-ஐ mount செய்யும் புதிய container-ஐத் தொடங்க முடியும். இதனால் socket access, அந்த machine-ல் root access-க்கு நடைமுறையில் சமமாகிறது. எனவே OpenHands இயங்கும் server-ஐ untrusted code-ஐ இயக்கும் server-ஆகக் கருதுங்கள். அது உண்மையில் செய்வதும் அதுவே. கீழே உள்ள ஒவ்வொரு hardening தேர்வும் இந்த உண்மையை அடிப்படையாகக் கொண்டது.
தேவையானவை
Ubuntu 24.04 இயங்கும் VPS, சமீபத்திய Docker Engine, குறைந்தது 4 GB RAM, மேலும் ஒரு language model-க்கான API key (OpenAI, Anthropic, அல்லது Google) உங்களிடம் இருக்க வேண்டும். மாற்றாக, அதே VPS-ல் Ollama மூலம் வழங்கப்படும் local model-ஐ பயன்படுத்தலாம். OpenHands பல dozens model backends-ஐ ஆதரிக்கிறது; எனவே தேர்வு உங்களுடையது. இதற்கு முன் containers அமைத்ததில்லை என்றால், VPS-ல் Docker பற்றிய அடிப்படைகள் இந்த guide கருதும் அடிப்படைத் தகவல்களை வழங்குகின்றன.
Docker மூலம் நிறுவுதல்
OpenHands இரண்டு images-ஆக வெளியிடப்படுகிறது: நீங்கள் இயக்கும் application image மற்றும் ஒவ்வொரு task-ன் sandbox-ஐ இயக்க அது 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 இருப்பது திட்டமிட்டதே. எனவே அவற்றை ஒரே version-ஆக மாற்ற முயற்சிக்க வேண்டாம். உங்கள் app version-க்கு documentation-ல் இணைக்கப்பட்டுள்ள agent-server tag-ஐ பயன்படுத்தவும். மேலும், -p 3000:3000-க்கு பதிலாக -p 127.0.0.1:3000:3000 இருப்பதை கவனிக்கவும். நீங்கள் மட்டுமே அணுகக்கூடிய Web UI-க்கும் முழு internet-மும் அணுகக்கூடிய Web UI-க்கும் இடையிலான வேறுபாடு இதுதான். அடுத்த section இதைப் பற்றி விளக்குகிறது.
Public internet-ல் Web UI-ஐ வெளிப்படுத்த வேண்டாம்
OpenHands தனது interface-ஐ port 3000-ல் வழங்குகிறது. அந்த interface code-ஐ இயக்கும் agent-ஐ கட்டுப்படுத்துகிறது. எனவே அதை internet-ல் public செய்வது, கண்டுபிடிக்கும் எவருக்கும் commands-ஐ execute செய்யும் process-க்குள் தொலைநிலை அணுகல் வழியை வழங்குகிறது. மேலே உள்ள run command செய்வது போல, அதை loopback-க்கு bind செய்யவும். பின்னர் SSH tunnel மூலம் உங்கள் laptop-லிருந்து அணுகவும்:
ssh -L 3000:127.0.0.1:3000 you@your-vpsஅதன் பிறகு உங்கள் சொந்த machine-ல் http://127.0.0.1:3000-ஐ திறக்கவும். இந்த traffic உங்கள் ஏற்கனவே உள்ள SSH session வழியாக செல்கிறது. public internet-ல் புதிதாக எந்த port-மும் listening நிலையில் இருக்காது. ஒவ்வொரு agent-க்கும் port தேவையில்லை: அதே VPS-ல் இயங்கும் Claude Code sessions terminal மூலம் ஒன்றுடன் ஒன்று தொடர்புகொள்கின்றன. எனவே நீங்கள் வெளிப்படுத்த வேண்டியது SSH மட்டுமே. நீங்கள் host செய்யும் ஒவ்வொரு agent dashboard-க்கும் இதே loopback-and-tunnel நடைமுறையைப் பயன்படுத்துவது நல்லது; open-kritt-ன் scanning UI-ஐ tunnel மூலம் அணுகுவதும் இதே முறையில்தான் செயல்படும், ஆனால் port 5173-ஐ பயன்படுத்தும். நீண்டகால setup தேவைப்பட்டால், அதற்கு பதிலாக அதை VPN-க்குப் பின்னால் வைக்கவும். எந்த முறையைப் பயன்படுத்தினாலும், எதுவும் தவறுதலாக வெளிப்படாதபடி box-க்கு முன்பாக default-deny firewall அமைக்கவும். IPv4-ஐ மட்டும் உள்ளடக்கும் firewall, IPv6-ல் அதே port-ஐ திறந்த நிலையில் விடும் என்பதை நினைவில் கொள்ளவும். பலரை சிக்கலில் ஆழ்த்தும் பிரச்சினை இதுவே: IPv6 firewall gap.
Model key மற்றும் repository credentials-ஐ தனிமைப்படுத்தவும்
OpenHands-க்கு அதன் model-க்கான API key தேவைப்படும். உங்கள் repositories-ஐ clone செய்து push செய்ய token-மும் பெரும்பாலும் தேவைப்படும். இவை இரண்டும் பணம் செலவழிக்கவும், உங்கள் சார்பில் செயல்படவும் முடியும். எனவே, இவற்றை passwords போலக் கையாளவும். சரியான account மட்டும் படிக்கக்கூடிய environment file-ல் அவற்றை வைத்திருக்கவும். அவற்றை run command-ல் ஒருபோதும் எழுதாதீர்கள்; அவ்வாறு செய்தால் அவை shell history மற்றும் process list-ல் பதிவாகும். git repository-க்குள் உள்ள எந்த file-லும் அவற்றை வைக்காதீர்கள். Originals-ஐ self-hosted password manager-ல் வைத்திருந்தால், அந்த server-ஐயும் harden செய்யவும். ஏனெனில் vault-ன் பலவீனமான பகுதிகள் encrypted items அல்ல; அதன் admin token மற்றும் backup file ஆகும். இதை Vaultwarden hardening செயல்முறை விளக்குகிறது.
நீக்கக்கூடிய server-ல் இயக்கவும்
Controller Docker socket-ஐ வைத்திருக்க வேண்டியதால், OpenHands-ஐ அதன் host-இலிருந்து முழுமையாக sandbox செய்ய முடியாது. நடைமுறைக்கு ஏற்ற பாதுகாப்பு நடவடிக்கை, இடமமைப்பின் மூலம் isolation வழங்குவதாகும். OpenHands-ஐ, நீங்கள் அக்கறை கொள்ளும் வேறு எந்த data அல்லது service-யும் இல்லாத dedicated VPS-ல் இயக்கவும். Database அல்லது website-ஐ இயக்கும் அதே server-ல் அதை இயக்க வேண்டாம். தொடங்குவதற்கு முன் snapshot எடுக்கவும். Agent எழுதிய code-ஐ ஒரு வாரம் இயக்கிய server-ஐ நம்புவதற்குப் பதிலாக, அந்த snapshot-இலிருந்து server-ஐ மீண்டும் உருவாக்கவும். குறைந்த செலவிலான, நீக்கக்கூடிய, ஒரே பயன்பாட்டுக்கான VPS இதற்கு ஏற்ற இடமாகும். இங்கு OpenHands உண்மையில் வழங்கும் ஒரே கட்டுப்பாடு placement மட்டுமே. Agent கேட்க இடைநிறுத்துவதற்கு முன் அது செய்யக்கூடிய செயல்களின் அளவையும் கட்டுப்படுத்த விரும்பினால், Claude Code-ன் permission modes அந்த இரண்டாவது கட்டுப்பாடு எப்படி இருக்கும் என்பதை, யாரும் கண்காணிக்காத server-ல் காட்டுகின்றன.
அதைச் சுற்றிய server-ஐ பாதுகாப்பாக்குங்கள்
மீதமுள்ளவை வழக்கமான server hygiene நடவடிக்கைகள். இந்த workload வழக்கத்தைவிட அதிக risk கொண்டதால், இங்கு அவற்றின் முக்கியத்துவமும் அதிகம். root ஆகச் செயல்படுவதற்குப் பதிலாக, unprivileged user ஆக services-ஐ இயக்குதல் வழிகாட்டுதலைப் பின்பற்றி, privileges இல்லாத admin user-ஐ உருவாக்குங்கள். SSH-ஐ key-only authentication-க்கு மாற்றுங்கள். பின்னர் கீழே உள்ள checklist-ஐ இயக்கி, அதை மீண்டும் பார்க்கக்கூடிய இடத்தில் பாதுகாப்பாக வைத்திருங்கள்.
இந்த நடவடிக்கைகளை வெறுமனே இயக்குவதற்குப் பதிலாக, அவற்றில் உள்ள கூறுகளைப் புரிந்துகொள்ள VPS-ல் உங்கள் சொந்த AI agent-ஐ உருவாக்குதல் என்பதைப் பார்க்கவும். குறைந்த code தேவைப்படும் platform-க்கு, Dify-ஐ self-hosting செய்தல் எளிதான தொடக்கமாக இருக்கும்.
FAQ
OpenHands-ஐ server-ல் இயக்குவது பாதுகாப்பானதா?
கவனமாக அமைத்தால் பாதுகாப்பாக இருக்கலாம். ஆனால் இது சாதாரண web app-ஐ விட அதிக ஆபத்துடையது. காரணம், இது code-ஐ எழுதவும் இயக்கவும் செய்கிறது. மேலும், இதன் controller host Docker socket-ஐ வைத்திருக்கிறது. இது நடைமுறையில் அந்த machine-ன் root கட்டுப்பாட்டுக்கு இணையானது. வேறு மதிப்புமிக்க தரவுகள் இல்லாத, இதற்காக மட்டும் பயன்படுத்தப்படும் disposable VPS-ல் இதை இயக்கவும். அதன் Web UI-ஐ loopback-ல் மட்டும் வைத்திருந்து SSH tunnel அல்லது VPN மூலம் அணுகவும். அதன் keys-ஐ தனிமைப்படுத்தி, அந்த server-ஐ harden செய்யவும். முக்கியமான services-ன் அருகில் இதை இயக்க வேண்டாம்.
OpenHands-க்கு Docker socket ஏன் தேவைப்படுகிறது?
OpenHands ஒவ்வொரு task-ஐயும் புதிய sandbox container-ல் இயக்குகிறது. அந்த containers-ஐ உருவாக்க, அது host Docker daemon-ஐ அணுகுகிறது. இதற்காக /var/run/docker.sock-ஐ அதன் controller-ல் mount செய்கிறது. இதனால் controller container-க்கு host-ல் உள்ள Docker மீது கட்டுப்பாடு கிடைக்கிறது. இது சக்திவாய்ந்ததும் ஆபத்தானதுமாகும். ஆகவே, அந்த host-ல் untrusted code இயங்குகிறது எனக் கருதி அதை நிர்வகிக்க வேண்டும்.
Paid API-க்கு பதிலாக OpenHands-ல் local model பயன்படுத்த முடியுமா?
ஆம். Ollama அல்லது vLLM மூலம் வழங்கப்படும் local models-ஐ OpenHands ஆதரிக்கிறது. எனவே, per-token cost இல்லாமல், தரவு உங்கள் server-ஐ விட்டு வெளியே செல்லாமல், இதை முழுமையாக self-hosted முறையில் இயக்கலாம். திறன் வாய்ந்த coding model-ஐ இயக்குவதற்கு போதுமான memory கொண்ட machine தேவைப்படும். இது Ollama guide-ல் விளக்கப்பட்டுள்ள அதே sizing கேள்வியாகும்.
OpenHands-ஐ எனது main server-ல் இயக்க வேண்டுமா?
வேண்டாம். இது agent உருவாக்கிய code-ஐ இயக்குவதுடன் Docker socket-ஐயும் வைத்திருக்கிறது. ஆகவே, தேவையெனில் rebuild செய்ய நீங்கள் தயாராக இருக்கும் தனியான, ஒரே பயன்பாட்டுக்கான VPS-ல் இதை இயக்கவும். Database, website அல்லது உங்கள் பிற services-உடன் இதை ஒரே server-ல் வைத்தால், agent செய்யும் தவறு அல்லது அதிலுள்ள bug, அது அணுகக் கூடாத வளங்களை அணுகும் நிலை ஏற்படலாம்.