Files
cryptomon/README.md
T
2026-08-25 06:37:14 +01:00

2.7 KiB

Cryptomon

A self-hosted, single-binary crypto portfolio dashboard backed by Kraken. Read-only: it tracks your holdings, cost cryptomon, and P&L — it never places trades or moves funds.

Features

  • Live portfolio value and P&L, updating in real time from Kraken's websocket ticker, visible in the top bar on every page.
  • Per-position detail (holdings, cost cryptomon, current value) and a transfers view.
  • Auto-imports trades and balances from Kraken; supports manual ledger entries for anything bought elsewhere.
  • Single-user authentication: username/password + optional TOTP-based MFA (with QR code setup), all served over your own network.
  • Kraken API credentials are encrypted at rest.

Requirements

  • Go 1.26+ (to build from source)
  • A Kraken account and API key with read-only permissions (Query Funds, Query Closed Orders & Trades — no withdrawal or trading rights needed)

Setup

Build the binary:

go build -o cryptomon .

Run it:

./cryptomon

On first run it creates a data/ directory next to the binary containing:

  • settings.conf — port, poll intervals, base currency, and a random encryption key used to encrypt your Kraken API secret at rest
  • app.db — SQLite database (portfolio data, login, MFA state)

By default the server listens on :8080 — open http://localhost:8080.

First login

The default login is admin / admin. On first sign-in you'll be required to set your own username and password. From there, MFA (authenticator app via TOTP, with QR code setup) can optionally be enabled from the Account page.

If you forget your credentials, run:

./cryptomon -userreset

This resets the login back to admin / admin and disables MFA. You'll be asked to set a new username/password on next sign-in.

Connect Kraken

Go to Settings and enter a Kraken API key/secret with read-only permissions. Balances and trade history will sync automatically on the configured poll interval.

Configuration

data/settings.conf is a plain key=value file, auto-created with defaults on first run:

Key Default Meaning
port 8080 HTTP listen port
poll_interval_seconds 60 How often balances/trades/prices refresh
history_refresh_seconds 300 How often historical price deltas refresh
db_path data/app.db Path to the SQLite database
base_currency GBP Currency all values are displayed in (also changeable from Settings)
app_secret (random, generated once) AES-256 key encrypting Kraken credentials at rest — do not share or edit

Edit port and restart to change the listen address; the rest can also be changed from the web UI where applicable.


License

See LICENSE.