Instalarea Dify self-hosted cu Docker Compose (Community Edition) în Dify: fluxuri agentice, Knowledge și self-hosting

Dify Community Edition rulează cu Docker Compose 2.24.0+ pe minimum 2 nuclee și 4 GiB RAM; din 1.18.0 trebuie setat DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN în docker/.env înainte de pornire.

Sintaxă & invocare
cd dify/docker && cp .env.example .env && (setezi DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN) && docker compose up -d

Dify se poate instala pe infrastructura proprie (laptop, server on-premises sau VM în cloud); documentația oficială recomandă să începi cu Docker Compose. Codul este pe GitHub, în langgenius/dify, sub o licență Apache 2.0 modificată. Folosirea comercială este permisă, inclusiv ca backend pentru alte aplicații, dar două situații cer o licență comercială de la LangGenius: operarea unui mediu multi-tenant din codul sursă (un tenant înseamnă un workspace) și eliminarea sau modificarea logo-ului și a informațiilor de copyright din consola sau aplicațiile Dify. Pentru Kubernetes, SSO și administrarea mai multor workspace-uri există Dify Enterprise.

Cerințe minime: CPU de cel puțin 2 nuclee și 4 GiB RAM. Pe Linux ai nevoie de Docker 19.03+ și Docker Compose 2.24.0+; pe macOS 10.14+ și pe Windows cu WSL 2, de Docker Desktop cu Compose 2.24.0+, iar mașina virtuală Docker trebuie să aibă cel puțin 2 vCPU și 8 GiB de memorie. Pe Windows, ține codul sursă și datele montate în containere în sistemul de fișiere Linux (WSL), nu în cel Windows.

docker compose up -d pornește 7 servicii de bază (api, api_websocket, worker, worker_beat, web, plugin_daemon, agent_backend), 8 componente (weaviate, db_postgres, redis, nginx, ssrf_proxy, agent_ssrf_proxy, sandbox, local_sandbox) și sarcina unică init_permissions, care setează permisiunile și se oprește (starea Exited este normală). API-ul este o aplicație Flask rulată cu Gunicorn, iar sarcinile de fundal rulează în worker-i Celery. Din 1.18.0, agent_backend și local_sandbox nu pornesc fără DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN.

Baza de date implicită este PostgreSQL (DB_TYPE acceptă și mysql, oceanbase, seekdb), iar vector store-ul implicit este Weaviate (VECTOR_STORE, cu peste 30 de opțiuni); COMPOSE_PROFILES pornește automat containerul potrivit. Datele stau în directoare montate din docker/volumes/ (baza de date, fișierele încărcate, Weaviate, Redis, pluginurile), deci rămân după docker compose down. Modelele locale se conectează prin pluginuri de furnizor precum Ollama, LocalAI sau Xinference. Pentru o rețea fără internet, documentația menționează golirea CHECK_UPDATE_URL și un mirror PyPI (PIP_MIRROR_URL) pentru dependențele pluginurilor; pluginurile se instalează atunci din fișiere .difypkg.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
docker compose up -d / ps Pornește stiva în fundal și verifică starea: fiecare container trebuie să fie Up sau healthy, cu excepția init_permissions.
docker/.env Valorile esențiale, create din .env.example. Au prioritate față de fișierele din docker/envs/.
docker/envs/ Șabloane .env.example pentru setări opționale (vector store, stocare, servicii); copiezi șablonul fără .example.
DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN Obligatoriu din 1.18.0, generat cu openssl rand -base64 32, setat doar în docker/.env.
SECRET_KEY Cheia de semnare și criptare; înlocuiește valoarea din .env.example înainte de prima pornire (openssl rand -base64 42).
DIFY_AGENT_SERVER_SECRET_KEY / DIFY_AGENT_API_TOKEN Vin cu valori de dezvoltare publice; în producție pui valori aleatoare proprii.
INIT_PASSWORD Parolă cerută de /install înainte de crearea contului de administrator, utilă pe un server expus.
VECTOR_STORE / DB_TYPE Vector store-ul (implicit weaviate) și baza de date (implicit postgresql).
EXPOSE_NGINX_PORT / NGINX_HTTPS_ENABLED Portul HTTP al gazdei (implicit 80) și activarea HTTPS în Nginx.
http://IP/install Pagina de inițializare pentru contul de administrator; după aceea te autentifici la http://IP.

Exemple practice și scenarii reale

Exemplul 1: Instalarea ultimei versiuni pe un server Linux

Comanda de clonare cere git, curl și jq. Dacă primești Remote branch null not found (limita de cereri a API-ului GitHub), clonează cu versiunea explicită: git clone --branch 1.18.0 https://github.com/langgenius/dify.git.

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 .env
openssl rand -base64 32
# pune rezultatul în .env: DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN=<valoarea>
docker compose version      # trebuie 2.24.0 sau mai nou
docker compose up -d
docker compose ps
# browser: http://IP-server/install, apoi http://IP-server

Exemplul 2: Secrete proprii pentru producție

openssl rand -base64 42                                          # SECRET_KEY
python3 -c "import secrets; print(secrets.token_urlsafe(32))"    # DIFY_AGENT_SERVER_SECRET_KEY
openssl rand -base64 32                                          # DIFY_AGENT_API_TOKEN
# le treci în docker/.env, apoi:
docker compose down
docker compose up -d

Exemplul 3: Actualizare la 1.18.0 cu Docker Compose

Pașii vin din notele de release 1.18.0. Fă backup înainte (baza de date, vector store, fișierele încărcate, fișierele .env). Dacă ai modificat docker-compose.yaml, aplică modificările pe fișierul nou.

cp -r dify "dify.bak.$(date +%Y%m%d%H%M%S)"
cd dify/docker
docker compose stop -t -1
git fetch --tags
git checkout 1.18.0
# compară fiecare .env.example cu .env și adaugă variabilele noi
docker compose pull
docker compose up -d

Greșeli frecvente și capcane

  • Lași în producție valorile din .env.example pentru SECRET_KEY și pentru secretele Agent. Sunt publice în repo. Schimbarea ulterioară a SECRET_KEY deloghează toți utilizatorii, invalidează URL-urile de fișiere și face ilizibile credențialele OAuth ale pluginurilor, așa că o setezi înainte de prima pornire.
  • Pornești 1.18.0 fără DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN sau îl pui doar într-un fișier din docker/envs/. Agent backend și sandbox-ul repornesc în buclă.
  • Expui serverul pe internet fără INIT_PASSWORD. Primul care deschide /install creează contul de administrator.
  • Ștergi docker/volumes/ crezând că sunt fișiere temporare. Acolo stau baza de date, fișierele încărcate, indexul vectorial și pluginurile.

Noțiuni și module înrudite

Învață AI • Comunitate & Q&A

Întrebări & Exemple practice: Instalarea Dify self-hosted cu Docker Compose (Community Edition)

Ai o întrebare despre Instalarea Dify self-hosted cu Docker Compose (Community Edition) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!

🤖

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.