Jinsi ya Kujihostia Dify kwenye VPS kwa Docker Compose
Dify huanzisha containers 15 na huhitaji RAM angalau 4 GiB. Badilisha nywila chaguo-msingi kwenye .env kabla ya kuwasha, kisha fungua /install kudai akaunti ya msimamizi.
Dify ni nini, na unajiandaa kuendesha nini
Dify ni jukwaa linaloweza kujihifadhiwa kwa ajili ya kuunda programu zinazotumia large language models. Unapata kiolesura cha wavuti cha kubuni chat apps, agents na retrieval pipelines, API ya kuziita kutoka kwenye code yako, na sehemu moja ya kudhibiti prompts, datasets na model keys. Ni aina ya zana ambayo timu ndogo huweka ili kila mtu atumie msingi mmoja wa faragha, badala ya kutawanya API keys kwenye scripts. Ikiwa maneno kama agent, tool call na retrieval pipeline bado hayajaeleweka vizuri, kujifunza dhana hizo kuanzia mwanzo kwanza kutafanya skrini za builder wa Dify zionekane kama vidhibiti vinavyoeleweka, badala ya safu ya switches zisizo na maelezo.
Kujiendeshea mwenyewe kunamaanisha kuendesha vipengele vingi vinavyotegemeana. Kufikia October 2026, stack ya kawaida iliyoandikwa kwenye nyaraka za Dify huanzisha containers 15 zinazoendelea kufanya kazi, pamoja na task ya mara moja inayoweka file permissions kisha kumaliza. Huduma saba ni za Dify yenyewe: API server, websocket server, background worker, scheduler, web frontend, plugin daemon na agent backend. Nyingine nane ni dependencies: Postgres database, Redis cache, Weaviate vector database, nginx front door, code sandboxes mbili na SSRF proxies mbili. Docker Compose huziunganisha zote, lakini hiyo ni stack halisi, na kiwango cha chini kilichoandikwa na Dify ni 4 GiB ya RAM na CPU cores mbili. Ikiwa VPS hiyo itaendesha kitu kingine pia, ipangie rasilimali kwa kutumia vipimo halisi badala ya takwimu zilizotangazwa, kwa sababu viwango halisi vya chini vya RAM vya PhotoPrism na Immich viko juu zaidi ya viwango vyao vilivyochapishwa, na photo server inayoshiriki seva hiyo itaanza kuinyima Dify database na vector store rasilimali. Ushindani wa CPU huleta tatizo hilo hilo: Jellyfin library iliyowekwa mwonekano wa video store ya miaka ya 90 hutumia rasilimali kidogo wakati watumiaji wanavinjari artwork tu, lakini mtu anapoanza transcode, queues za Dify worker husubiri nyuma yake. Jambo linalorahisisha hali ni kwamba idadi ya containers za Dify hubaki ileile bila kujali utaunda apps ngapi, hivyo gharama yake huongezeka kwa utaratibu rahisi zaidi kuliko OpenBot, ambapo kila AI coworker hupata container yake na browser yake, na kila mfanyakazi mpya huongeza tena kiwango cha chini cha memory.
Kwa sababu Dify huhifadhi model API keys zako na, mara nyingi, private documents ulizopakia kwa ajili ya retrieval, ichukulie seva inayoiendesha kuwa nyeti tangu dakika ya kwanza. Mwongozo huu huiweka, kisha huilinda kwa kiwango unachotumia kulinda huduma yoyote inayohifadhi secrets.
Mahitaji ya awali
Unahitaji VPS inayotumia Ubuntu 24.04 yenye angalau 4 GiB za RAM na cores mbili za CPU, Docker iliyo na Docker Compose plugin, kwa sababu Dify inahitaji Compose 2.24.0 au toleo la baadaye, pamoja na mtumiaji aliye na sudo au mwanachama wa kundi la docker. Amri ya clone hapa chini pia hutumia git, curl na jq. Ikiwa Docker ni mpya kwako, misingi ya Docker Compose kwenye VPS inaeleza usakinishaji na amri za msingi zinazodhaniwa na mwongozo huu. Inafaa kuwa na domain name inayoelekezwa kwenye seva, kwa sababu utahitaji TLS mbele ya Dify badala ya kutumia IP address pekee.
Hatua ya 1: Pata Dify na faili zake za Compose
Dify huhifadhi usanidi wake wa Docker kwenye repository kuu. Clone release ya hivi karibuni, si branch ya development, kisha nenda kwenye directory ya docker:
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envIkiwa clone itashindwa na error ya "Remote branch null", lookup ya GitHub API haikurudisha chochote; chagua version kutoka kwenye releases page na uipitishe kwa --branch mwenyewe.
Faili ya .env ndiyo usanidi mkuu. Isome kabla ya kuanza chochote. Thamani muhimu za kwanza ni zile zinazoweka passwords na secrets: SECRET_KEY, password ya Postgres, na password ya Redis. SECRET_KEY huja ikiwa tupu, na ukiiacha hivyo Dify hutengeneza key na kuihifadhi kwenye storage directory yake. Passwords ni suala tofauti: example file huweka difyai123456 ileile kwa Postgres na Redis, pamoja na keys zilizowekwa mapema na zinazojulikana hadharani kwa code sandbox, plugin daemon na Weaviate. Kuacha thamani hizo kama zilivyo shipped ndiyo njia inayotokea mara nyingi zaidi ya kufanya Dify ya self-hosted iwe compromised. Ikiwa ungependa kuweka secret key yako mwenyewe, generate moja:
openssl rand -base64 42Bandika hiyo kwenye SECRET_KEY, kisha weka value imara na ya kipekee kwa kila password na key field iliyo kwenye faili. Password ya Redis pia inaonekana ndani ya CELERY_BROKER_URL, kwa hiyo ibadilishe huko pia, la sivyo worker haiwezi kufikia Redis.
Hatua ya 2: Iwashe
Washa stack:
docker compose up -dMara ya kwanza inapakua images kadhaa na kuanzisha database, kwa hiyo ipe dakika moja. Thibitisha kwamba containers ziko katika hali nzuri:
docker compose psKila service inayoendelea kwa muda mrefu inapaswa kusoma running; task ya ruhusa ya mara moja hujifunga baada ya kukamilisha kazi yake. Dify hutoa kiolesura chake cha web kupitia container ya nginx iliyojumuishwa, kwenye port 80 kwa chaguo-msingi. Unapotembelea http://YOUR_SERVER/install kwa mara ya kwanza, unatengeneza account ya admin. Fanya hivyo mara moja, kabla kitu kingine hakijafikia port hiyo, kwa sababu hadi account hiyo iwepo, mtu yeyote anayefungua ukurasa anaweza kuichukua na kuwa mmiliki wa instance yako.
Hatua ya 3: Usiifichue moja kwa moja. Weka TLS na firewall mbele yake
Hapa ndipo usakinishaji mwingi wa haraka huishia na matukio mengi ya usalama huanza. nginx ya Dify yenyewe husikiliza port 80 bila usimbaji kwenye kila interface, na pia huchapisha port 443. Hutaki login yako ya msimamizi na funguo zako za modeli zipitie HTTP isiyo na usimbaji. Pia hutaki huduma za ndani zifikiwe kutoka nje.
Funga seva kwa firewall ya default-deny inayoruhusu SSH na trafiki ya wavuti pekee:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableKumbuka kwamba firewall inayoshughulikia IPv4 pekee inaweza kuacha port hizo zikiwa wazi kwenye IPv6. Hili ndilo pengo la firewall la IPv6 linalowakuta mara nyingi watu wanaojisimamia huduma zao. Thibitisha kwamba stacks zote mbili zimewekewa uchujaji. Pia tambua kwamba port zinazochapishwa na Docker hushughulikiwa na sheria za firewall za Docker yenyewe, si za ufw. Stack ya default huchapisha port ya debugging ya plugin daemon, 5003, kwenye kila interface. Weka EXPOSE_PLUGIN_DEBUGGING_PORT katika .env kuwa 127.0.0.1:5003 isipokuwa unakusudia kweli kufanya debugging ya plugins kutoka kwenye mashine nyingine.
Kwa TLS, njia safi zaidi ni kufunga port ya web ya Dify kwenye loopback na kuendesha reverse proxy yenye certificate ya Let's Encrypt mbele yake. Kwa njia hii, kitu pekee kilicho kwenye Internet ya umma ni proxy inayotumia HTTPS. .env ya Dify hukuruhusu kubadilisha port inayofichuliwa. Iweke ifungwe kwenye 127.0.0.1, kisha uelekeze proxy yako huko. Fanya vivyo hivyo kwa EXPOSE_NGINX_SSL_PORT, kwa sababu nginx ya Dify huchukua host port 443 kwa default na proxy yako inaihitaji. Mawazo ya kuimarisha usalama wa agent katika kuendesha AI agent kwa usalama kwenye VPS yanatumika hapa pia: weka vipengele vinavyobadilika kwenye loopback, fichua tu vinavyopaswa kuwa vya umma, na acha mlango mmoja ulioimarishwa ushughulikie TLS. Ikiwa interface ya tool ni kwa matumizi yako pekee na haihitaji certificate kabisa, ruka proxy na uifikie kupitia SSH tunnel, kama kujisimamia open-kritt security scanner kunavyoweka dashboard yake kwenye loopback na kuielekeza kwenye laptop yako badala ya kuichapisha. Ikiwa timu nzima inahitaji Dify lakini si Internet ya umma, overlay network inaweza kupanua wazo hilo zaidi ya laptop moja: kutangaza subnet ya faragha ya seva kwenye tailnet yako huruhusu kila kifaa kilichoidhinishwa kumfikia builder kupitia anwani ya faragha, huku firewall ikiwa imefungwa kwa kila kitu isipokuwa SSH. Ikiwa unasimamia seva hii kupitia coding agent badala ya kufanya kazi kwa mkono, amua mapema kiwango cha kazi unachoiruhusu ifanye bila usimamizi kabla hujaikabidhi keys, kwa sababu mode ya permissions unayoiacha Claude Code itumie huamua ikiwa itasimama kukuuliza kabla ya kuandika upya .env au kuanzisha upya stack. Ikiwa una session moja inayofuatilia container logs huku nyingine ikihariri usanidi wa proxy, sessions hizo mbili zinaweza kupitishiana maandishi kwenye seva hiyo hiyo, jambo linalofaa kuliko kunakili output kati ya terminals kila unapowasha upya stack.
Hatua ya 4: Iweke ikiwa na masasisho
Dify hubadilika kwa haraka, na masasisho yake yanajumuisha marekebisho ya usalama. Kwa kuwa ulifanya clone ya release tag, kusasisha kunamaanisha ku-checkout tag inayofuata badala ya kuvuta branch. Kwanza fanya backup ya database, kisha ukiwa kwenye directory ya docker:
docker compose down
git fetch --tags
git checkout NEW_VERSION
docker compose pull
docker compose up -dDatabase migrations huendeshwa kiotomatiki wakati wa startup, na baadhi yake haziwezi kutenduliwa. Ndiyo sababu backup hufanywa kwanza. Soma release notes kabla ya kila upgrade, si kabla ya major upgrades pekee: Dify inasema hatua za upgrade hutofautiana kati ya releases. Kwa mfano, release notes za 1.17.1 (September 2026) zinawaelekeza watumiaji wanaoendesha Weaviate iliyounganishwa pamoja na data iliyopo wasiruke moja kwa moja hadi kwenye version hiyo, bali wapitie kila minor release kwa mpangilio. Dify pia hubadilisha schema ya .env kati ya releases. Kwa hiyo, baada ya ku-checkout tag mpya, linganisha .env.example na .env yako na uhamishe mabadiliko yako, kwa sababu variable mpya ambayo hujaiweka inaweza 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
Mahitaji ya mfumo ya kujihudumia Dify ni yapi?
Dify inaweka kumbukumbu ya chini ya 4 GiB ya RAM na cores mbili za CPU, pamoja na Docker Compose 2.24.0 au toleo la baadaye. Kiwango hicho kinatokana na ukubwa wa stack chaguomsingi: containers 15 zinazoendelea kwa muda mrefu pamoja na task moja ya kuinitialise, kufikia Oktoba 2026. Tenga nafasi ya kutosha ya disk kwa documents utakazopakia na vector index, na ongeza memory ikiwa kuna huduma nyingine zinazotumia seva hiyo.
Je, ni salama kufungua Dify moja kwa moja kwenye port 80?
Hapana. Web server iliyojumuishwa kwenye Dify inasikiliza plain HTTP, na inahudumia admin login yako pamoja na model API keys zako. Weka reverse proxy yenye certificate ya Let's Encrypt mbele yake, bind port ya Dify kwenye loopback, na acha HTTPS proxy pekee ikabiliane na internet. Unganisha hilo na firewall ya default-deny inayoshughulikia IPv4 na IPv6 zote.
Ninawezaje kusasisha Dify inayojihudumia?
Fanya backup ya database, kisha kutoka kwenye directory ya docker endesha docker compose down, git fetch --tags, git checkout tag ya release mpya, docker compose pull, na docker compose up -d. Soma release notes kwanza, kwa sababu hatua za kusasisha hutofautiana kati ya releases, migrations zinaweza zisiweze kutenduliwa, na wakati mwingine Dify huongeza variables mpya za .env; variable ikikosekana inaweza kuzuia container kuanza.
Jambo la kwanza kufanya baada ya kusakinisha Dify ni lipi?
Tembelea /install na uunde admin account mara moja. Mpaka account hiyo iwepo, mtu yeyote anayeweza kufikia ukurasa huo anaweza kuidai. Isanidi mara tu containers zitakapokuwa healthy, na kabla hujafungua firewall kwa ulimwengu.