-
Notifications
You must be signed in to change notification settings - Fork 1
Deployment
Questo documento descrive come installare, configurare e aggiornare Spendif.ai. Per backup, ripristino e gestione del database β database.md. Per installazione su Mac nativo, Linux con Ollama e Windows con llama.cpp β installazione.md.
- Installazione rapida (one-liner Docker)
- Installazione Docker Compose da repository
- Installazione nativa (sviluppo / Mac) 3b. App desktop nativa (macOS / Windows / Linux)
- Configurazione
.env - Aggiornare l'applicazione
- Comandi operativi Docker
- Risoluzione problemi
- Disinstallazione
| Concetto | Analogia | Cosa significa in pratica |
|---|---|---|
| Image | Ricetta di cucina | Il pacchetto con tutto il codice e le dipendenze |
| Container | Piatto cucinato | L'app in esecuzione, creata dall'immagine |
| Volume | Quaderno esterno | La cartella persistente dove sta il database β sopravvive anche se il container viene cancellato |
Cosa NON cancella i tuoi dati:
-
docker compose downβ sicuro -
docker compose up -d --buildβ sicuro (ricostruisce l'immagine, dati intatti)
Cosa CANCELLA i dati:
-
docker compose down -vβ οΈ cancella i volumi β usare solo per reset completo
L'unico prerequisito Γ¨ Docker Desktop installato e avviato.
Mac / Linux:
curl -fsSL https://raw.githubusercontent.com/drake69/spendifai/main/installer/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/drake69/spendifai/main/installer/install.ps1 | iexLo script crea la cartella ~/spendifai/, scarica l'immagine da GitHub Container Registry, avvia il container e apre il browser su http://localhost:8501 automaticamente.
AI locale inclusa (opzionale): lo script chiede se installare Ollama con il modello
gemma3:12bβ scaricato automaticamente in background al primo avvio (~8 GB, ~10β15 minuti). In alternativa puoi configurare una API key esterna (OpenAI/Anthropic) dalla pagina βοΈ Impostazioni.
Aggiornamento:
docker compose --project-directory ~/spendifai pull && docker compose --project-directory ~/spendifai up -d
Disinstallazione:
curl -fsSL https://raw.githubusercontent.com/drake69/spendifai/main/installer/uninstall.sh | bash
Adatta a chi vuole modificare il codice o configurare profili LLM (Ollama, llama.cpp).
git clone https://github.com/drake69/spendif-ai.git spendifai
cd spendifaicp .env.example .envdocker compose up -d --build-
--buildforza la ricostruzione dell'immagine (necessario al primo avvio o dopo aggiornamenti del codice) -
-davvia in background
L'app Γ¨ disponibile su http://localhost:8501
La REST API Γ¨ disponibile su http://localhost:8000 Β· Docs interattive: http://localhost:8000/docs
# Ollama (Linux / server con GPU)
docker compose --profile ollama up -d
# llama.cpp (Windows / CPU)
docker compose --profile llama-cpp up -dPer la configurazione completa dei backend LLM β installazione.md.
| Strumento | Versione minima |
|---|---|
| Python | 3.13 |
| uv | qualsiasi β curl -Ls https://astral.sh/uv/install.sh | sh
|
git clone https://github.com/drake69/spendif-ai.git spendifai
cd spendifai
uv sync
cp .env.example .env
# Script di avvio (consigliato)
./start.sh # solo UI (default)
./start.sh api # solo REST API
./start.sh all # UI + API
# Su Windows
start.bat # stesse opzioni: ui | api | all
# Oppure manualmente
uv run streamlit run app.pyL'app Γ¨ disponibile su http://localhost:8501
Per avviare anche la REST API manualmente:
uv run uvicorn api.main:app --host 0.0.0.0 --port 8000Il database
ledger.dbviene creato automaticamente nella cartella del progetto al primo avvio.
Spendif.ai puΓ² girare come applicazione desktop nativa β una finestra nativa (pywebview) che incorpora il server Streamlit. Nessun Terminal, nessun browser esterno.
- Finestra nativa con WebKit (macOS), Edge WebView2 (Windows) o GTK/WebKit (Linux)
- Download automatico del modello LLM consigliato per l'hardware (1β7 GB in base alla RAM)
- Configurazione llama.cpp zero-touch β al primo avvio tutto funziona senza intervento
- Splash screen con progress bar durante il caricamento
| Piattaforma | Comando |
|---|---|
| macOS (installer) | bash packaging/macos/install.sh |
| macOS (Homebrew) | brew tap drake69/spendifai && brew install --cask spendifai |
| Windows | Right-click install.ps1 β "Esegui con PowerShell" |
| Windows (winget) | winget install SpendifAi.SpendifAi |
| Ubuntu/Debian (.deb) | bash packaging/linux/build-deb.sh && sudo apt install ./build/spendifai_*.deb |
| Ubuntu/Debian (script) | bash packaging/linux/install-debian.sh |
| Red Hat/Fedora (.rpm) | bash packaging/linux/build-rpm.sh && sudo dnf install ./build/spendifai-*.rpm |
| Red Hat/Fedora (script) | bash packaging/linux/install-redhat.sh |
uv sync --extra desktop
uv run python -m desktop.launcher- Installa Python, uv e le dipendenze di sistema (pywebview richiede WebKit/GTK su Linux)
- Clona il repository e crea il virtualenv con
uv sync --extra desktop - Rileva l'hardware (RAM, GPU) e scarica il modello GGUF consigliato da HuggingFace
- Configura
.envconLLM_BACKEND=local_llama_cppe il path del modello - Crea un launcher (
.appsu macOS, shortcut su Windows,.desktopsu Linux)
Dati utente: il database e i modelli sono in
~/.spendifai/(macOS/Linux) o%APPDATA%\Spendif.ai\(Windows), separati dal codice. Reinstallare il codice non tocca i dati.
Il file .env contiene solo due parametri. Tutte le altre impostazioni (LLM, API key, formato date, lingua, ecc.) si configurano dall'interfaccia nella pagina βοΈ Impostazioni.
cp .env.example .env| Parametro | Descrizione | Default |
|---|---|---|
SPENDIFAI_DB |
URI del database SQLite | sqlite:///ledger.db |
TAXONOMY_PATH |
Percorso del file YAML usato come seed iniziale delle categorie. A runtime la tassonomia vive nel DB (taxonomy_category / taxonomy_subcategory) ed Γ¨ gestibile dalla UI. Il YAML viene letto solo al primo avvio o quando si cambia lingua. |
taxonomy.yaml |
SPENDIFAI_DB=sqlite:///ledger.db
TAXONOMY_PATH=taxonomy.yaml
# Solo per il profilo llama-cpp:
# LLAMA_MODEL=gemma-3-4b-it-Q4_K_M.ggufNon aggiungere mai
.enva git β verificare che.gitignorecontenga la riga.env.
docker compose --project-directory ~/spendifai pull
docker compose --project-directory ~/spendifai up -dgit pull origin main
docker compose down
docker compose up -d --buildgit pull origin main
uv sync
pkill -f "streamlit run app.py"
uv run streamlit run app.pyLe migrazioni del database vengono applicate automaticamente all'avvio β non Γ¨ necessario alcun intervento manuale.
# Stato container
docker compose ps
# Log in tempo reale
docker compose logs -f spendifai
# Healthcheck
docker inspect spendifai_app --format='{{.State.Health.Status}}'
# Stop (dati intatti)
docker compose down
# Stop + rimuovi container orfani (dati intatti)
docker compose down --remove-orphans
# β οΈ Reset completo inclusi i volumi (PERDITA DATI)
docker compose down -vPer l'installazione one-liner aggiungere --project-directory ~/spendifai a ogni comando, es. docker compose --project-directory ~/spendifai logs -f.
# Controlla cosa usa la porta
lsof -i :8501
# Nativa
pkill -f "streamlit run app.py"
# Docker
docker compose down && docker compose up -ddocker compose logs --tail=50 spendifaiCause comuni:
-
.envmancante o valori errati - Volume non montato correttamente
- Porta 8501 giΓ in uso
Il modello gemma3:12b richiede ~8 GB di RAM. Cambia modello dalla pagina βοΈ Impostazioni:
| Modello | RAM richiesta |
|---|---|
gemma3:12b |
~8 GB |
qwen2.5:7b |
~5 GB |
llama3.2:3b |
~3 GB |
Errori tipo database is locked, corruzione del file, ripristino da backup β database.md.
Gli script di disinstallazione rimuovono interattivamente tutti i componenti Spendif.ai. Nessun dato viene cancellato senza conferma esplicita.
Mac / Linux:
curl -fsSL https://raw.githubusercontent.com/drake69/spendifai/main/installer/uninstall.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/drake69/spendifai/main/installer/uninstall.ps1 | iexLo script chiede separatamente:
| Cosa | Dettaglio |
|---|---|
| Database delle transazioni | Volumi spendifai_data e spendifai_logs
|
| Modelli Ollama | Volume ollama_models (~8 GB) |
| llama.cpp + cartella models/ | Immagine llama.cpp:server + file GGUF |
| Immagini Docker |
ghcr.io/drake69/spendif-ai + ollama/ollama (~500 MBβ1 GB) |
| Cartella di installazione |
~/spendifai/ (o SPENDIFAI_INSTALL_DIR) |
| Istruzioni rimozione Docker Desktop | Guida testuale per macOS / Linux / Windows |
Per le installazioni native (non Docker), ogni piattaforma ha il suo uninstaller:
| Canale | Comando |
|---|---|
| macOS (script) | bash packaging/macos/uninstall.sh |
| macOS (Homebrew) |
brew uninstall --cask spendifai (per rimuovere anche i dati: --zap) |
| Windows (script) |
.\packaging\windows\uninstall.ps1 (supporta -Silent) |
| Windows (App & features) | Impostazioni β App β Spendif.ai β Disinstalla |
| Windows (winget) | winget uninstall SpendifAi.SpendifAi |
| Ubuntu/Debian | sudo apt remove spendifai |
| Fedora/RHEL | sudo dnf remove spendifai |
| Linux (script) | bash packaging/linux/uninstall.sh |
Tutti gli uninstaller chiedono conferma interattiva prima di rimuovere i dati utente (~/.spendifai/). I modelli AI vengono chiesti separatamente (possono occupare 1β7 GB).
Dati preservati: la disinstallazione del codice (via package manager o script) non rimuove il database e i modelli in
~/.spendifai/. Per una pulizia completa, usare lo script di uninstall o rimuovere manualmente~/.spendifai/.