-
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)
.envconfiguration- 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
# 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
The
ledger.dbdatabase is created automatically in the project folder on first launch.
The .env file contains only two parameters. All other settings (LLM, API keys, date format, language, etc.) are configured from the interface on the ⚙️ Settings page.
cp .env.example .env| Parameter | Description | Default |
|---|---|---|
SPENDIFY_DB |
SQLite database URI | sqlite:///ledger.db |
TAXONOMY_PATH |
Path to the categories YAML file | taxonomy.yaml |
SPENDIFY_DB=sqlite:///ledger.db
TAXONOMY_PATH=taxonomy.yaml
# Only for the llama-cpp profile:
# LLAMA_MODEL=gemma-3-4b-it-Q4_K_M.ggufNever add
.envto git — verify that.gitignorecontains the line.env.
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 |