Skip to main content

Home server app

For servers run from an app panel such as Portainer, CasaOS, Dockge, Synology, Unraid or TrueNAS. Add Delta as an app, then finish setup in the browser.

Prefer a terminal? See Terminal install.

You need​

  • A machine running Docker (64-bit Intel/AMD or ARM, e.g. a Raspberry Pi 4/5) with an app panel.
  • Plaid keys: your client_id and Sandbox secret from Developers → Keys. Free for personal use (details).
  • A private network. Anyone who can open Delta sees your finances unless you set a password. Use your home network or Tailscale, never port forwarding. Security model.

1. Add Delta to your panel​

Every panel uses the same file: home-server/compose.yaml. Copy it.

PanelSteps
PortainerStacks → Add stack, name delta. Choose Repository with URL https://github.com/zeapsu/Delta and path home-server/compose.yaml (easiest updates), or Web editor and paste. Deploy the stack.
CasaOSApp Store → Custom Install (+) → Import, paste, Submit, Install.
Dockge+ Compose, name delta, paste, Deploy.
SynologyContainer Manager: Project → Create, name delta, Create docker-compose.yml, paste, Next, Done.
UnraidInstall Docker Compose Manager. Docker → Compose → Add New Stack, name delta, Edit Stack → Compose File, paste, Compose Up.
TrueNAS (24.10+)Apps → Discover Apps → ⋮ → Install via YAML, name delta, paste, Save.

Coolify, Komodo and other compose-based panels work the same way. Or from a terminal:

curl -fsSLO https://raw.githubusercontent.com/zeapsu/Delta/main/home-server/compose.yaml
docker compose -f compose.yaml up -d

2. Finish in the browser​

Open http://<server address>:3000, for example http://192.168.1.20:3000. A checklist walks you through:

  1. Plaid keys: Set up → Sandbox → paste → Save. Delta checks them with Plaid first.
  2. Bank: Connect account. Sandbox login: user_good / pass_good.
  3. History: Plaid takes a few minutes to send it. Delta keeps checking.
  4. Agent watch level: pick Relaxed, Balanced or Watchful.

After that Delta syncs every 6 hours and backs up daily.

Going live: get production access, then reinstall fresh (remove the stack and its volume) and choose Production. Sandbox and production data don't mix, so the environment is locked once a bank is linked.

Keys are stored in Delta's database on your server and never shown again. Settings → Plaid → Replace swaps them.

Optional settings​

Set these in your panel's environment section.

VariableDefaultPurpose
DELTA_PORT3000Published port
DELTA_URLAddress agents use, e.g. http://192.168.1.20:3000
DELTA_ALLOWED_NETWORKSprivate ranges + TailscaleWho may use the API. Narrow to e.g. 192.168.1.0/24
DELTA_ALLOWED_HOSTSOnly behind your own domain: the name, e.g. money.example.com (why)
DELTA_TAGlatestImage version

Update​

An Update pill appears in Delta's header when there's a new version. Pull the new image and recreate the stack:

  • Portainer: Pull and redeploy (Repository stacks), or Editor → Update the stack with Re-pull image on.
  • Dockge: Update.
  • Others: the app's update or "pull and recreate" action.

Data lives in the delta-data volume and survives updates. Delta keeps 7 daily backups in /data/backups.

Connect an agent​

Set DELTA_URL first, then open Settings → Agents in Delta, create a token and paste the config it shows into your agent. More in Connect an agent.

Uninstall​

Plaid bills per connected bank until it's removed, so disconnect first. In the delta container's console:

npm run unlink -- --yes

Then remove the stack, and delete the delta-data volume to erase your data. Details: Uninstall Delta.

Troubleshooting​

  • Page won't open: check the containers are running and the port is 3000 (or your DELTA_PORT).
  • "Could not start Plaid Link": your device's network isn't in DELTA_ALLOWED_NETWORKS.
  • "Delta doesn't know the address": you opened it under a public domain name. Add the name to DELTA_ALLOWED_HOSTS, or use the IP address.
  • Keys rejected: copy them again, and check the secret matches the environment you picked.
  • More in Troubleshooting.