Dify self-hosted: creare app IA basate sul tuo LLM locale
Dify è una piattaforma open source che permette di creare applicazioni IA — chatbot, workflow, agenti, assistenti RAG — senza scrivere una riga di codice, tramite un'interfaccia visiva. Ospitata sulla tua infrastruttura e collegata a Ollama, ti offre un livello « no-code » completo sopra i tuoi modelli locali: i tuoi prompt, i tuoi documenti e i tuoi dati non lasciano mai la tua macchina. Questa guida tratta il deployment con Docker Compose, la connessione a un LLM locale e la creazione di un primo assistente RAG funzionante.
#Perché Dify piuttosto che un'interfaccia di chat
Open WebUI o LM Studio bastano per parlare con un modello. Dify punta a un livello superiore: costruire applicazioni riutilizzabili. Definisci un prompt di sistema, vi colleghi una base di conoscenze, esponi il tutto tramite un'API o un widget di chat integrabile e gestisci le versioni delle tue iterazioni. È l'equivalente locale e open source di OpenAI Assistants o Coze.
Il vantaggio della combinazione Dify + Ollama è duplice. Innanzitutto la riservatezza: a differenza di Dify collegato a GPT-4 o Claude, qui i documenti indicizzati e le conversazioni restano sulla tua infrastruttura. Poi il costo: nessun token fatturato, puoi iterare su centinaia di prompt senza tenere d'occhio la fattura dell'API.
- Chatbot
- Un assistente conversazionale con prompt di sistema, variabili di ingresso e memoria della conversazione.
- Agente
- Un assistente in grado di chiamare strumenti (ricerca web, calcolo, API) in un ciclo fino a risolvere il compito.
- Workflow
- Una sequenza visiva di nodi (LLM, condizione, estrazione, HTTP) per elaborazioni deterministiche.
- Knowledge / RAG
- L'indicizzazione dei tuoi documenti affinché le app rispondano basandosi su di essi, con citazioni delle fonti.
#Prerequisiti
Questa guida ti porta al modello. Il kit ti porta al copilota che scrive codice nel tuo editor.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
Dify è un'applicazione composta da più container (API, worker, frontend, database PostgreSQL, Redis, database vettoriale). Si installa tramite Docker Compose. Per quanto riguarda il modello, si presuppone che Ollama sia già in esecuzione e in ascolto sulla porta predefinita.
- Docker + Docker Compose
- Docker Engine recente con il plugin Compose (comando docker compose). Su Windows/macOS, basta Docker Desktop.
- Ollama funzionante
- Il daemon Ollama installato e raggiungibile su http://localhost:11434. Verifica con ollama list prima di iniziare.
- Un modello di chat
- Ad esempio qwen3.5:9b (256k di contesto, multimodale, Apache 2.0), la scelta di riferimento per 8 GB nel 2026. In Q4, rientra in circa 6,6 GB di VRAM (una RTX 3060 da 12 GB è ampiamente sufficiente).
- Un modello di embeddings
- Indispensabile per il RAG: nomic-embed-text è la scelta predefinita, leggero ed efficace.
- Risorse
- Prevedi circa 8 GB di RAM per lo stack Dify stesso, oltre alla VRAM/RAM utilizzata dai tuoi modelli Ollama.
#Installare Dify con Docker Compose
Dify fornisce un repository ufficiale con una cartella docker pronta all'uso. Si clona il repository, si copia il file di esempio delle variabili d'ambiente e si avvia lo stack.
- 01Clonare il repositoryRecupera la versione stabile più recente del progetto da GitHub, poi spostati nella cartella docker che contiene il file docker-compose.yaml.
- 02Creare il file .envCopia .env.example in .env. I valori predefiniti sono sufficienti per un uso locale; è in questo file che potrai modificare le porte o i segreti in seguito.
- 03Avviare lo stackEsegui docker compose up -d. Il primo avvio scarica le immagini e inizializza il database PostgreSQL; metti in conto qualche minuto.
- 04Creare l'account amministratoreApri http://localhost/install nel browser e inserisci l'email e la password del primo amministratore. Sarà questo account a gestire lo spazio di lavoro.
#Collegare Ollama come fornitore di modelli
Dify riconosce i tuoi modelli locali solo se configuri Ollama come fornitore. Questo si fa nelle impostazioni del modello, non in un file di configurazione. Il punto principale a cui prestare attenzione è l'URL: da un container Docker, localhost indica il container stesso, non la tua macchina host su cui è in esecuzione Ollama.
- 01Aprire le impostazioni dei fornitoriFai clic sull'icona del tuo avatar in alto a destra → Impostazioni → Fornitori di modelli. Cerca Ollama nella lista e selezionalo.
- 02Inserire l'URL del serverNel campo Base URL, inserisci l'indirizzo raggiungibile dal contenitore (vedi il suggerimento sotto). Il nome del modello deve corrispondere esattamente a quello restituito da ollama list, ad esempio qwen3.5:9b.
- 03Aggiungere il modello di chatTipo di modello: LLM. Inserisci la dimensione del contesto (ad es. 8192 o più a seconda del modello) e conferma. Dify verifica la connessione al salvataggio.
- 04Aggiungere il modello di embeddingRipeti l'operazione con nomic-embed-text scegliendo il tipo Text Embedding. Senza di lui non potrai costruire una base di conoscenza.
- 05Definire i modelli predefinitiSempre nelle impostazioni, imposta qwen3.5:9b come modello di sistema predefinito e nomic-embed-text come modello di embedding predefinito.
#Costruire un primo assistente RAG senza scrivere codice
Il RAG (Retrieval-Augmented Generation) permette al modello di rispondere basandosi sui tuoi documenti piuttosto che sulle sue sole conoscenze di training. In Dify, questo avviene attraverso una base di conoscenze (Knowledge) che poi viene associata a un'applicazione.
- 01Creare una base di conoscenzaScheda Knowledge → Crea. Importa i tuoi file (PDF, Markdown, TXT, DOCX). Dify li suddivide automaticamente in blocchi.
- 02Regolare la suddivisione in chunk e l'indicizzazioneScegli la modalità di indicizzazione «alta qualità» che utilizza il tuo modello di embedding nomic-embed-text. Regola la dimensione dei chunk se i tuoi documenti sono molto strutturati (tabelle, codice).
- 03Creare l'applicazione di chatScheda Studio → Crea un'app → Chatbot. Assegna all'app un nome e una descrizione.
- 04Scrivere il prompt di sistemaNell'editor, descrivi il ruolo dell'assistente: «Rispondi soltanto basandoti sui documenti forniti. Se l'informazione non è presente, dillo.» È questo che limita le allucinazioni.
- 05Collegare la base di conoscenzaNel pannello Contexte dell'app, aggiungi la base creata al passaggio 1. Attiva la citazione delle fonti in modo che le risposte mostrino gli estratti utilizzati.
- 06Testare e poi pubblicareUsa il pannello di debug a destra per porre domande. Quando il comportamento ti soddisfa, clicca su Pubblica per ottenere un URL della chat e una chiave API.
#Workflows e agenti: fino a dove va il no-code
Oltre al semplice chatbot, Dify propone due modalità più avanzate. La modalità Workflow offre un'area di lavoro visiva in cui si collegano nodi: input dell'utente, chiamata al LLM, condizione (if/else), estrazione di parametri, richiesta HTTP, iterazione su una lista. Si costruiscono così pipeline deterministiche — ad esempio: ricevere un'e-mail, classificarla, estrarre le entità, poi redigere una risposta standard.
La modalità Agent, invece, lascia che il modello decida quali strumenti chiamare e in quale ordine, ripetendo il ciclo fino a ottenere un risultato. È più potente ma più fragile: la qualità dipende fortemente dalla capacità del modello di ragionare e di rispettare il formato di chiamata degli strumenti. I modelli locali molto piccoli (2-4B) se la cavano male; opta per un modello progettato per l'uso di strumenti, come GLM 4.7 Flash (MoE 30B-A3B, MIT, ~19 GB) o Qwen 3.8 27B (~18 GB) se la tua VRAM lo permette.
- Cosa sa fare bene il no-code
- Prototipare velocemente un chatbot RAG, concatenare alcuni passaggi LLM, esporre un'API senza dover scrivere un backend, iterare sui prompt in team.
- Dove sorgono le difficoltà in locale
- Gli agenti che usano più strumenti per compiti impegnativi richiedono un modello capace di usarli in modo affidabile e quindi richiedono VRAM. Un Qwen 3.5 9B basta per il RAG, ma raramente per un agente complesso.
- Quando passare al codice
- Logica di business dettagliata, integrazioni su misura, controllo totale della pipeline di recupero delle informazioni: una libreria come LangChain permette di riprendere il controllo quando l'editor visuale mostra i suoi limiti.
#Risoluzione dei problemi
- «Connection refused» quando si aggiunge il modello
- Dify non raggiunge Ollama. Il problema è quasi sempre l'URL: sostituisci localhost con host.docker.internal (Docker Desktop) o con l'IP del gateway Docker (Linux) e verifica che Ollama sia effettivamente in ascolto su 0.0.0.0.
- Il modello non appare
- Il nome inserito non corrisponde a quello riportato da ollama list. Copia il nome esatto, tag incluso (qwen3.5:9b e non qwen3.5).
- Errore durante l'indicizzazione dei documenti
- Il modello di embedding non è configurato o non è stato scaricato. Esegui ollama pull nomic-embed-text e selezionalo come modello di embedding predefinito.
- Risposte molto lente
- Il modello di chat probabilmente viene eseguito in parte sulla CPU. Passa a una quantizzazione più leggera (Q4_K_M) o a un modello più piccolo e verifica che Ollama utilizzi effettivamente la GPU.
- La porta 80 è già occupata
- Un altro servizio occupa la porta. Modifica EXPOSE_NGINX_PORT nel file .env (ad es. 8080), poi esegui di nuovo docker compose up -d.
- Risposte fuori tema nonostante il RAG
- Verifica che la base di conoscenza sia correttamente associata all'app e che il prompt di sistema vincoli il modello a basarsi sul contesto. Regola anche la dimensione dei chunk.
#Per approfondire
La validità di Dify dipende dalla solidità del modello e dell'infrastruttura che lo supportano. Queste guide rafforzano le componenti su cui si basa.
- Installare Ollama
- Il daemon che rende disponibili il tuo modello di chat e i tuoi embedding sulla porta 11434 — la base dell'intero stack Dify locale.
- RAG locale con ChromaDB e Ollama
- Per capire cosa automatizza Dify sotto il cofano e riprendere il controllo in Python quando il no-code mostra i suoi limiti.
- n8n + Ollama: automatizzare localmente
- Un altro approccio no-code, orientato all'automazione delle attività, complementare ai workflow Dify.
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.