VPS-ல் Docker Compose மூலம் Dify-ஐ நிறுவுவது எப்படி?
Dify-ஐ இயக்க 4 GB RAM அவசியம். ஆறு Docker containers-ஐ தொடங்கும் முன் .env கோப்பில் உள்ள ரகசியங்களை மாற்றவும். அந்நியர்கள் அணுகாதவாறு /install பக்கத்தில் உடனே admin கணக்கை உருவாக்கவும்.
Dify என்றால் என்ன மற்றும் நீங்கள் எதை இயக்கப் போகிறீர்கள்
Dify என்பது பெரிய மொழி மாதிரிகளை (LLM) அடிப்படையாகக் கொண்டு பயன்பாடுகளை உருவாக்குவதற்கான ஒரு self-hostable தளமாகும். இதில் chat apps, agents மற்றும் retrieval pipelines ஆகியவற்றை வடிவமைக்க ஒரு web interface உள்ளது. உங்கள் சொந்த code-லிருந்து இவற்றை அழைக்க ஒரு API உள்ளது. மேலும், prompts, datasets மற்றும் model keys ஆகியவற்றை நிர்வகிக்க ஒரே இடத்தையும் இது வழங்குகிறது. சிறிய குழுக்கள் தங்கள் API keys-ஐ பல்வேறு scripts-ல் சிதறவிடாமல், அனைவருமே ஒரு பகிரப்பட்ட தனிப்பட்ட தளத்தில் உருவாக்க இது உதவும் ஒரு கருவியாகும். agent, tool call மற்றும் retrieval pipeline போன்ற சொற்கள் உங்களுக்குப் புதியதாக இருந்தால், முதலில் அந்தக் கருத்துகளை அடிப்படையிலிருந்து கற்றுக்கொள்வது Dify-ன் builder திரைகளை எளிதாகப் புரிந்துகொள்ள உதவும்.
இதை நீங்களே இயக்குவது என்பது பல பகுதிகளை நிர்வகிப்பதாகும். Dify ஒரு Docker containers தொகுப்பாக வழங்கப்படுகிறது: ஒரு API server, ஒரு background worker, ஒரு web frontend, ஒரு Postgres database, ஒரு Redis cache மற்றும் ஒரு vector database. இவை அனைத்தும் Docker Compose மூலம் இணைக்கப்பட்டுள்ளன. இது ஒரு ஒற்றை binary கோப்பை விட பெரியது, ஆனால் Compose இந்த இணைப்புகளைக் கையாளுகிறது. சில gigabytes RAM கொண்ட ஒரு VPS-ல் இதைச் சிறப்பாக இயக்கலாம். அந்த VPS-ல் வேறு ஏதேனும் மென்பொருள்களை இயக்கினால், விளம்பரப்படுத்தப்பட்ட அளவுகளை விட உண்மையான பயன்பாட்டு அளவுகளைக் கணக்கிட்டு VPS-ஐத் தேர்வு செய்யவும். ஏனெனில் PhotoPrism மற்றும் Immich ஆகியவற்றின் உண்மையான RAM தேவை அவற்றின் குறைந்தபட்ச தேவையை விட அதிகமாக இருக்கும். ஒரு photo server அதே கணினியில் இருந்தால், அது Dify-ன் database மற்றும் vector store-ன் வளங்களை முதலில் பாதிக்கும். CPU பயன்பாடும் இதே போன்றது: Jellyfin போன்ற சேவைகள் சாதாரணமாக இயங்கும்போது குறைந்த வளங்களையே பயன்படுத்தும், ஆனால் transcode செய்யத் தொடங்கும்போது Dify-ன் worker queues தாமதமாகும். Dify-ன் நன்மை என்னவென்றால், நீங்கள் எத்தனை பயன்பாடுகளை உருவாக்கினாலும் அதன் container எண்ணிக்கை மாறாது. இது ஒவ்வொரு AI பணியாளருக்கும் தனித்தனி container தேவைப்படும் OpenBot போன்ற அமைப்புகளை விட குறைவான வளங்களையே பயன்படுத்துகிறது.
Dify உங்கள் model API keys மற்றும் நீங்கள் பதிவேற்றிய தனிப்பட்ட ஆவணங்களைக் கையாளுவதால், அது இயங்கும் கணினியை முதல் நிமிடத்திலிருந்தே பாதுகாப்பாகக் கருத வேண்டும். இந்த வழிகாட்டி Dify-ஐ நிறுவுவதோடு, ரகசியத் தகவல்களைக் கையாளும் எந்தவொரு சேவையையும் பாதுகாப்பது போலவே இதையும் பாதுகாப்பாக மாற்றும் முறைகளை விளக்குகிறது.
முன்நிபந்தனைகள்
Ubuntu 24.04 இயங்கும் VPS, அதில் Docker மற்றும் Docker Compose plugin நிறுவப்பட்டிருக்க வேண்டும். மேலும், sudo வசதி கொண்ட பயனர் அல்லது docker குழுவில் உள்ள பயனர் கணக்கு அவசியம். உங்களுக்கு Docker புதியது என்றால், VPS-ல் Docker Compose-ன் அடிப்படை அம்சங்கள் என்ற கட்டுரை, இந்த வழிகாட்டிக்குத் தேவையான நிறுவல் மற்றும் முக்கிய கட்டளைகளை விளக்குகிறது. உங்கள் server-க்கு ஒரு domain name-ஐ இணைத்து வைத்திருப்பது நல்லது; ஏனெனில், வெறும் IP முகவரியைப் பயன்படுத்துவதை விட, Dify-க்கு முன்னால் TLS-ஐப் பயன்படுத்துவதே பாதுகாப்பானது.
படி 1: Dify மற்றும் அதன் Compose கோப்புகளைப் பெறுதல்
Dify தனது Docker அமைப்பை முதன்மை repository-ல் வைத்திருக்கிறது. அதை clone செய்து docker directory-க்குள் செல்லவும்:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env.env கோப்புதான் முழுமையான configuration ஆகும். எதையும் தொடங்கும் முன் இதைப் படிக்கவும். கடவுச்சொற்கள் மற்றும் ரகசியங்களை (secrets) அமைக்கும் மதிப்புகளே முதலில் முக்கியமானவை: SECRET_KEY, Postgres கடவுச்சொல் மற்றும் Redis கடவுச்சொல். உதாரணக் கோப்பு placeholder மதிப்புகளுடன் வருகிறது; அவற்றை அப்படியே விட்டுவிடுவது, self-hosted Dify பாதுகாப்பை இழப்பதற்கு மிக முக்கியமான காரணமாகிறது. ஒரு உண்மையான secret key-ஐ உருவாக்கவும்:
openssl rand -base64 42அதை SECRET_KEY கோப்பில் ஒட்டவும், மேலும் கோப்பில் உள்ள ஒவ்வொரு கடவுச்சொல் புலத்திற்கும் வலுவான, தனித்துவமான மதிப்பை அமைக்கவும்.
படி 2: தொடங்குதல்
Stack-ஐ இயக்கவும்:
docker compose up -dமுதல் முறை இயக்கும்போது பல images-ஐ download செய்து database-ஐ initialize செய்யும், எனவே ஒரு நிமிடம் காத்திருக்கவும். Containers ஆரோக்கியமாக உள்ளதா எனச் சரிபார்க்கவும்:
docker compose psஒவ்வொரு service-ம் running என்று காட்ட வேண்டும். Dify அதன் web interface-ஐ இயல்பாக port 80-ல் உள்ள ஒரு bundled nginx container மூலம் வழங்குகிறது. நீங்கள் முதல்முறை http://YOUR_SERVER/install-க்குச் செல்லும்போது admin account-ஐ உருவாக்க வேண்டும். வேறு யாரும் அந்த port-ஐ அணுகுவதற்கு முன்பே இதைச் செய்துவிடவும், ஏனெனில் அந்த account உருவாக்கப்படும் வரை, அந்தப் பக்கத்தை அணுகும் எவரும் அதைத் தங்கள் கட்டுப்பாட்டில் எடுத்துக்கொள்ள முடியும்.
படி 3: சேவையை நேரடியாக வெளிப்படுத்த வேண்டாம். TLS மற்றும் firewall-ஐ முன்னால் அமைக்கவும்
பெரும்பாலான விரைவான நிறுவல்கள் இத்துடன் முடிந்துவிடுகின்றன, பெரும்பாலான பாதுகாப்புச் சிக்கல்கள் இங்கிருந்தே தொடங்குகின்றன. Dify-ன் சொந்த nginx, அனைத்து interface-களிலும் port 80-ல், எந்தவிதமான குறியாக்கமும் இன்றி (clear text) இயங்குகிறது. உங்கள் admin login மற்றும் model keys ஆகியவை plain HTTP மூலம் செல்வதை நீங்கள் விரும்பமாட்டீர்கள்; மேலும், உள்நாட்டுச் சேவைகள் (internal services) வெளியிலிருந்து அணுகக்கூடியதாக இருப்பதையும் நீங்கள் விரும்பமாட்டீர்கள்.
SSH மற்றும் web traffic-ஐ மட்டும் அனுமதிக்கும் default-deny firewall மூலம் server-ஐப் பாதுகாக்கவும்:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableIPv4-ஐ மட்டும் உள்ளடக்கும் firewall, IPv6-ல் அதே ports-ஐத் திறந்து வைத்திருக்கக்கூடும் என்பதை நினைவில் கொள்க. இது பல self-hosters-களைப் பாதிக்கும் IPv6 firewall gap ஆகும். இரண்டு stack-களும் வடிகட்டப்படுவதை உறுதி செய்யவும்.
TLS-க்கு, Dify-ன் web port-ஐ loopback-ல் இணைத்து, அதன் முன்னால் Let's Encrypt certificate கொண்ட reverse proxy-ஐ இயக்குவதே சிறந்த வழியாகும். இதன் மூலம் பொது இணையத்தில் HTTPS-ஐப் பேசும் proxy மட்டுமே இருக்கும். Dify-ன் .env மூலம் நீங்கள் வெளிப்படுத்தும் port-ஐ மாற்றலாம்; அதை 127.0.0.1-ல் bind செய்யுமாறு அமைத்து, உங்கள் proxy-ஐ அதற்குச் சுட்டிக்காட்டவும். running an AI agent safely on a VPS-ல் உள்ள agent-hardening ஆலோசனைகள் இதற்கும் பொருந்தும்: இயங்கும் பகுதிகளை loopback-ல் வைத்திருக்கவும், பொதுவெளியில் இருக்க வேண்டியவற்றை மட்டும் வெளிப்படுத்தவும், பாதுகாப்பான ஒரு நுழைவாயிலை TLS-ஐக் கையாள அனுமதிக்கவும். ஒரு கருவியின் interface உங்களுக்கு மட்டுமே தேவைப்பட்டு, அதற்கு certificate தேவையில்லை என்றால், proxy-ஐத் தவிர்த்துவிட்டு SSH tunnel மூலம் அதை அணுகவும். self-hosting the open-kritt security scanner தனது dashboard-ஐ loopback-ல் வைத்து, அதை உங்கள் laptop-க்கு forward செய்வது போல இதையும் செய்யலாம். ஒரு முழு குழுவிற்கும் Dify தேவைப்பட்டு, பொது இணையத்திற்குத் தேவையில்லை என்றால், overlay network இந்த முறையை ஒரு laptop-க்கு அப்பால் விரிவுபடுத்தும்: advertising the server's private subnet to your tailnet மூலம், அங்கீகரிக்கப்பட்ட ஒவ்வொரு சாதனமும் private address வழியாக builder-ஐ அணுக முடியும், அதே நேரத்தில் firewall SSH-ஐத் தவிர மற்ற அனைத்தையும் தடுத்து வைத்திருக்கும். நீங்கள் இந்த server-ஐ கைமுறையாக நிர்வகிக்காமல் coding agent மூலம் நிர்வகித்தால், அதற்கு அதிகாரம் வழங்குவதற்கு முன் அது எவ்வளவு தூரம் தன்னிச்சையாகச் செயல்படலாம் என்பதை முடிவு செய்யுங்கள். ஏனெனில் the permission mode you leave Claude Code in, அது .env-ஐ மாற்றியமைக்கும் முன் அல்லது stack-ஐ restart செய்யும் முன் உங்களிடம் அனுமதி கேட்க வேண்டுமா என்பதைத் தீர்மானிக்கிறது. ஒரு session-ல் container logs-ஐப் பார்த்துக் கொண்டே, மற்றொரு session-ல் proxy config-ஐத் திருத்தினால், those two sessions can pass text to each other on the same box. இது ஒவ்வொரு முறை stack-ஐ restart செய்யும்போதும் terminal-களுக்கு இடையே output-ஐ நகலெடுப்பதை விடச் சிறந்ததாகும்.
படி 4: மென்பொருளைப் புதுப்பித்தல்
Dify வேகமாக மேம்படுத்தப்பட்டு வருகிறது, மேலும் அதன் புதிய பதிப்புகள் பாதுகாப்புத் திருத்தங்களை உள்ளடக்கியுள்ளன. docker கோப்பகத்திலிருந்து (directory) pull செய்து, மீண்டும் தொடங்குவதன் மூலம் மென்பொருளைப் புதுப்பிக்கலாம்:
git pull
docker compose pull
docker compose up -dமுக்கியமான பதிப்பு மாற்றங்களுக்கு (major version jump) முன்னதாக release notes-ஐப் படிக்கவும். ஏனெனில், பதிப்புகளுக்கு இடையே Dify அவ்வப்போது .env schema-வை மாற்றுகிறது. நீங்கள் அமைக்காத ஒரு புதிய variable காரணமாக container தொடங்காமல் போகலாம்.
படி 5: மீண்டும் உருவாக்க முடியாதவற்றை காப்புப்பிரதி (Backup) எடுத்தல்
Dify server-ல் இரண்டு விஷயங்களை மாற்றீடு செய்ய முடியாது: ஒன்று, உங்கள் apps, users மற்றும் settings-ஐக் கொண்ட Postgres database; மற்றொன்று, பதிவேற்றப்பட்ட ஆவணங்கள் மற்றும் vector index-ஐச் சேமிக்கும் volume. இவை இரண்டும் docker கோப்பகத்தில் உள்ள Docker volumes-ல் உள்ளன. இவற்றை ஒரு கால அட்டவணையின்படி snapshot எடுத்து, அந்த snapshot-களை server-க்கு வெளியே நகலெடுக்கவும். இந்த snapshot-கள் ஒவ்வொரு model key மற்றும் பதிவேற்றப்பட்ட ஆவணங்களையும் ஒரே கோப்பில் வைத்திருக்கும். எனவே, இவை server-ஐ விட்டு வெளியேறும் முன் இவற்றை encrypt செய்யவும். இதற்கான காரணம் Vaultwarden காப்புப்பிரதி எவ்வாறு பாதுகாப்பான password server-ன் பலவீனமான புள்ளியாக மாறுகிறது என்பதில் விளக்கப்பட்டுள்ளது. ஒரு model API key-ஐ மீண்டும் பெற முடியும், ஆனால் நீங்கள் ஒரு வாரம் செலவழித்து உருவாக்கிய app-ஐ மீண்டும் உருவாக்க முடியாது. இதே தர்க்கமே, இயங்கும் இயந்திரம் செயலிழந்தாலும் அழியக்கூடாத நிலையில் உள்ள அனைத்து agents-க்கும் பொருந்தும்: KiroCrew-ஐ எப்போதும் இயங்கும் container-ஆக வைத்திருப்பது என்பது, அடுத்த reboot-ல் அழிந்துவிடக்கூடிய memory மற்றும் schedules-ஐ snapshot எடுப்பதையே குறிக்கிறது.
நீங்கள் உருவாக்கும் agents உங்கள் சொந்த தரவுத்தொகுப்புகளைத் தாண்டி நேரடி இணையத்தில் தேட வேண்டுமெனில், அவற்றை self-hosted SearXNG instance-க்குத் திருப்புவது query stream-ஐ உங்கள் கட்டுப்பாட்டில் உள்ள வன்பொருளில் வைத்திருக்கும். இருப்பினும், அதை இயக்குவதற்கு முன், அதனால் ஏற்படக்கூடிய prompt injection அபாயங்கள் குறித்துப் படிப்பது அவசியம். அதிக சுயாட்சி கொண்ட, code-ஐ இயக்கும் agent-க்கு, self-hosting Agent Zero-ஐப் பார்க்கவும். மேலும், VPS-ல் உங்கள் சொந்த AI agent-ஐ உருவாக்குதல் என்பது இவை அனைத்திற்கும் அடிப்படையான விஷயங்களை விளக்குகிறது.
FAQ
Dify-ஐ self-host செய்ய என்னென்ன system தேவைகள் உள்ளன?
Dify சுமார் அரை டஜன் Docker containers கொண்ட ஒரு stack-ஆக இயங்குகிறது. எனவே, குறைந்தது 2 GB RAM (4 GB பரிந்துரைக்கப்படுகிறது), இரண்டு CPU cores மற்றும் நீங்கள் பதிவேற்றும் ஆவணங்கள் மற்றும் vector index-க்குத் தேவையான போதிய disk space கொண்ட VPS-ஐத் தேர்வு செய்யவும். நினைவகத்தின் மீதான அழுத்தம் Dify-ஆல் அல்ல, அதன் database மற்றும் vector store-ஆல் ஏற்படுகிறது.
Dify-ஐ நேரடியாக port 80-ல் expose செய்வது பாதுகாப்பானதா?
இல்லை. Dify-ன் bundled web server plain HTTP-ல் இயங்குகிறது. இது உங்கள் admin login மற்றும் model API keys-ஐ வெளிப்படுத்துகிறது. எனவே, ஒரு reverse proxy-ஐப் பயன்படுத்தி Let's Encrypt certificate-ஐ அமைக்கவும். Dify-ன் port-ஐ loopback-க்கு மட்டும் bind செய்து, HTTPS proxy-ஐ மட்டும் இணையத்திற்குத் திறக்கவும். இதனுடன் IPv4 மற்றும் IPv6 ஆகிய இரண்டையும் உள்ளடக்கிய default-deny firewall-ஐப் பயன்படுத்தவும்.
Self-hosted Dify-ஐ எவ்வாறு update செய்வது?
docker directory-க்குள் சென்று, git pull-ஐ இயக்கவும். பின்னர், புதிய images-ஐப் பெற்று restart செய்ய docker compose pull மற்றும் docker compose up -d ஆகிய கட்டளைகளைப் பயன்படுத்தவும். பதிப்புகளை மாற்றும்போது Dify சில நேரங்களில் புதிய .env variables-ஐச் சேர்க்கும் என்பதால், முதலில் release notes-ஐப் படிக்கவும். ஒரு variable விடுபட்டாலும் container இயங்காமல் போகலாம்.
Dify-ஐ நிறுவிய பிறகு செய்ய வேண்டிய முதல் காரியம் என்ன?
உடனடியாக /install பக்கத்திற்குச் சென்று admin account-ஐ உருவாக்கவும். அந்த account உருவாக்கப்படும் வரை, அந்தப் பக்கத்தை அணுகும் எவரும் அதைத் தங்கள் கட்டுப்பாட்டில் எடுக்க முடியும். containers சரியாக இயங்கத் தொடங்கியதும், firewall-ஐ இணையத்திற்குத் திறக்கும் முன்பே இந்த account-ஐ அமைத்துவிடவும்.