WebODM e ODM su Windows con Docker Desktop e WSL2
In questa pagina
Quando scegliere Docker invece dell'installer#
Su Windows entrambe le linee offrono un installer nativo che non richiede nulla di ciò che leggerai qui: WebODM gratuito da webodm.org, OpenDroneMap Desktop a pagamento da opendronemap.org. Scegli Docker se ti serve almeno una di queste cose: l'accelerazione GPU NVIDIA, che su Windows funziona solo tramite WSL2; l'esposizione in rete con HTTPS; lo spostamento dell'archivio progetti su un disco dedicato; il collegamento a nodi di elaborazione remoti o a un cluster; motori alternativi; oppure vuoi la stessa installazione che userai poi su un server Linux, per imparare una volta sola.
Cosa ottieni con Docker è però diverso per le due linee, ed è bene saperlo prima di iniziare.
Installi WebODM di UAV4GEO dal repository github.com/WebODM/WebODM, con il motore ODX e il nodo NodeODX: interfaccia web completa su http://localhost:8000, gestita dallo script webodm.sh. Se hai letto guide del 2024 o precedenti, l'indirizzo del repository è cambiato con la separazione da OpenDroneMap del 6 aprile 2026: la guida sull'ecosistema del 2026 spiega perché.
Alla data di verifica la nonprofit OpenDroneMap Inc. non pubblica un repository open dell'interfaccia OpenDroneMap Desktop: l'indirizzo storico github.com/OpenDroneMap/WebODM reindirizza al repository di WebODM. Su Windows OpenDroneMap Desktop si installa con il suo installer e non richiede Docker. Via Docker, per la linea ODM, puoi eseguire due cose: il motore ODM da riga di comando (immagine opendronemap/odm) e NodeODM (immagine opendronemap/nodeodm), l'API di elaborazione con un'interfaccia web minima. È un fatto datato, non un giudizio: se in futuro la nonprofit pubblicherà un'interfaccia libera, aggiorneremo questa guida.
I tre strati: virtualizzazione, WSL2, Docker#
Vale la pena capire cosa stai installando, perché la maggior parte dei problemi nasce da uno di questi tre strati. Questa parte vale per entrambe le linee.
Docker esegue i programmi in contenitori (container) Linux. Su Windows, per far girare Linux, serve una macchina virtuale leggera. Il componente che la fornisce è WSL2, Windows Subsystem for Linux versione 2, integrato in Windows. WSL2, a sua volta, funziona solo se il processore espone le istruzioni di virtualizzazione (Intel VT-x o AMD-V) e se queste sono abilitate nel BIOS o UEFI del computer. Docker Desktop, infine, è l'applicazione che installa Docker e lo collega a WSL2.
Quando uno script o un docker run fallisce su Windows, la documentazione di WebODM indica come prima causa proprio la virtualizzazione disabilitata nel BIOS o WSL2 non attivo. Lo stesso vale per le immagini della linea ODM, perché lo strato Docker è lo stesso. Da qui parte la procedura.
Installazione#
Passo 1: abilita la virtualizzazione nel BIOS#
Apri Gestione attività, scheda Prestazioni, voce CPU: in basso a destra trovi "Virtualizzazione: Abilitata" o "Disabilitata". Se è abilitata, passa oltre.
Se è disabilitata, riavvia il computer ed entra nel BIOS o UEFI con il tasto indicato all'avvio (spesso Canc, F2, F10 o F12, dipende dal produttore). Cerca un'opzione chiamata Intel Virtualization Technology, VT-x, AMD-V o SVM Mode, di solito nelle sezioni Advanced, CPU Configuration o Security. Attivala, salva ed esci. Al riavvio, Gestione attività deve mostrare la virtualizzazione abilitata.
Passo 2: attiva WSL2#
Su Windows 11 e su Windows 10 aggiornato, WSL2 si installa da un terminale con privilegi di amministratore con un solo comando, seguito da un riavvio; la procedura, e il comando esatto per la tua versione, sono nella guida di Microsoft. Al termine avrai una distribuzione Linux, in genere Ubuntu, installata e avviabile dal menu Start. Non è necessario configurarla: Docker Desktop la userà come base.
Passo 3: installa Docker Desktop#
Scarica Docker Desktop per Windows dal sito di Docker e installalo. Durante l'installazione, assicurati che sia selezionata l'opzione che usa WSL2 come backend (è la scelta predefinita nelle versioni recenti). Al primo avvio Docker Desktop può chiedere di completare l'installazione di WSL2 o di riavviare: segui le indicazioni.
Quando l'icona di Docker nella barra delle applicazioni indica che il servizio è in esecuzione, sei pronto per il passo più importante.
Passo 4: assegna RAM e disco a Docker Desktop#
Questo passo è quello che gli utenti saltano più spesso, e che causa quasi tutti i fallimenti in elaborazione, con entrambi i motori. Con WSL2, Docker Desktop usa per impostazione predefinita una parte della RAM del computer, e il disco virtuale in cui vivono le immagini e i volumi ha un limite predefinito di 20 GB, indipendente dallo spazio libero del tuo disco fisico.
Apri Docker Desktop, poi Settings e Resources. La documentazione di WebODM chiede almeno 4 GB di RAM assegnati a Docker, e consiglia 16 GB; la documentazione di ODM indica 4 GB come minimo per 100–200 immagini e 16 GB come valore consigliato. Regola il valore in base alla RAM fisica e ai tuoi dataset, seguendo la tabella immagini → RAM della guida sui requisiti: la memoria che conta per il motore è quella assegnata qui, non quella totale del PC. Aumenta anche la dimensione del disco virtuale ben oltre i 20 GB predefiniti, in proporzione ai progetti che elaborerai.
Se la tua versione di Docker Desktop non mostra i cursori di memoria e disco nella sezione Resources, perché con WSL2 le risorse sono gestite dal file di configurazione di WSL, la stessa pagina di impostazioni rimanda alla procedura: si tratta di un file .wslconfig nella tua cartella utente, descritto nella documentazione Microsoft. Applica le modifiche e riavvia Docker Desktop.
Passo 5: installa Git#
Scarica e installa Git per Windows dal sito ufficiale git-scm.com. Durante l'installazione puoi lasciare tutte le impostazioni predefinite. Per la linea WebODM Git serve a scaricare il codice e ad aggiornarlo in seguito; per entrambe le linee ti serve Git Bash, una shell Bash in cui eseguire gli script e i comandi docker. Se scegli la linea ODM e non intendi mai installare WebODM, Git in senso stretto non è indispensabile, ma Git Bash resta la shell più comoda.
Passo 6: scarica e avvia la tua linea#
Da qui le due linee divergono: WebODM si clona da Git e si avvia con uno script; per la linea ODM si scaricano direttamente le immagini Docker. Apri Git Bash (oppure il terminale della tua distribuzione WSL2: entrambi funzionano, purché Docker sia accessibile da lì) e segui il blocco della tua linea.
Spostati nella cartella in cui vuoi installare WebODM ed esegui i comandi seguenti, uno alla volta.
git clone https://github.com/WebODM/WebODM --config core.autocrlf=input --depth 1
cd WebODM
./webodm.sh start
L'opzione --config core.autocrlf=input merita una spiegazione, perché è specifica di Windows. Windows termina le righe dei file di testo con due caratteri (CR e LF), Linux con uno solo (LF). Git per Windows, per impostazione predefinita, converte i fine riga nel formato Windows quando scarica i file. Ma gli script e i file di configurazione di WebODM vengono eseguiti dentro contenitori Linux: se hanno fine riga Windows, falliscono con errori poco chiari. L'opzione autocrlf=input dice a Git di non convertire nulla in scaricamento e di normalizzare a LF in salvataggio. Non ometterla. L'opzione --depth 1 scarica solo l'ultima versione del codice, senza la cronologia, e accorcia il download.
Il comando ./webodm.sh start scarica le immagini Docker con prefisso webodm/ (diversi gigabyte, la prima volta) e avvia i contenitori: database, coda dei messaggi, applicazione web e nodo di elaborazione. Il primo avvio può richiedere molti minuti a seconda della connessione. Vedrai scorrere i log; l'avvio è completo quando compaiono le righe che indicano l'applicazione in ascolto.
Non c'è un repository da clonare. Scarica l'immagine del motore ODM ed esegui una prima elaborazione da riga di comando. Le immagini del rilievo vanno nella sottocartella images di una cartella di progetto sul disco di Windows; nel comando seguente sostituisci il percorso con il tuo (in Git Bash un percorso Windows si scrive nella forma /c/Users/nome/datasets; verifica la sintassi dei percorsi nella documentazione di Docker Desktop).
docker pull opendronemap/odm
docker run -ti --rm -v /home/utente/datasets:/datasets opendronemap/odm --project-path /datasets progetto
Il primo pull scarica l'immagine, diversi gigabyte. Il run elabora le foto in datasets/progetto/images e scrive gli output nelle sottocartelle dello stesso progetto; il contenitore termina alla fine e con --rm viene rimosso. Le opzioni di elaborazione si aggiungono in coda al comando: la guida ODM da riga di comando spiega la sintassi e come confrontarla con --help.
Se preferisci inviare i lavori a un servizio sempre attivo, con un'interfaccia web minima e un'API REST, avvia NodeODM.
docker pull opendronemap/nodeodm
docker run -d -p 3000:3000 opendronemap/nodeodm
La porta 3000 è quella storica di NodeODM: verifica nel README dell'immagine su Docker Hub e su docs.opendronemap.org la porta, le opzioni di avvio e la sintassi aggiornata prima di affidarti a questi comandi. La guida su NodeODM e ClusterODM descrive come usare il nodo e come collegarlo a un'interfaccia.
Passo 7: apri l'interfaccia#
Apri il browser su http://localhost:8000. Alla prima apertura WebODM chiede di creare l'utente amministratore. Scegli nome utente e password. Controlla poi, nel menu dei nodi di elaborazione, che il nodo locale sia online.

Con ODM da riga di comando non c'è un'interfaccia: i risultati sono nelle sottocartelle della cartella del progetto (l'elenco delle cartelle di output è su docs.opendronemap.org), pronti per QGIS. Con NodeODM apri il browser sulla porta che hai pubblicato (http://localhost:3000 se hai usato il comando sopra): l'interfaccia web minima permette di caricare immagini, avviare un lavoro e scaricare gli output, senza utenti, progetti né mappa. Non richiede un account.

Gestire l'installazione#
Tutte le operazioni passano dallo script webodm.sh, da eseguire nella cartella WebODM con Git Bash. I comandi principali sono questi.
./webodm.sh stop
./webodm.sh update
./webodm.sh start && ./webodm.sh resetadminpassword nuovapassword
./webodm.sh down
stop ferma i contenitori conservando i dati; start li riavvia. update scarica codice e immagini aggiornate: usalo periodicamente, dopo aver letto la guida su aggiornare e fare backup. resetadminpassword reimposta la password dell'amministratore se la dimentichi, con WebODM in esecuzione. down ferma e rimuove i contenitori, lasciando intatti i volumi con i dati.
Per riavviare con opzioni diverse si usa restart seguito dalle opzioni. Per esempio, per attivare la GPU NVIDIA dopo aver installato driver e NVIDIA Container Toolkit nella distribuzione WSL2:
./webodm.sh restart --gpu
La procedura completa per la GPU, con la verifica tramite nvidia-smi, è nella guida GPU NVIDIA. Le altre opzioni di restart, tra cui --ssl --hostname, --media-dir e --with-micmac, sono le stesse della versione Linux e sono documentate su docs.webodm.org.
Non c'è uno script di gestione: usi i comandi di Docker. Per aggiornare il motore o il nodo ripeti il pull dell'immagine; per fermare NodeODM usa docker stop sul contenitore (docker ps ne mostra il nome) e docker rm per rimuoverlo. I dati elaborati da ODM in riga di comando restano nella cartella che hai montato con -v, quindi non si perdono rimuovendo il contenitore; per NodeODM verifica nel README dell'immagine dove vengono conservati i lavori e per quanto tempo. Il supporto GPU per la linea ODM è trattato nella guida GPU NVIDIA, con la posizione dichiarata da ciascuna documentazione.
Docker Desktop deve essere in esecuzione perché i contenitori funzionino, in entrambe le linee. Se al riavvio del PC Docker Desktop non parte da solo, attivane l'avvio automatico nelle impostazioni generali; i contenitori riprenderanno con esso, oppure li riavvii a mano (./webodm.sh start per WebODM, docker start per NodeODM).
Come verificare
L'installazione è riuscita se:
docker ps, eseguito in Git Bash, elenca i contenitori in stato "Up": quelli di WebODM per la linea WebODM, quello di NodeODM per la linea ODM (ODM da riga di comando compare solo mentre elabora).- Linea WebODM: http://localhost:8000 mostra la pagina di accesso e il nodo locale è online. Linea ODM: l'interfaccia di NodeODM risponde sulla porta pubblicata, oppure il comando
docker rundi ODM termina senza errori e la cartella del progetto contiene gli output. - Un progetto di prova con una ventina di foto, per esempio da uno dei dataset di prova, viene elaborato fino alla fine.
- In Docker Desktop, Settings, Resources, la RAM assegnata è quella che intendevi e il disco virtuale è più grande dei 20 GB predefiniti.
Problemi frequenti#
Lo script o docker run si interrompe subito, oppure Docker Desktop non parte. È il caso più comune: virtualizzazione disabilitata nel BIOS oppure WSL2 non attivo. Ripeti i passi 1 e 2. Dopo ogni modifica al BIOS riavvia e verifica in Gestione attività.
Errori strani negli script di WebODM, riferimenti a caratteri \r o "command not found" con nomi corretti. Il repository è stato clonato senza --config core.autocrlf=input. Cancella la cartella e ripeti il clone con il comando esatto del passo 6.
"Out of memory" durante l'elaborazione. La RAM assegnata a Docker Desktop è insufficiente per il numero di immagini. Vale per ODX e per ODM. Aumentala in Settings, Resources, oppure riduci il dataset. La tabella di riferimento è nella guida sui requisiti.
"No space left on device". Il disco virtuale di Docker ha raggiunto il limite predefinito di 20 GB, anche se il tuo disco fisico è quasi vuoto. Aumenta la dimensione in Settings, Resources.
Porta 8000 (o 3000) già occupata. Un altro programma usa la stessa porta. La guida agli errori comuni spiega come individuarlo e come cambiare porta; per NodeODM basta cambiare il primo numero in -p.
ODM da riga di comando non trova le immagini. Il percorso passato a -v non è quello giusto per Git Bash, oppure le foto non sono nella sottocartella images. Controlla il percorso con ls dalla stessa shell prima di lanciare il contenitore.
Ho un'installazione vecchia clonata da OpenDroneMap. Il repository storico oggi reindirizza a quello di WebODM. Punta il repository al nuovo indirizzo e aggiorna: i due comandi sono nella guida su aggiornare e fare backup. Se invece vuoi passare alla linea ODM, la guida Repository, immagini Docker e migrazioni tratta entrambe le direzioni.
Prossimi passi#
- Elabora il primo dataset: Il primo progetto passo passo.
- Confronta i comandi delle due linee su tutte le piattaforme: Installazione a confronto.
- Attiva la scheda video: GPU NVIDIA.
- Tieni l'installazione aggiornata e al sicuro: Aggiornare, fare backup e ripristinare.
Fonti
- docs.webodm.org — installazione Docker di WebODM e opzioni di webodm.sh: https://docs.webodm.org/(link esterno)
- github.com/WebODM/WebODM — repository di WebODM: https://github.com/WebODM/WebODM(link esterno)
- docs.opendronemap.org — installazione e uso di ODM e NodeODM: https://docs.opendronemap.org/(link esterno)
- opendronemap.org/download — OpenDroneMap Desktop e vie di installazione della linea ODM: https://opendronemap.org/download/(link esterno)
- Docker Hub, immagini
opendronemap/odmeopendronemap/nodeodm: https://hub.docker.com/r/opendronemap/odm(link esterno) · https://hub.docker.com/r/opendronemap/nodeodm(link esterno) - Docker Desktop per Windows: https://docs.docker.com/desktop/setup/install/windows-install/(link esterno)
- Microsoft, installazione di WSL: https://learn.microsoft.com/windows/wsl/install(link esterno)
Guide correlate
Requisiti hardware WebODM e OpenDroneMap: RAM, CPU, disco, GPU
Iniziare · Base · Entrambe le linee
Installare WebODM o OpenDroneMap Desktop su Windows
Installazione · Base · Entrambe le linee
OpenDroneMap Desktop: installazione su Windows, macOS e Linux
Installazione · Base · Solo OpenDroneMap / ODM
ODM e ODX da riga di comando con Docker
Installazione · Avanzato · Entrambe le linee
NodeODX/NodeODM, ClusterODX/ClusterODM e nodi remoti
Installazione · Avanzato · Entrambe le linee
GPU NVIDIA con WebODM/ODX e ODM: cosa accelera e come attivarla
Installazione · Avanzato · Entrambe le linee
Aggiornare, fare il backup e ripristinare: WebODM e OpenDroneMap
Installazione · Intermedio · Entrambe le linee
Installare WebODM o OpenDroneMap: comandi e download a confronto
Confronto ODM/ODX · Intermedio · Entrambe le linee
Errori comuni di WebODM e OpenDroneMap: significato e rimedi
Risoluzione problemi · Intermedio · Entrambe le linee