first commit
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# 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:
|
||||
|
||||
```sh
|
||||
go build -o cryptomon .
|
||||
```
|
||||
|
||||
Run it:
|
||||
|
||||
```sh
|
||||
./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:
|
||||
|
||||
```sh
|
||||
./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](LICENSE).
|
||||
Reference in New Issue
Block a user