Docs · Install

Install SteadyPlan

Most people run SteadyPlan on Docker or Unraid with a host-mounted data directory. The only hard requirement is that /app/data persists — that’s where your database and keys live.

Evaluate safely first

Best order: screenshots/tour first, then your own local install on LAN or VPN if you want hands-on evaluation. Public demo access can be useful, but only as a deliberate read-only setup by the host — not as the default trust path for real use.

Quick install (Docker)

Pull the image, run the container, and map a host folder to /app/data.

docker pull ghcr.io/jahumac/steadyplan:latest
docker run -d \
  --name steadyplan \
  --restart unless-stopped \
  -p 8000:8000 \
  -v /path/to/steadyplan-data:/app/data \
  ghcr.io/jahumac/steadyplan:latest

On Unraid, a common host path is /mnt/user/appdata/steadyplan. Older installs may still reference the historical shelly-finance name (image or data folder). You can switch images without wiping data as long as you keep the same /app/data mount.

Docker Compose (optional)

If you prefer Compose, this is the minimal shape:

services:
  steadyplan:
    image: ghcr.io/jahumac/steadyplan:latest
    container_name: steadyplan
    ports:
      - "8000:8000"
    volumes:
      - ./data:/app/data
    restart: unless-stopped

Then:

docker compose up -d

Developer install (from source)

If you are cloning the repo or building locally:

# 1. Clone and enter the repo
git clone https://github.com/Jahumac/steadyplan
cd steadyplan

# 2. Create a virtual environment
python -m venv .venv
source .venv/bin/activate           # Windows: .venv\Scripts\activate

# 3. Install dependencies (locked, with hashes)
pip install -r requirements.txt --require-hashes

# 4. Run
python run.py

Dependencies are locked via pip-tools. If you add or update a dependency, see CONTRIBUTING.md.

Then open http://localhost:8000.

First run

  • Open http://YOUR_SERVER:8000.
  • On first visit you’ll be prompted to create an admin account.
  • Your database is created under the mounted data directory (typically finance.db).

Where your data lives

Your persistent app data is in the host path you mounted to /app/data. It typically includes:

  • finance.db (SQLite database)
  • secret_key.txt (Flask secret key; keep this with the database)
  • backups/ (optional whole-instance SQLite backups created from the app)

Use from phone

SteadyPlan runs on your server/NAS/desktop. Your phone does not host the app — it just connects to your instance in a browser.

  • Use it from desktop, tablet, or phone browser on your LAN/VPN.
  • Where supported, you can install it as a web app (PWA) from the browser “Add to Home Screen” / “Install app” menu.

Update

Before updating, take a backup (see Backups & restore).

docker compose pull
docker compose up -d

If you run SteadyPlan with a plain docker run command instead of Compose, pull the new image and recreate the container with the same /app/data mount. A plain restart on its own will keep the old image.

GitHub (secondary)

GitHub is the source-of-truth for releases and development: Releases, Issues, Source.

Next: Backups · Reverse proxy · Privacy