il blog delle automazioni

Come installare n8n in locale (e farlo girare senza toccare nulla)

Sommario

Come installare n8n in locale: la risposta diretta

Installi Docker Desktop, crei una cartella di progetto con un file docker-compose.yml, esegui docker compose up -d e n8n è disponibile su localhost:5678. Il flag -d lo manda in background. Aggiungi restart: unless-stopped nel file e il container si riavvia da solo ogni volta che la macchina riparte.

Perché installare n8n in locale prima di andare in produzione

La versione cloud di n8n costa. Nella fase in cui stai ancora capendo quali workflow ti servono davvero, pagare un abbonamento per testare è uno spreco. L’installazione locale ti dà l’ambiente completo, senza limiti di esecuzioni, senza scadenze. Costruisci, rompi, ricomincia. Quando la macchina è pronta e genera valore, la sposti su un server.

C’è un altro motivo. Lavorare in locale ti costringe a capire come funziona l’infrastruttura: volumi, variabili d’ambiente, rete Docker. Chi salta questo passaggio e va diretto al cloud poi non sa cosa guardare quando qualcosa si rompe in silenzio. E si rompe, prima o poi.

In questo articolo ti mostro come installare n8n con Docker in locale, come configurarlo perché persista i dati e si riavvii da solo, e cosa controllare prima di considerare l’installazione finita.

Scrivania con terminale aperto e schema di workflow disegnato a mano per installare n8n in locale

Cosa ti serve prima di iniziare

Due cose sole: Docker Desktop installato sul tuo computer e un terminale. Se usi Mac o Windows, Docker Desktop include già tutto il necessario — il daemon, il CLI e la gestione dei volumi. Se usi Linux, installi Docker Engine e Docker Compose separatamente seguendo la documentazione ufficiale Docker.

Non serve Node.js, non serve npm, non serve sapere nulla di JavaScript. Docker scarica l’immagine n8n già pronta e la esegue in un container isolato. La tua macchina non viene toccata al di fuori di quello che dichiari nel file di configurazione.

Versione di Docker raccomandata

Qualunque versione stabile recente di Docker Desktop funziona. L’unico requisito è che docker compose (senza trattino) sia disponibile: dalla versione 20.10 in poi è incluso nel CLI base. Se il tuo Docker è più vecchio, aggiornalo prima di procedere.

Come installare n8n con Docker Compose: i passi

Questi sono i passi nell’ordine in cui li esegui. Uno alla volta, senza saltare.

  1. Crea una cartella sul tuo computer, ad esempio n8n-local.
  2. Dentro quella cartella, crea un file chiamato docker-compose.yml.
  3. Incolla questa configurazione nel file:
version: '3.8'
services:
  n8n:
    image: n8nio/n8n
    restart: unless-stopped
    ports:
      - '5678:5678'
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=scegli-una-password
      - GENERIC_TIMEZONE=Europe/Rome
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:
  1. Apri il terminale, spostati nella cartella con cd n8n-local.
  2. Esegui docker compose up -d.
  3. Aspetta che Docker scarichi l’immagine e avvii il container. La prima volta può volerci qualche minuto a seconda della connessione.
  4. Apri il browser su http://localhost:5678. Trovi n8n.

Dalla seconda volta in poi, il container parte da solo quando accendi il computer. Non devi fare nulla.

Schema docker-compose disegnato a mano con note sui volumi e le porte per l

Le variabili d’ambiente che contano davvero

La configurazione minima funziona, ma ci sono tre impostazioni che evitano problemi futuri.

Autenticazione base

N8N_BASIC_AUTH_ACTIVE=true attiva un layer di autenticazione HTTP sull’interfaccia. In locale potrebbe sembrarti superfluo, ma se il tuo computer è in una rete condivisa o usi un tunnel come ngrok per esporre n8n a webhook esterni, senza autenticazione chiunque può accedere all’interfaccia. Imposta username e password prima ancora di aprire il browser la prima volta.

Timezone

GENERIC_TIMEZONE=Europe/Rome allinea l’orologio del container al tuo fuso orario. Senza questa riga, i trigger programmati girano sull’UTC. I log mostrano orari sbagliati e i cron schedulati alle 9:00 partono alle 10:00. Non è un bug di n8n: è un container che non sa dove sei.

Webhook URL

Se vuoi ricevere webhook da servizi esterni mentre lavori in locale, il container non è raggiungibile dall’esterno per definizione. La soluzione più rapida è un tunnel: ngrok espone la porta 5678 su un URL pubblico temporaneo. Aggiungi poi WEBHOOK_URL=https://il-tuo-url-ngrok.ngrok.io nelle variabili d’ambiente e n8n usa quell’URL quando genera gli indirizzi webhook.

La regola

Un’automazione senza guardie esegue sbagliato con la stessa sicurezza con cui esegue giusto

Il container che gira in background non ti avvisa se smette di ricevere dati. Aggiungi almeno un workflow di monitoraggio che verifica periodicamente che i tuoi flow principali siano attivi.

  • Restart policy — usa always o unless-stopped, mai il default che non riavvia
  • Volume dichiarato — senza il volume i dati spariscono al riavvio del container
  • Log attivi — docker compose logs -f n8n è il primo posto dove guardare quando qualcosa tace

Come verificare che l’installazione sia stabile

Far partire il container è la parte facile. La parte che quasi nessuno fa è verificare che la macchina regga nel tempo.

Controlla che il volume persista

Crea un workflow qualsiasi in n8n, salvalo. Poi esegui docker compose down e subito dopo docker compose up -d. Torna su localhost:5678: il workflow deve essere ancora lì. Se non c’è, il volume non è configurato correttamente. Guarda la sezione volumes nel file docker-compose.yml e assicurati che la sintassi sia identica a quella sopra.

Controlla i log

Il comando docker compose logs -f n8n mostra i log in tempo reale. Appena dopo l’avvio dovresti vedere righe che confermano che n8n è in ascolto sulla porta 5678 e che il database SQLite è stato inizializzato. Se vedi errori di permessi sui file, il problema è quasi sempre nel path del volume.

Controlla il riavvio automatico

Riavvia il computer. Aspetta due minuti. Apri localhost:5678. Se n8n risponde senza che tu abbia lanciato nessun comando, la policy restart: unless-stopped funziona correttamente.

Locale vs cloud: quando smettere di usare l’installazione locale

Criterio Locale (Docker Desktop) Cloud / VPS
Costo Zero Da ~5€/mese (VPS) a ~20€/mese (n8n Cloud)
Webhook in entrata Solo con tunnel (ngrok) Nativi, URL fisso
Uptime Solo quando il computer è acceso 24/7
Manutenzione Aggiornamenti manuali Automatica (n8n Cloud) o manuale (VPS)
Adatto a Test, sviluppo, prototipazione Workflow in produzione

Il passaggio ha senso quando hai workflow che devono girare anche mentre il computer è spento, o quando ricevi webhook da terze parti e il tunnel è diventato un punto di fragilità. Per chi vuole restare su hosting condiviso senza gestire un VPS, ho scritto un tutorial specifico su come installare n8n su Hostinger a meno di 5€ al mese.

Alternativa senza server

Make: stessa automazione, zero infrastruttura da gestire

Se non vuoi occuparti di Docker, aggiornamenti e uptime, Make è la strada più diretta. Stessa logica visuale di n8n, nessun server da presidiare. Il piano gratuito include 1.000 operazioni al mese.

  • Primi giorni — connetti due tool che già usi e costruisci il primo scenario in meno di 30 minuti
  • Settimana uno — replica in Make un workflow che hai già in testa ma non hai mai costruito
  • Settimana due — attiva le notifiche di errore per sapere quando uno scenario si ferma

Apri il piano gratuito di Make →

Link di affiliazione: se ti iscrivi da qui io prendo una commissione, tu paghi uguale. Lo linko perché ci lavoro dentro ogni giorno.

Aggiornare n8n senza perdere i dati

L’immagine n8nio/n8n senza tag di versione scarica sempre la latest al primo pull, poi smette di aggiornarsi. Per aggiornare n8n in locale esegui questi tre comandi in sequenza:

  1. docker compose pull — scarica la versione più recente dell’immagine.
  2. docker compose down — ferma il container.
  3. docker compose up -d — riparte con la nuova immagine.

I dati sono nel volume nominato n8n_data: il down non lo cancella. Workflow, credenziali e esecuzioni restano intatti. Se vuoi una versione specifica invece della latest, sostituisci n8nio/n8n con n8nio/n8n:1.x.x nel file docker-compose.yml. La lista delle versioni disponibili è nella documentazione ufficiale di n8n.

Una volta che il tuo n8n locale gira stabile e hai capito cosa costruire, il passo successivo logico è un primo workflow reale. L’installazione è la condizione necessaria, non l’obiettivo. La macchina vale per quello che esegue, non per il fatto che gira.

Se da lì vuoi espandere con integrazioni non standard, il capitolo sui community nodes di n8n ti mostra come aggiungere nodi non inclusi nell’installazione base. Funzionano anche in locale: basta che il container abbia accesso a npm.

Domande frequenti

Posso usare n8n in locale senza Docker?

Sì, puoi installarlo direttamente con npm tramite npm install -g n8n e avviarlo con il comando n8n. Richiede Node.js 18 o superiore. Il vantaggio di Docker è l’isolamento: nessuna dipendenza da installare sulla macchina, aggiornamenti puliti, riavvio automatico configurabile.

Dove salva i dati n8n in locale?

Con la configurazione Docker Compose mostrata in questa guida, i dati finiscono nel volume nominato n8n_data gestito da Docker. Puoi trovare la posizione fisica con docker volume inspect n8n_data. Non toccare quei file direttamente: per il backup usa l’export dei workflow dall’interfaccia.

Come installare n8n in locale su Windows?

Identico al Mac: installi Docker Desktop per Windows, abiliti WSL2 se richiesto durante l’installazione, poi segui gli stessi passi. Il file docker-compose.yml è identico. L’unica differenza è che il terminale da usare è PowerShell o Windows Terminal, non bash.

n8n in locale può ricevere webhook da Stripe o da altri servizi?

Non direttamente, perché localhost non è raggiungibile da internet. La soluzione è un tunnel: ngrok espone la porta 5678 con un URL pubblico temporaneo. Imposti WEBHOOK_URL nelle variabili d’ambiente con quell’URL e n8n genera gli indirizzi webhook corretti. Per webhook in produzione continua, serve un server con IP pubblico fisso.

Trasparenza: in questo articolo c’è un link di affiliazione. Se ti iscrivi da lì io ricevo una commissione, per te non cambia niente. Linko solo strumenti che uso in produzione.

Iscriviti GRATIS a Gohighlevel

Il miglior software per scalare il tuo business. Se mi contatti dopo la prova gratuita dimostrando che ti sei iscritto con il mio link, hai una consulenza gratuita.

Hai domande?

Ogni tuo dubbio è un’opportunità per me di aiutarti.

Angelo Marcoccia

CHI SONO

Ho passato gli ultimi anni a costruire i sistemi che hanno portato un business da zero a oltre un milione di euro al mese — acquisizione, vendita, delivery e dati, tutto automatizzato. Oggi progetto gli stessi sistemi per infobusiness e agenzie che vogliono crescere senza esplodere di operatività. Quello che consiglio, lo so costruire con le mie mani.

INIZIA A CAPIRCI QUALCOSA

Mettiamoci in contatto

LEGGI IL BLOG SUlle automazioni

AUTOMATIZzA IL TUO BUSINESS