VPS இல் OpenHands ஐ Docker உடன் self-host செய்வது எப்படி
OpenHands குறியீட்டை எழுதி இயக்கும் AI agent. Docker socket அணுகல் root இணையானது, எனவே Web UI மற்றும் secrets ஐ பூட்டுவது கட்டாயம். VPS அமைப்பு வழிமுறை இங்கே.
OpenHands என்றால் என்ன, முதலில் புரிந்துகொள்ள வேண்டிய ஒரே ஆபத்து
OpenHands, முன்பு OpenDevin என்று அழைக்கப்பட்டது, ஒரு தன்னாட்சி மென்பொருள் பொறியியல் முகவர் ஆகும். நீங்கள் எளிய மொழியில் ஒரு பணியைக் கொடுக்கிறீர்கள். அது வேலையைத் திட்டமிடுகிறது, குறியீடு எழுதுகிறது, கட்டளைகளை இயக்குகிறது, வெளியீட்டைப் படிக்கிறது, மேலும் பணி முடியும் வரை செயல்படுகிறது. நீங்கள் இதை உங்கள் சொந்த சேவையகத்தில் Docker உடன் இயக்குகிறீர்கள், மேலும் ஒரு மொழி மாதிரியை நோக்கி செலுத்துகிறீர்கள். ஒரு VPS இல் இது ஒரு நிரலாக்க முகவராக மாறுகிறது, இது நீங்கள் இல்லாதபோது வேலை செய்கிறது.
ஒரு உண்மை உங்கள் முழு அமைப்பையும் வடிவமைக்க வேண்டும். OpenHands குறியீட்டைப் பரிந்துரைப்பது மட்டுமல்லாமல், அதை இயக்கவும் செய்கிறது. அதற்காக அதன் கட்டுப்பாட்டு கொள்கலன் ஒவ்வொரு பணிக்கும் sandbox கொள்கலன்களை உருவாக்குவதற்காக புரவலன் Docker சாக்கெட்டை /var/run/docker.sock இல் ஏற்றுகிறது. Docker சாக்கெட்டுடன் பேசக்கூடிய எதுவும் உங்கள் முழு புரவலன் கோப்பு முறைமையையும் ஏற்றும் ஒரு புதிய கொள்கலனைத் தொடங்கலாம். இதன் பொருள் சாக்கெட் அணுகல் இயந்திரத்தில் நடைமுறையில் root அணுகல் என்பதாகும். எனவே OpenHands பெட்டியை நம்பமுடியாத குறியீட்டை இயக்கும் சேவையகமாகக் கருதுங்கள், ஏனெனில் அது அதைத்தான் செய்கிறது. கீழே உள்ள ஒவ்வொரு பாதுகாப்புத் தேர்வும் இதிலிருந்தே தோன்றுகிறது.
உங்களுக்கு என்ன தேவை
நீங்கள் Ubuntu 24.04 உடன் இயங்கும் ஒரு VPS, சமீபத்திய Docker Engine, குறைந்தது 4 GB RAM மற்றும் ஒரு மொழி மாதிரிக்கான API விசை (OpenAI, Anthropic, அல்லது Google), அல்லது அதே VPS இல் Ollama மூலம் வழங்கப்படும் ஒரு உள்ளக மாதிரி தேவை. OpenHands பல மாதிரி பின்னணிகளை ஆதரிக்கிறது, எனவே தேர்வு உங்களுடையது. நீங்கள் இதற்கு முன்பு கொள்கலன்களை அமைத்ததில்லையென்றால், VPS இல் Docker இன் அடிப்படைகள் இந்த வழிகாட்டி கருதுகிற அளவுக்கு விளக்குகிறது.
Docker உடன் நிறுவவும்
OpenHands இரண்டு படிமங்களாக வருகிறது: நீங்கள் இயக்கும் பயன்பாட்டு படிமம், மற்றும் ஒவ்வொரு பணியின் sandbox ஐ இயக்க இது இழுக்கும் ஒரு agent-server படிமம். திட்டத்தின் ஆவணங்களிலிருந்து தற்போதைய குறிச்சொற்களை மாற்றி, இதை இவ்வாறு இயக்கவும்:
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இரண்டு விவரங்கள் உங்கள் ஒரு மணிநேர குழப்பத்தை மிச்சப்படுத்தும். பயன்பாட்டு படிமம் மற்றும் agent-server படிமம் வேண்டுமென்றே வெவ்வேறு பதிப்பு எண்களைக் கொண்டுள்ளன, எனவே அவற்றை பொருத்த முயற்சிக்க வேண்டாம்: ஆவணங்கள் உங்கள் பயன்பாட்டு பதிப்புடன் இணைக்கும் agent-server குறிச்சொல்லைப் பயன்படுத்தவும். மேலும் -p 3000:3000 க்குப் பதிலாக -p 127.0.0.1:3000:3000 என்பதைக் கவனியுங்கள். இந்த ஒற்றை மாற்றம் உங்களால் மட்டுமே அணுகக்கூடிய Web UI க்கும், முழு இணையத்தாலும் அணுகக்கூடிய Web UI க்கும் உள்ள வேறுபாடு, இதைப் பற்றியது அடுத்த பிரிவு.
Web UI ஐ பொது இணையத்திலிருந்து விலக்கி வையுங்கள்
OpenHands அதன் இடைமுகத்தை port 3000 இல் வழங்குகிறது. அந்த இடைமுகம் குறியீட்டை இயக்கும் ஒரு முகவரை இயக்குகிறது, எனவே அதை இணையத்தில் வெளியிடுவது அதைக் கண்டுபிடிக்கும் எவருக்கும் கட்டளைகளை இயக்கும் செயல்முறைக்குள் ஒரு தொலைதூரப் பாதையைக் கொடுக்கிறது. மேலே உள்ள இயக்கக் கட்டளை செய்வது போல அதை loopback உடன் பிணையுங்கள், மேலும் உங்கள் மடிக்கணினியிலிருந்து SSH சுரங்கப்பாதை வழியாக அதை அணுகவும்:
ssh -L 3000:127.0.0.1:3000 you@your-vpsபின்னர் உங்கள் சொந்த இயந்திரத்தில் http://127.0.0.1:3000 ஐத் திறக்கவும். போக்குவரத்து உங்கள் ஏற்கனவே உள்ள SSH அமர்வு வழியாகச் செல்கிறது, மேலும் பொது இணையத்தில் புதிதாக எதுவும் கேட்கவில்லை. மேலும் நிரந்தரமான அமைப்பிற்கு, அதை VPN க்குப் பின்னால் வைக்கவும். எப்படியிருந்தாலும், எதுவும் தற்செயலாக வெளிப்படாதபடி பெட்டிக்கு முன்னால் ஒரு default-deny ஃபயர்வால் வைக்கவும், மேலும் IPv4 ஐ மட்டுமே உள்ளடக்கிய ஃபயர்வால் அதே port ஐ IPv6 இல் திறந்தே விடுகிறது என்பதை நினைவில் கொள்ளவும், இதுதான் பலரையும் சிக்க வைக்கும் IPv6 ஃபயர்வால் இடைவெளி ஆகும்.
மாதிரி விசை மற்றும் எந்த repo சான்றாணைகளையும் தனிமைப்படுத்தவும்
OpenHands க்கு அதன் மாதிரிக்கு ஒரு API விசை தேவை, மேலும் பெரும்பாலும் உங்கள் repository களை clone செய்து push செய்ய ஒரு டோக்கன் தேவை. இரண்டும் பணத்தைச் செலவழிக்கவும் உங்களைப் போல செயல்படவும் முடியும், எனவே அவற்றை கடவுச்சொற்களைப் போல நடத்தவும். அவற்றை சரியான கணக்கு மட்டுமே படிக்கக்கூடிய ஒரு environment கோப்பில் வைக்கவும், அவை உங்கள் shell வரலாறு மற்றும் செயல்முறை பட்டியலில் இடம்பெறும் இயக்கக் கட்டளையில் ஒருபோதும் வைக்க வேண்டாம், மேலும் ஒரு git repository க்குள் உள்ள கோப்பில் ஒருபோதும் வைக்க வேண்டாம்.
நீங்கள் தூக்கி எறியக்கூடிய ஒரு பெட்டியில் அதை இயக்கவும்
கட்டுப்பாட்டு கொள்கலன் Docker சாக்கெட்டைக் கையாள வேண்டும் என்பதால், நீங்கள் OpenHands ஐ அதன் புரவலனிலிருந்து முழுமையாக sandbox செய்ய முடியாது. நேர்மையான தணிப்பு என்பது இடத்தால் தனிமைப்படுத்துவதாகும்: OpenHands ஐ வேறு எதையும் கவனிக்காத ஒரு பிரத்யேக VPS இல் இயக்கவும், உங்கள் தரவுத்தளம் அல்லது உங்கள் வலைத்தளத்தையும் இயக்கும் சேவையகத்தில் அல்ல. நீங்கள் தொடங்கும் முன் ஒரு ஸ்னாப்ஷாட் எடுக்கவும், மேலும் ஒரு வாரமாக முகவர் எழுதிய குறியீட்டை இயக்கிய பெட்டியை நம்புவதற்குப் பதிலாக அந்த ஸ்னாப்ஷாட்டிலிருந்து மீண்டும் கட்டவும். ஒரு மலிவான, ஒருமுறை பயன்படுத்தக்கூடிய, ஒற்றை நோக்க VPS தான் அதற்குச் சரியான இடம்.
அதைச் சுற்றி பெட்டியைப் பலப்படுத்தவும்
மீதமுள்ளது நிலையான சேவையக சுகாதாரம், மேலும் இது இங்கே வழக்கத்தை விட அதிகமாகக் கவனிக்கப்பட வேண்டும், ஏனெனில் பணிச்சுமை வழக்கத்தை விட அபாயகரமானது. root ஆக வேலை செய்வதற்குப் பதிலாக சிறப்பு இல்லாத பயனராக சேவைகளை இயக்குவது பின்பற்றி, ஒரு சிறப்பு இல்லாத நிர்வாக பயனரை உருவாக்கவும். SSH ஐ விசை மட்டுமே அங்கீகாரத்திற்கு மாற்றவும். பின்னர் கீழே உள்ள சரிபார்ப்பு பட்டியலை இயக்கவும், மேலும் அதை நீங்கள் மீண்டும் பார்ப்பீர்கள் என்ற இடத்தில் வைக்கவும்.
அவற்றை வெறுமனே இயக்குவதற்குப் பதிலாக அசையும் பாகங்களைப் புரிந்துகொள்ள, VPS இல் உங்கள் சொந்த AI முகவரை உருவாக்குவது பார்க்கவும்; குறைந்த குறியீடு கொண்ட தளத்திற்கு, Dify ஐ சுய-ஹோஸ்ட் செய்வது ஒரு மென்மையான அறிமுகம்.
FAQ
OpenHands ஐ ஒரு சேவையகத்தில் இயக்குவது பாதுகாப்பானதா?
கவனமாக இருந்தால் அது இருக்கலாம், ஆனால் இது வழக்கமான வலை பயன்பாட்டை விட ஆபத்தானது, ஏனெனில் இது குறியீட்டை எழுதி இயக்குகிறது மற்றும் இதன் கட்டுப்பாட்டு கொள்கலன் புரவலன் Docker சாக்கெட்டைக் கையாளுகிறது, இது இயந்திரத்தில் நடைமுறையில் root ஆகும். இதை வேறு எதையும் மதிப்புமிக்கதாகக் கொண்டிராத ஒரு பிரத்யேக, ஒருமுறை பயன்படுத்தக்கூடிய VPS இல் இயக்கவும், அதன் Web UI ஐ SSH சுரங்கப்பாதை அல்லது VPN க்குப் பின்னால் loopback இல் வைக்கவும், அதன் விசைகளைத் தனிமைப்படுத்தவும், மேலும் பெட்டியைப் பலப்படுத்தவும். இதை உங்கள் முக்கிய சேவைகளுக்கு அருகில் இயக்க வேண்டாம்.
OpenHands க்கு Docker சாக்கெட் ஏன் தேவை?
OpenHands ஒவ்வொரு பணியையும் ஒரு புதிய sandbox கொள்கலனில் இயக்குகிறது, மேலும் அது /var/run/docker.sock ஐ அதன் கட்டுப்பாட்டு கொள்கலனுக்குள் ஏற்றுவதன் மூலம் அந்த கொள்கலன்களை உருவாக்குமாறு புரவலன் Docker டீமானைக் கேட்கிறது. இது கட்டுப்பாட்டு கொள்கலனுக்கு புரவலனில் Docker மீதான கட்டுப்பாட்டைக் கொடுக்கிறது, இது சக்தி வாய்ந்தது மற்றும் ஆபத்தானது, எனவே புரவலனே நம்பமுடியாத குறியீட்டை இயக்கும் ஒன்றாகக் கருதப்பட வேண்டும்.
OpenHands கட்டண API க்குப் பதிலாக உள்ளக மாதிரியைப் பயன்படுத்த முடியுமா?
ஆம். OpenHands ஆனது Ollama அல்லது vLLM மூலம் வழங்கப்படும் உள்ளக மாதிரிகளை ஆதரிக்கிறது, எனவே நீங்கள் இதை டோக்கனுக்கு கட்டணம் இல்லாமல் மற்றும் உங்கள் சேவையகத்திலிருந்து தரவு வெளியேறாமல் முழுமையாக சுய-ஹோஸ்ட் செய்யப்பட்டதாக இயக்கலாம். உங்களுக்கு ஒரு திறமையான நிரலாக்க மாதிரிக்கு போதுமான நினைவகம் கொண்ட ஒரு இயந்திரம் தேவை, இது Ollama வழிகாட்டியில் உள்ளடக்கப்பட்ட அதே அளவீட்டுக் கேள்வியாகும்.
OpenHands ஐ எனது முதன்மை சேவையகத்தில் இயக்க வேண்டுமா?
இல்லை. இது முகவர் எழுதிய குறியீட்டை இயக்குவதாலும் Docker சாக்கெட்டைக் கையாள்வதாலும், இதை நீங்கள் மீண்டும் கட்டத் தயாராக இருக்கும் ஒரு தனி, ஒற்றை நோக்க VPS இல் வைக்கவும். இதை ஒரு தரவுத்தளம், வலைத்தளம், அல்லது உங்கள் பிற சேவைகளுடன் இணைத்து வைப்பது முகவரின் தவறு, அல்லது அதில் உள்ள பிழை, அது ஒருபோதும் தொடக்கூடாதவற்றைத் தொட்டுச் செல்லும் என்பதாகும்.