Intermedio 12 minPiano giornaliero

Ripristinare Open WebUI e Ollama dopo un panne

Ripristinare Open WebUI e Ollama dopo un guasto non significa semplicemente ricopiare una cartella: le conversazioni, la configurazione e i modelli non hanno né lo stesso peso, né lo stesso valore, né lo stesso modo di essere recuperati. Questa guida separa queste tre famiglie, fornisce i comandi di backup e ripristino per un'installazione Docker classica e spiega come verificare da te che la copia sia utilizzabile. Indica anche con precisione cosa è stato verificato sul campo e cosa no.

Di Mohamed Meguedmi·Agg. 2026-10-31·Testato su Windows, macOS e Linux

#Cosa occorre davvero salvare

Uno stack locale tipico si compone di due elementi: Ollama, il servizio che carica i modelli e risponde su http://localhost:11434, e Open WebUI, l'interfaccia web che memorizza gli account, la cronologia e le impostazioni. Quando un disco si guasta, un aggiornamento rompe un container o si elimina per errore un volume Docker, non sono le stesse cose a sparire, e non si sostituiscono allo stesso prezzo.

I modelli pesano molto ma si possono riscaricare. Le conversazioni, gli account utente, i prompt salvati e i documenti caricati sono unici: senza una copia, vanno persi. È quindi su Open WebUI che lo sforzo di backup deve concentrarsi in via prioritaria, mentre per Ollama bisogna soprattutto conservare un elenco preciso di ciò che era installato.

Un backup che non è mai stato ripristinato resta un'ipotesi. L'unica prova che funziona è ripristinarlo altrove, su un'istanza isolata, e ritrovarci i tuoi dati. La sezione «Dimostrare che il ripristino funziona» descrive in dettaglio questo controllo; pianificalo fin dal primo backup, non il giorno del guasto.

#Conversazioni, configurazione, modelli: tre famiglie distinte

Il kit completo per creare il tuo assistente IA.

Approfitta della nostra esperienza e di un percorso guidato per creare il tuo assistente locale e usare la tua IA ogni giorno.

  • Spazio online a vita
  • PDF + file
  • Garanzia di rimborso di 30 giorni
Conversazioni e account
Cronologia delle chat, utenti, gruppi, prompt, impostazioni di amministrazione salvate nell'interfaccia. Con la configurazione predefinita, tutto questo risiede in un database SQLite (file webui.db) nella cartella dei dati di Open WebUI, montata nel container su /app/backend/data. Se hai impostato DATABASE_URL verso PostgreSQL, questi dati si trovano in PostgreSQL e si salvano con gli strumenti di PostgreSQL, non copiando il volume.
Documenti e indice
File caricati (sottocartella uploads) e indice vettoriale usato dalla ricerca nei documenti (sottocartella vector_db con il database vettoriale predefinito). Si trovano nello stesso volume di webui.db, ma il loro ripristino non è stato verificato nell'ambito di questa guida: vedi la sezione dedicata ai limiti.
Configurazione di deployment
Cosa non si trova nel volume: il comando docker run o il file docker-compose.yml, le variabili d'ambiente (WEBUI_SECRET_KEY, OLLAMA_BASE_URL, DATABASE_URL…), il tag e il digest esatto dell'immagine, la configurazione del reverse proxy. Da versionare a parte, senza lasciarci segreti in chiaro in un repository condiviso.
Modelli Ollama
I pesi dei modelli e i relativi manifest, nella cartella models di Ollama. Voluminosi, riscaricabili finché il modello resta pubblicato. I modelli personalizzati creati con un Modelfile sono l'eccezione: bisogna conservare il Modelfile.
!
Copiare un volume non copia tutto
Se il comando di avvio, la versione dell'immagine o la variabile WEBUI_SECRET_KEY non sono annotati, un ripristino può avviarsi su un'altra versione di Open WebUI o invalidare le sessioni in corso. Salva il volume E il modo in cui il container è stato avviato.

#Prerequisiti

Installazione di riferimento
Open WebUI in Docker con un volume con nome (open-webui nel comando di installazione documentato) e il database SQLite predefinito. Per un'installazione pip o un volume montato su una cartella dell'host, il principio è identico: cambia solo il percorso.
Accesso
Un terminale con i permessi Docker sulla macchina e uno spazio di archiviazione esterno a questa macchina (disco esterno, NAS, altro server). Una copia sullo stesso disco non protegge da un guasto del disco.
Finestra di arresto
Qualche minuto durante il quale Open WebUI può essere arrestato. Copiare un file SQLite mentre è in fase di scrittura può produrre una copia incoerente.
Istanza di test
Un posto dove ripristinare senza toccare la produzione: bastano un altro nome di container e un altro volume sulla stessa macchina, con un'altra porta.

Se Open WebUI non è ancora installato, inizia dalla guida Open WebUI con Ollama elencata in fondo alla pagina: la procedura qui sotto parte dal comando Docker che vi è descritto.


#Backup di Open WebUI: volume, versione e configurazione

  1. 01
    1. Annotare la versione e la configurazione
    Prima di qualsiasi copia, annota l'immagine utilizzata, la sua impronta (digest) e le variabili d'ambiente. Ripristinare i dati sulla stessa versione evita di dipendere da una migrazione del database che potrebbe non essere stata verificata. Attenzione: l'output di docker inspect contiene le tue variabili, quindi eventuali segreti. Conserva questo file con la stessa cautela del backup stesso.
  2. 02
    2. Arrestare il container
    docker stop open-webui dà all'applicazione il tempo di chiudere correttamente il database. In questo modo le conversazioni in fase di scrittura vengono completate prima della copia.
  3. 03
    3. Archiviare il volume
    Un container temporaneo monta il volume in sola lettura e produce un archivio datato nella cartella corrente. Il volume non viene modificato.
  4. 04
    4. Riavviare e portare la copia fuori dalla macchina
    Riavvia il container, poi copia l'archivio e il file di configurazione sullo storage esterno. Calcola un hash SHA-256 per rilevare in seguito un archivio danneggiato durante il trasferimento.
Terminale — passaggio 1: versione e configurazione
mkdir -p ~/sauvegardes-ia && cd ~/sauvegardes-ia

# Image et empreinte réellement utilisées
docker inspect open-webui --format '{{.Config.Image}}' > open-webui-image-$(date +%F).txt
docker image inspect "$(docker inspect open-webui --format '{{.Config.Image}}')" \
  --format '{{index .RepoDigests 0}}' >> open-webui-image-$(date +%F).txt

# Variables et montages (contient des secrets : à protéger)
docker inspect open-webui > open-webui-inspect-$(date +%F).json
Terminale — passaggi da 2 a 4: arresto, archivio, riavvio
docker stop open-webui

docker run --rm \
  -v open-webui:/data:ro \
  -v "$PWD":/backup \
  alpine tar czf /backup/open-webui-$(date +%F).tar.gz -C /data .

docker start open-webui

sha256sum open-webui-$(date +%F).tar.gz > open-webui-$(date +%F).tar.gz.sha256
ls -lh ~/sauvegardes-ia

Se il tuo volume ha un altro nome, trovalo con docker inspect open-webui nella sezione Mounts. Se usi docker compose, il nome reale del volume ha spesso come prefisso il nome del progetto: docker volume ls lo mostra. Con PostgreSQL, aggiungi un pg_dump del database: in quel caso l'archivio del volume non contiene più la cronologia delle conversazioni.

→
Esportare dall'interfaccia come complemento
Open WebUI offre anche delle esportazioni dall'interfaccia (conversazioni nelle impostazioni utente, database nel pannello di amministrazione a seconda delle versioni). Utili per recuperare una cronologia individuale, non sostituiscono l'archivio completo del volume: non contengono né i file caricati né la configurazione di deployment.

#Eseguire il backup di Ollama e dei suoi modelli

Per quanto riguarda Ollama, il punto non è tanto copiare decine di gigabyte quanto poter ricostruire esattamente lo stesso parco modelli. Per questo, nella maggior parte dei casi bastano tre elementi: l'elenco dei modelli con il loro tag esatto (qwen3:8b non è qwen3:8b-q8_0), i Modelfile dei modelli personalizzati e le impostazioni del servizio (variabili come OLLAMA_HOST, OLLAMA_MODELS o OLLAMA_KEEP_ALIVE, spesso in un override di systemd).

Terminale — inventario Ollama
cd ~/sauvegardes-ia

# Liste des modèles installés, étiquettes comprises
ollama list > ollama-list-$(date +%F).txt

# Modelfile d'un modèle personnalisé (répéter pour chacun)
ollama show --modelfile mon-modele > Modelfile-mon-modele

# Réglages du service sous Linux avec systemd
systemctl cat ollama > ollama-service-$(date +%F).txt

Se ti preoccupano la banda o la disponibilità futura di un modello, puoi anche copiare la cartella dei modelli. La sua posizione dipende dall'installazione: ~/.ollama/models su macOS, C:\Users\<utente>\.ollama\models su Windows, /usr/share/ollama/.ollama/models con lo script di installazione Linux, oppure il volume montato su /root/.ollama con l'immagine Docker ufficiale. La variabile OLLAMA_MODELS, se definita, ha la precedenza su questi percorsi. Arresta Ollama durante la copia per evitare di congelare un download scritto a metà.

i
Limite importante
Il trasferimento della cartella dei modelli Ollama su un'altra macchina non è stato testato per questa guida. Il metodo descritto qui (copia della cartella models, permessi mantenuti, stessa versione di Ollama) segue la struttura documentata, ma non viene presentato come verificato. La via sicura resta riscaricare ogni modello con ollama pull a partire dall'elenco salvato.

#Ripristinare Open WebUI e Ollama dopo un guasto: la procedura

L'ordine conta: prima Ollama, così che l'interfaccia trovi i suoi modelli all'avvio, poi i dati di Open WebUI, poi il container con la stessa immagine e le stesse variabili di prima. Ripristina in un volume nuovo anziché sopra un volume esistente: in caso di errore, quello vecchio resta intatto.

  1. 01
    1. Verificare l'archivio
    Controlla l'hash SHA-256 prima di ripristinare. Un archivio troncato da una copia interrotta si rileva qui, non dopo aver sovrascritto qualcosa.
  2. 02
    2. Ripristinare Ollama
    Reinstalla Ollama, riapplica le variabili del servizio, poi esegui di nuovo ollama pull per ogni modello dell'elenco e ollama create per ogni Modelfile personalizzato. Verifica che l'API risponda su http://localhost:11434.
  3. 03
    3. Ricreare il volume Open WebUI
    Crea un volume vuoto ed estrai l'archivio al suo interno con un container temporaneo. Il nome del volume deve corrispondere a quello del tuo comando di avvio.
  4. 04
    4. Riavviare con la stessa immagine
    Usa l'immagine annotata al momento del backup (tag o, meglio, digest) e le stesse variabili d'ambiente, in particolare WEBUI_SECRET_KEY e OLLAMA_BASE_URL se le avevi definite.
  5. 05
    5. Controllare prima di riaprire l'accesso
    Accedi, apri alcune conversazioni vecchie, verifica che i modelli compaiano. Solo dopo, riapri l'accesso agli altri utenti.
Terminale — ripristino Open WebUI (SQLite, Docker)
cd ~/sauvegardes-ia
sha256sum -c open-webui-AAAA-MM-JJ.tar.gz.sha256

# Volume neuf, puis décompression de l'archive dedans
docker volume create open-webui
docker run --rm \
  -v open-webui:/data \
  -v "$PWD":/backup:ro \
  alpine sh -c "cd /data && tar xzf /backup/open-webui-AAAA-MM-JJ.tar.gz"

# Relance avec l'image notée lors de la sauvegarde
docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

Sostituisci AAAA-MM-JJ con la data del tuo archivio e ghcr.io/open-webui/open-webui:main con l'immagine esatta annotata al passaggio 1 del backup. Aggiungi le opzioni -e che usavi (segreto, URL di Ollama, database). Se esiste ancora un vecchio volume open-webui e vuoi conservarlo per precauzione, ripristina in un volume con un altro nome e adatta l'opzione -v.

Terminale — ricostruire il parco Ollama dall'elenco
# Première colonne de ollama list, sans la ligne d'en-tête
tail -n +2 ollama-list-AAAA-MM-JJ.txt | awk '{print $1}' | while read -r modele; do
  ollama pull "$modele"
done

# Modèles personnalisés
ollama create mon-modele -f Modelfile-mon-modele

curl http://localhost:11434/api/tags

Un modello personalizzato ricreato a partire dal suo Modelfile richiede che il modello di base citato nella riga FROM sia presente: scarica prima i modelli di base, poi crea le varianti. Se nel frattempo un modello è stato rimosso dalla libreria Ollama, ollama pull fallirà; è l'unico caso in cui una copia della cartella models avrebbe evitato la perdita.

#Dimostrare che il ripristino funziona prima di averne bisogno

Il test più utile si fa a freddo, in un giorno senza guasti: ripristina l'ultimo archivio in un'istanza separata e verifica di ritrovarci dati noti. Un account e una conversazione di test, creati apposta con un contenuto riconoscibile, fanno da testimone: se ricompaiono, la catena backup-ripristino funziona almeno per il database.

Terminale — istanza di controllo isolata
docker volume create open-webui-controle
docker run --rm \
  -v open-webui-controle:/data \
  -v "$PWD":/backup:ro \
  alpine sh -c "cd /data && tar xzf /backup/open-webui-AAAA-MM-JJ.tar.gz"

docker run -d -p 3001:8080 \
  -v open-webui-controle:/app/backend/data \
  --name open-webui-controle \
  ghcr.io/open-webui/open-webui:main

# Après vérification dans le navigateur sur http://localhost:3001
docker rm -f open-webui-controle
docker volume rm open-webui-controle
Connexion
L'account testimone accede con la sua password originale.
Cronologia
La conversazione testimone è presente, con il suo contenuto completo, insieme ad alcune vecchie conversazioni reali.
Impostazioni
Le impostazioni di amministrazione, i prompt salvati e gli utenti sono quelli attesi.
Documenti
Se usi la ricerca nei documenti, fai una domanda la cui risposta si trova in un file caricato. È un controllo da fare da te: non è coperto dalla verifica descritta più sotto.
Trace
Annota la data, l'archivio utilizzato e il risultato. Senza questa traccia, sarà impossibile affermare in seguito che il backup è stato testato.

L'istanza di controllo non ha bisogno di accedere a Ollama per verificare gli account e la cronologia: questi dati provengono dal database, non dai modelli. Mostrerà semplicemente un elenco di modelli vuoto, come previsto.

#Cosa è stato verificato e cosa no

Il 30/10/2026, il backup e poi il ripristino di Open WebUI sono stati verificati in un contesto volutamente ristretto: container Docker Open WebUI su architettura arm64, database SQLite predefinito, senza rete né GPU. Un account e una conversazione fittizi, creati prima del backup, sono stati ritrovati dopo il ripristino. Questo risultato riguarda esclusivamente questo perimetro preciso, e nient'altro.

Verificato
Account e conversazioni memorizzati in SQLite, ritrovati dopo l'archiviazione del volume e il ripristino in un'istanza isolata.
Non verificato
Documenti importati e indice vettoriale (ricerca nei documenti).
Non verificato
Modelli Ollama: né la copia della cartella models, né il suo trasferimento su un'altra macchina.
Non verificato
Ripristino su una versione di Open WebUI diversa da quella del backup (migrazione del database).
Non verificato
Installazioni con PostgreSQL, su x86_64 con GPU o dietro un reverse proxy.

Per tutto ciò che è indicato come «non verificato», la procedura descritta segue il funzionamento documentato, ma va controllata sulla tua installazione prima di essere considerata affidabile. È proprio questo il ruolo dell'istanza di controllo della sezione precedente. Qui non viene indicata alcuna durata di ripristino né alcun volume di dati: dipendono interamente dalle dimensioni del tuo database e dei tuoi modelli.

!
Aggiornamenti e migrazioni
All'avvio, una versione più recente di Open WebUI può modificare lo schema del database. Il ripristino di un archivio vecchio su un'immagine più recente, o viceversa, non è stato verificato qui. Fai un backup subito prima di ogni aggiornamento e conserva l'impronta dell'immagine precedente per poter tornare indietro.

#Risoluzione dei problemi

Schermata di creazione account invece della cronologia
L'archivio è stato estratto nel posto sbagliato (un livello di cartella di troppo) o in un volume diverso da quello montato. Elenca il contenuto con docker run --rm -v open-webui:/data alpine ls -la /data: webui.db deve trovarsi nella radice.
Sessioni rifiutate dopo il ripristino
WEBUI_SECRET_KEY è cambiata tra la vecchia e la nuova istanza. Gli account restano nel database; in genere basta effettuare di nuovo l'accesso. Imposta la variabile esplicitamente per le prossime volte.
Nessun modello nell'elenco
Open WebUI non raggiunge Ollama. Verifica che Ollama risponda su http://localhost:11434 dall'host e che OLLAMA_BASE_URL punti a un indirizzo raggiungibile dal container (host.docker.internal con l'opzione --add-host).
Errore del database all'avvio
Copia eseguita a container acceso, oppure immagine diversa da quella del backup. Riparti da un archivio creato a container fermo e riavvia con l'immagine annotata.
ollama create échoue
Il modello di base della riga FROM del Modelfile non è installato. Esegui prima ollama pull sur per questo modello.
Archivio anormalmente piccolo
Volume montato vuoto o nome del volume errato. Controlla docker volume ls e la sezione Mounts del container originale prima di concludere che i dati siano andati persi.

#Per approfondire

Il backup è solo una parte della gestione di uno stack locale. Queste guide trattano l'installazione di Open WebUI, che qui funge da punto di partenza, la manutenzione ordinaria di Ollama e la messa in servizio di Ollama in Docker.

Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.