-
Notifications
You must be signed in to change notification settings - Fork 1
Deployment EN
This document describes how to install, configure and update Spendify. For backup, restore and database management → database.en.md. For installation on native Mac, Linux with Ollama and Windows with llama.cpp → installazione.en.md.
- Quick installation (one-liner Docker)
- Docker Compose installation from repository
- Native installation (development / Mac)
- Updating the application
- Docker operational commands
- Troubleshooting
- Uninstall
| Concept | Analogy | What it means in practice |
|---|---|---|
| Image | Cooking recipe | The package containing all the code and dependencies |
| Container | Cooked dish | The running app, created from the image |
| Volume | External notebook | The persistent folder where the database lives — survives even if the container is deleted |
What does NOT delete your data:
-
docker compose down✅ safe -
docker compose up -d --build✅ safe (rebuilds the image, data intact)
What DELETES data:
-
docker compose down -v⚠️ deletes the volumes — use only for a full reset
The only prerequisite is Docker Desktop installed and running.
Mac / Linux:
curl -fsSL https://raw.githubusercontent.com/drake69/spendify/main/installer/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/drake69/spendify/main/installer/install.ps1 | iexThe script creates the ~/spendify/ folder, downloads the image from GitHub Container Registry, starts the container and opens the browser at http://localhost:8501 automatically.
Local AI included (optional): the script asks whether to install Ollama with the
gemma3:12bmodel — downloaded automatically in the background on first start (~8 GB, ~10–15 minutes). Alternatively you can configure an external API key (OpenAI/Anthropic) from the ⚙️ Settings page.
Update:
docker compose --project-directory ~/spendify pull && docker compose --project-directory ~/spendify up -d
Uninstall:
curl -fsSL https://raw.githubusercontent.com/drake69/spendify/main/installer/uninstall.sh | bash
Suitable for those who want to modify the code or configure LLM profiles (Ollama, llama.cpp).
git clone https://github.com/drake69/spendify.git spendify
cd spendifycp .env.example .envdocker compose up -d --build-
--buildforces the image to be rebuilt (required on first launch or after code updates) -
-dstarts in the background
The app is available at http://localhost:8501
The REST API is available at http://localhost:8000 · Interactive docs: http://localhost:8000/docs
# Ollama (Linux / server with GPU)
docker compose --profile ollama up -d
# llama.cpp (Windows / CPU)
docker compose --profile llama-cpp up -dFor complete LLM backend configuration → installazione.en.md.
| Tool | Minimum version |
|---|---|
| Python | 3.13 |
| uv | any — curl -Ls https://astral.sh/uv/install.sh | sh
|
git clone https://github.com/drake69/spendify.git spendify
cd spendify
uv sync
cp .env.example .env
uv run streamlit run app.pyThe app is available at http://localhost:8501
To also start the REST API in development:
uv run uvicorn api.main:app --host 0.0.0.0 --port 8000The
ledger.dbdatabase is created automatically in the project folder on first launch.
docker compose --project-directory ~/spendify pull
docker compose --project-directory ~/spendify 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.pyDatabase migrations are applied automatically on startup — no manual intervention is required.
# Container status
docker compose ps
# Real-time logs
docker compose logs -f spendify
# Healthcheck
docker inspect spendify_app --format='{{.State.Health.Status}}'
# Stop (data intact)
docker compose down
# Stop + remove orphan containers (data intact)
docker compose down --remove-orphans
# ⚠️ Full reset including volumes (DATA LOSS)
docker compose down -vFor the one-liner installation, add --project-directory ~/spendify to every command, e.g. docker compose --project-directory ~/spendify logs -f.
# Check what is using the port
lsof -i :8501
# Native
pkill -f "streamlit run app.py"
# Docker
docker compose down && docker compose up -ddocker compose logs --tail=50 spendifyCommon causes:
-
.envmissing or incorrect values - Volume not mounted correctly
- Port 8501 already in use
The gemma3:12b model requires ~8 GB of RAM. Change the model from the ⚙️ Settings page:
| Model | Required RAM |
|---|---|
gemma3:12b |
~8 GB |
qwen2.5:7b |
~5 GB |
llama3.2:3b |
~3 GB |
Errors such as database is locked, file corruption, restore from backup → database.en.md.
The uninstall scripts interactively remove all Spendify components. No data is deleted without explicit confirmation.
Mac / Linux:
curl -fsSL https://raw.githubusercontent.com/drake69/spendify/main/installer/uninstall.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/drake69/spendify/main/installer/uninstall.ps1 | iexThe script asks separately for each component:
| What | Detail |
|---|---|
| Transaction database | Volumes spendify_data and spendify_logs
|
| Ollama models | Volume ollama_models (~8 GB) |
| llama.cpp + models/ folder |
llama.cpp:server image + GGUF files |
| Docker images |
ghcr.io/drake69/spendify + ollama/ollama (~500 MB–1 GB) |
| Installation folder |
~/spendify/ (or SPENDIFY_INSTALL_DIR) |
| Docker Desktop removal guide | Step-by-step guide for macOS / Linux / Windows |