-
Notifications
You must be signed in to change notification settings - Fork 1
Installazione
Tre scenari coperti:
- Mac — installazione nativa (consigliata, massime prestazioni LLM)
- Linux — Docker con Ollama come container separato
- Windows — Docker con llama.cpp server come container separato
Il backend LLM, l'URL del server, le API key e il modello si configurano dall'app stessa nella pagina ⚙️ Impostazioni — non nel file
.env.Il file
.envcontiene solo il percorso del database e della tassonomia.
La configurazione viene salvata nel database (user_settings) e persiste tra i riavvii. Al primo avvio l'app usa Ollama su localhost:11434 come default.
Sì, una volta sola. L'app non scarica i modelli automaticamente — il server LLM deve avere il modello disponibile prima di avviare operazioni che lo richiedono (categorizzazione, pulizia descrizioni).
Nota: l'app funziona anche senza LLM attivo. Import, ledger, regole, analisi e report sono sempre disponibili. Se il LLM non è raggiungibile, le transazioni ricevono categoria "Altro" e
to_review=True.
Ollama su Mac usa l'accelerazione Metal (Apple Silicon) o OpenCL (Intel). Dentro Docker questa accelerazione non è disponibile → inferenza 5-10x più lenta.
git clone https://github.com/drake69/spendify.git spendify
cd spendifycurl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.zshrc # oppure riapri il terminaleuv synccp .env.example .env
# Il file .env non richiede modifiche per un'installazione locale standard# Installa Ollama (una tantum)
brew install ollama
# oppure scarica da https://ollama.com
# Avvia il server Ollama in background
ollama serve &
# Scarica il modello (una tantum — ~8 GB per gemma3:12b, ~2 GB per gemma3:4b)
ollama pull gemma3:12b
# Versione più leggera per Mac con RAM < 16 GB:
# ollama pull gemma3:4bIl modello viene scaricato una sola volta in
~/.ollama/models/e riutilizzato ad ogni avvio successivo.
uv run streamlit run app.pyL'app è disponibile su http://localhost:8501
Vai su ⚙️ Impostazioni → sezione Backend LLM:
- Backend:
Ollama (locale) - URL:
http://localhost:11434 - Modello:
gemma3:12b(o il modello che hai scaricato)
ollama serve & # se non è già in esecuzione
uv run streamlit run app.pyQuesta configurazione avvia due container:
-
spendify_app— l'applicazione web -
spendify_ollama— il server LLM Ollama
git clone https://github.com/drake69/spendify.git spendify
cd spendifycp .env.example .env
# Nessuna modifica necessaria per l'installazione baseInstalla il toolkit e decommenta le righe GPU in docker-compose.yml nella sezione ollama:
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart dockerPoi in docker-compose.yml decommenta:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]docker compose --profile ollama up -d# ~8 GB di download, qualche minuto di attesa
docker compose exec ollama ollama pull gemma3:12b
# Versione più leggera:
# docker compose exec ollama ollama pull gemma3:4bIl modello viene salvato nel volume Docker
spendify_ollama_modelse persiste tra i riavvii. Non serve riscaricarlo.
Vai su ⚙️ Impostazioni → sezione Backend LLM:
- Backend:
Ollama (locale) - URL:
http://ollama:11434← nome del servizio Docker, nonlocalhost - Modello:
gemma3:12b
docker compose --profile ollama down # stop
docker compose --profile ollama up -d # riavvio
docker compose logs -f # logs
docker compose exec ollama ollama list # modelli scaricatiSu Windows usiamo llama.cpp server come backend LLM perché funziona in Docker senza configurazioni GPU complesse ed è compatibile con l'API OpenAI (già supportata da Spendify).
- Docker Desktop installato e avviato (backend WSL2)
- Git per Windows: https://git-scm.com/download/win
Apri PowerShell o Git Bash:
git clone https://github.com/drake69/spendify.git spendify
cd spendifyScarica un file GGUF da HuggingFace. Consigliato per CPU:
| Modello | Dimensione | RAM necessaria |
|---|---|---|
| gemma-3-4b-it-Q4_K_M.gguf | ~2.5 GB | 6 GB |
| gemma-3-12b-it-Q4_K_M.gguf | ~7.5 GB | 12 GB |
Crea la cartella models e mettici il file scaricato:
mkdir models
# Sposta il file .gguf nella cartella models\copy .env.example .envApri .env e decommenta la riga LLAMA_MODEL con il nome del file scaricato:
LLAMA_MODEL=gemma-3-4b-it-Q4_K_M.ggufdocker compose --profile llama-cpp up -dIl primo avvio richiede qualche minuto (Docker scarica le immagini).
Vai su ⚙️ Impostazioni → sezione Backend LLM:
- Backend:
OpenAI-compatible - URL:
http://llama-cpp:8080/v1← nome del servizio Docker, nonlocalhost - API Key:
none - Modello: nome del file GGUF senza
.gguf, es.gemma-3-4b-it-Q4_K_M
docker compose --profile llama-cpp down # stop
docker compose --profile llama-cpp up -d # riavvio
docker compose logs -f # logs
docker compose ps # stato container- Scarica LM Studio: https://lmstudio.ai
- Nella scheda Discover cerca e scarica
gemma-3-4b-it - Vai su Local Server → premi Start Server (porta
1234) - Avvia Spendify con Docker normale (senza profile):
docker compose up -d - Nell'app ⚙️ Impostazioni → Backend LLM:
- Backend:
OpenAI-compatible - URL:
http://host.docker.internal:1234/v1 - API Key:
lm-studio - Modello:
gemma-3-4b-it(o il nome mostrato in LM Studio)
- Backend:
Il database è salvato nel volume Docker spendify_data e persiste tra i riavvii e gli aggiornamenti dell'app.
Per backup, ripristino, spostamento su un altro computer e ispezione diretta → Guida database.
| Scenario | Comando |
|---|---|
| Mac nativo | uv run streamlit run app.py |
| Linux + Ollama Docker | docker compose --profile ollama up -d |
| Windows + llama.cpp Docker | docker compose --profile llama-cpp up -d |
| Windows + LM Studio esterno | docker compose up -d |
Il modello va riscaricato ad ogni avvio? No. Viene salvato una volta sola:
- Ollama nativo →
~/.ollama/models/ - Ollama Docker → volume
spendify_ollama_models - llama.cpp → cartella
./models/
Posso cambiare modello dopo il primo avvio?
Sì. Vai in ⚙️ Impostazioni, cambia il nome del modello e salva. Per Ollama scarica prima il modello: ollama pull <modello> (nativo) o docker compose exec ollama ollama pull <modello> (Docker).
Posso usare OpenAI o Anthropic invece di un LLM locale?
Sì. In ⚙️ Impostazioni seleziona OpenAI o Anthropic e inserisci la API key. Nessun container LLM necessario.
L'URL del server LLM cambia tra installazione nativa e Docker? Sì:
- LLM nativo sull'host →
http://localhost:11434(o1234per LM Studio) - LLM in container Docker → usa il nome del servizio (
http://ollama:11434ohttp://llama-cpp:8080) - LLM sull'host, app in Docker →
http://host.docker.internal:11434
Posso fare il backup anche con l'installazione one-liner?
Sì. L'installazione one-liner usa lo stesso volume Docker spendify_data. → Guida database
Posso spostare i dati su un altro computer? Sì. → Spostare il database