Jinsi ya kuendesha Dify kwenye VPS kwa Docker Compose
Jifunze kusakinisha Dify kwa kutumia Docker Compose. Hakikisha una RAM ya 4 GB kwa kontena sita, badilisha siri zote kwenye faili la .env, na usanidi akaunti ya admin haraka.
Dify ni nini, na unachojiandaa kukiendesha
Dify ni jukwaa linaloweza kujiendesha (self-hostable) kwa ajili ya kujenga programu juu ya mifumo mikubwa ya lugha (large language models). Unapata kiolesura cha wavuti kwa ajili ya kubuni programu za gumzo, mawakala (agents), na njia za utafutaji (retrieval pipelines), API ya kuzitumia kutoka kwenye msimbo wako mwenyewe, na sehemu moja ya kusimamia maelekezo (prompts), hifadhidata, na funguo za mifumo (model keys). Hiki ni aina ya zana ambayo timu ndogo huweka ili kila mtu ajenge juu ya msingi mmoja wa faragha ulioshirikiwa, badala ya kutawanya funguo za API kwenye hati (scripts) mbalimbali. Ikiwa maneno kama wakala, wito wa zana (tool call), na njia ya utafutaji bado hayajakueleweka vizuri, kupitia dhana hizo kuanzia mwanzo kwanza kutafanya skrini za ujenzi za Dify zionekane kama vidhibiti unavyovifahamu badala ya ukuta wa swichi zisizo na lebo.
Kujiendeshea mwenyewe kunamaanisha kuendesha sehemu kadhaa zinazofanya kazi pamoja. Dify inatolewa kama seti ya Docker containers: seva ya API, mfanyakazi wa usuli (background worker), kiolesura cha mbele cha wavuti (web frontend), hifadhidata ya Postgres, akiba ya Redis (cache), na hifadhidata ya vekta, vyote vikiwa vimeunganishwa kwa kutumia Docker Compose. Hiyo ni zaidi ya faili moja ya binary, lakini Compose inashughulikia uunganishaji huo, na VPS yenye RAM ya gigabytes chache za ziada huiendesha kwa urahisi. Ikiwa VPS hiyo pia itaendesha kitu kingine, ipime kwa kutumia namba halisi zilizopimwa badala ya zile zilizotangazwa, kwa sababu viwango halisi vya chini vya RAM vya PhotoPrism na Immich viko juu zaidi ya viwango vya chini vilivyochapishwa, na seva ya picha inayoshiriki sanduku hilo itaisababishia njaa hifadhidata na hifadhi ya vekta ya Dify kwanza. Mgogoro wa CPU huuma kwa njia ileile: maktaba ya Jellyfin iliyobadilishwa muonekano kama duka la video la miaka ya 90 haigharimu chochote kuitumikia wakati inavinjari sanaa tu, lakini wakati mtu anapoanza kubadilisha umbizo (transcode), mfanyakazi wa Dify hupanga foleni nyuma yake. Faraja ni kwamba idadi ya containers za Dify ni thabiti bila kujali ni programu ngapi unazojenga juu yake, ambayo ni sura laini zaidi ya bili kuliko OpenBot, ambapo kila mfanyakazi mwenza wa AI anapata container yake na kivinjari chake na kila mwajiriwa mpya anasukuma kiwango cha chini cha kumbukumbu juu zaidi.
Kwa sababu Dify inashikilia funguo zako za API za mifumo na, mara nyingi, nyaraka za faragha ulizopakia kwa ajili ya utafutaji, lichukulie sanduku inaloendeshwa kama kitu nyeti kuanzia dakika ya kwanza. Mwongozo huu unaisakinisha, kisha unaikaza (harden) kwa njia ileile ambayo ungekaza huduma yoyote inayoshikilia siri.
Mahitaji ya awali
Unahitaji VPS inayoendesha Ubuntu 24.04 ikiwa na Docker pamoja na plugin ya Docker Compose, na mtumiaji mwenye sudo au uanachama wa kundi la docker. Ikiwa Docker ni ngeni kwako, misingi ya Docker Compose kwenye VPS inashughulikia usakinishaji na amri kuu ambazo mwongozo huu unazitegemea. Ni vyema kuwa na jina la domain lililoelekezwa kwenye seva, kwa sababu utahitaji TLS mbele ya Dify badala ya kutumia anwani ya IP pekee.
Hatua ya 1: Pata Dify na faili zake za Compose
Dify huweka usanidi wake wa Docker kwenye hazina kuu (main repository). Iclone na uingie kwenye saraka ya docker:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envFaili ya .env ndiyo usanidi mzima. Isome kabla ya kuanza jambo lolote. Thamani zinazopaswa kuzingatiwa kwanza ni zile zinazoweka nywila na siri: SECRET_KEY, nywila ya Postgres, na nywila ya Redis. Faili ya mfano inakuja na thamani za muda (placeholders), na kuziacha kama zilivyokuja ndiyo njia ya kawaida zaidi inayofanya Dify inayojiendesha (self-hosted) kuvamiwa. Tengeneza ufunguo wa siri (secret key) halisi:
openssl rand -base64 42Bandika ufunguo huo kwenye SECRET_KEY, na uweke thamani imara na ya kipekee kwa kila sehemu ya nywila kwenye faili hiyo.
Hatua ya 2: Anzisha huduma
Anzisha stack ya huduma:
docker compose up -dUendeshaji wa kwanza unapakua images kadhaa na kuanzisha database, kwa hivyo subiri kwa dakika moja. Hakikisha kuwa containers ziko katika hali nzuri:
docker compose psKila huduma inapaswa kusoma running. Dify hutoa interface yake ya wavuti kupitia container ya nginx iliyojumuishwa kwenye port 80 kwa chaguo-msingi. Unapotembelea http://YOUR_SERVER/install kwa mara ya kwanza, utaunda akaunti ya admin. Fanya hivyo mara moja, kabla ya mtu mwingine yeyote kuweza kufikia port hiyo, kwa sababu hadi akaunti hiyo itakapokuwepo, mtu yeyote anayepakia ukurasa huo anaweza kuudai na kumiliki instance yako.
Hatua ya 3: Usiweke huduma hadharani bila ulinzi. Tumia TLS na firewall
Hapa ndipo usakinishaji wa haraka unapokwama na matatizo mengi yanapoanza. Nginx ya Dify husikiliza kwenye port 80, kwa njia isiyosimbwa, kwenye kila interface. Hutaki login yako ya admin na funguo za model (model keys) zisafiri kupitia HTTP ya kawaida, na hutaki huduma za ndani zifikiwe kutoka nje.
Funga seva yako kwa kutumia firewall ya default-deny inayoruhusu tu SSH na trafiki ya web:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableKumbuka kuwa firewall inayoshughulikia IPv4 pekee inaweza kuacha port zilezile zikiwa wazi kwenye IPv6, hali inayojulikana kama pengo la firewall ya IPv6 inayowatega watu wengi wanaojihudumia (self-hosters). Hakikisha stacks zote mbili zimechujwa.
Kwa TLS, njia bora zaidi ni kufunga (bind) port ya web ya Dify kwenye loopback na kuendesha reverse proxy yenye cheti cha Let's Encrypt mbele yake, ili kitu pekee kilicho kwenye Internet ya umma kiwe proxy inayozungumza HTTPS. .env ya Dify inakuwezesha kubadilisha port inayotumika; iweke ifunge kwenye 127.0.0.1 na uelekeze proxy yako hapo. Mawazo ya kuimarisha usalama wa agent katika kuendesha AI agent kwa usalama kwenye VPS yanatumika hapa pia: weka sehemu zinazohusika kwenye loopback, weka hadharani kile tu kinachopaswa kuwa cha umma, na uache mlango mmoja uliolindwa vizuri uzungumze TLS. Pale ambapo interface ya zana ni kwa ajili yako pekee na haihitaji cheti kabisa, ruka proxy na uifikie kupitia SSH tunnel, kama vile kujihudumia scanner ya usalama ya open-kritt inavyoweka dashboard yake kwenye loopback na kuiforward kwenye laptop yako badala ya kuichapisha hadharani. Ikiwa timu nzima inahitaji Dify lakini Internet ya umma haihitaji, overlay network huongeza wigo wa wazo hilo zaidi ya laptop moja: kutangaza subnet ya seva kwenye tailnet yako inaruhusu kila kifaa kilichoidhinishwa kufikia builder kwenye anwani ya kibinafsi huku firewall ikiwa imefungwa kwa kila kitu isipokuwa SSH. Ikiwa unasimamia seva hii kupitia coding agent badala ya kufanya kwa mikono, amua ni kiasi gani inaweza kufanya bila kusimamiwa kabla ya kuipa funguo, kwa sababu permission mode unayoiacha Claude Code huamua kama itaacha kuuliza kabla ya kuandika upya .env au kuanzisha upya stack. Ikiwa utajikuta na session moja ikifuatilia log za container wakati nyingine ikihariri usanidi wa proxy, session hizo mbili zinaweza kupitishiana maandishi kwenye seva hiyo hiyo, jambo ambalo ni bora kuliko kunakili matokeo kati ya terminal kila wakati unapozindua upya stack.
Hatua ya 4: Weka mfumo ukiwa na viraka (patched)
Dify inabadilika haraka, na masasisho yanajumuisha marekebisho ya kiusalama. Kusasisha kunahusisha kufanya pull na kuanzisha upya kutoka kwenye saraka ya docker:
git pull
docker compose pull
docker compose up -dSoma maelezo ya toleo (release notes) kabla ya kuruka kwenda toleo kubwa (major version), kwa sababu Dify mara kwa mara hubadilisha schema ya .env kati ya matoleo, na kigezo (variable) kipya ambacho hujakiweka kinaweza kuzuia container kuanza.
Hatua ya 5: Hifadhi nakala ya data isiyoweza kutengenezwa upya
Kuna vitu viwili kwenye seva ya Dify ambavyo haviwezi kurudishwa vikipotea: database ya Postgres, inayohifadhi programu zako, watumiaji, na mipangilio, pamoja na volume inayohifadhi nyaraka zilizopakiwa na vector index. Vyote hivi vinapatikana ndani ya Docker volumes katika saraka ya docker. Piga snapshot zake kwa ratiba, na unakili snapshot hizo nje ya seva. Snapshot hizo hubeba kila ufunguo wa model na nyaraka zilizopakiwa kwenye faili moja, kwa hivyo zifiche (encrypt) kabla hazijatoka kwenye seva, kwa sababu ile ile ambayo nakala ya Vaultwarden inaweza kuwa sehemu dhaifu ya seva ya nenosiri iliyo imara. Ufunguo wa API wa model unaweza kutolewa upya; programu uliyotumia wiki nzima kuijenga haiwezi. Mantiki hiyo hiyo inatumika kwa wakala (agent) yeyote ambaye hali yake inapaswa kudumu zaidi ya mashine anayoiendesha: kuweka KiroCrew ikiwa inaendelea kufanya kazi kama container inayowaka kila wakati inategemea kupiga snapshot ya kumbukumbu na ratiba ambazo zingepotea wakati wa reboot inayofuata.
Unapotaka mawakala unaowajenga hapa wafikie zaidi ya datasets zako na kutafuta kwenye mtandao wa moja kwa moja, kuwaelekeza kwenye mfano wa SearXNG uliopo kwenye seva yako mwenyewe kunahifadhi mtiririko wa hoja kwenye vifaa unavyovidhibiti, ingawa inafaa kusoma kuhusu hatari ya prompt injection inayoweza kutokea kabla ya kuiwasha. Kwa wakala anayejitegemea zaidi na anayeweza kuendesha code, angalia kujihostia Agent Zero, na kujenga wakala wako wa AI kwenye VPS inashughulikia misingi iliyo chini ya yote hayo.
FAQ
Je, ni mahitaji gani ya mfumo ili kujiendeshea Dify mwenyewe?
Dify huendeshwa kama rundo la Docker Compose lenye takriban kontena sita, kwa hivyo panga kutumia VPS yenye angalau 2 GB ya RAM iliyo wazi, ikiwezekana 4 GB, pamoja na cores mbili za CPU na nafasi ya kutosha ya diski kwa ajili ya hati ulizopakia na vector index. Shinikizo la kumbukumbu hutokana na database na vector store, si kutoka kwa Dify yenyewe.
Je, ni salama kuweka Dify moja kwa moja kwenye port 80?
Hapana. Web server iliyojumuishwa na Dify husikiliza kupitia HTTP ya kawaida, na ndiyo inayoshughulikia login yako ya admin na API keys za model zako. Weka reverse proxy yenye cheti cha Let's Encrypt mbele yake, funga port ya Dify kwenye loopback, na uruhusu proxy ya HTTPS pekee ndiyo ionekane kwenye Internet. Iunganishe hiyo na firewall ya default-deny inayolinda IPv4 na IPv6.
Ninawezaje kusasisha Dify inayojiendesha yenyewe?
Kutoka kwenye saraka ya docker, endesha git pull, kisha docker compose pull na docker compose up -d ili kupakua images mpya na kuanzisha upya. Soma maelezo ya toleo (release notes) kwanza, kwa sababu Dify wakati mwingine huongeza vigezo vipya vya .env kati ya matoleo, na kigezo kinachokosekana kinaweza kuzuia kontena kuanza.
Ni jambo gani la kwanza la kufanya baada ya kusakinisha Dify?
Tembelea /install na uunde akaunti ya admin mara moja. Hadi akaunti hiyo iwepo, mtu yeyote anayeweza kufikia ukurasa huo anaweza kuimiliki. Iweke sawa mara tu kontena zinapokuwa tayari, na kabla hujafungua firewall kwa ulimwengu.