
A self-hosted investment tracker for a portfolio that does not fit in one country. Indian stocks and mutual funds, global stocks and ETFs, fixed deposits and bank balances across India, Singapore and Australia, all valued into one base currency, with the exchange rate shown next to every figure it touched.
Get startedโ ยท Put it on a domainโ ยท Documentationโ
Nestivesh ships as one Docker image, manjurn/nestivesh (linux/amd64 and linux/arm64).
One container serves the web app and the API on port 8080.
# docker-compose.yml
services:
nestivesh:
image: manjurn/nestivesh:latest
container_name: nestivesh
restart: unless-stopped
ports:
- '8080:8080'
volumes:
- ./data:/data
- ./uploads:/uploads
environment:
NESTIVESH_UPLOADS_DIR: /uploads
mkdir -p data uploads && sudo chown -R 1001:1001 data uploads # the container runs as uid 1001
docker compose up -d
Open http://<server>:8080 and create the administrator. The full, commented
file and walkthrough: Installationโ . For anything beyond your own
machine, put it behind Traefik or Caddy on a proper domainโ .
| ๐ฆ Installationโ | Docker Compose with bind mounts for /data and /uploads |
| ๐ Reverse proxy and HTTPSโ | Traefik or Caddy, a real domain, automatic certificates |
| ๐ First runโ | Administrator, first user, first import |
| ๐ Importing spreadsheetsโ | Tradebooks, CAS statements, deposits and balances |
| ๐ฑ Forexโ | Feed rates, margins and manual overrides |
| ๐ฅ Accounts and accessโ | Users, the administrator and export accounts |
| โฐ Scheduled refreshโ | Prices, NAVs and rates every weeknight |
| ๐พ Backup and restoreโ | What to copy, and how to copy it safely |
| ๐งฉ REST APIโ | Everything the UI does, from a script |
| ๐ค MCP serverโ | Nestivesh as tools for Claude, an IDE or n8n |
| โ๏ธ Configurationโ | Every environment variable |
| โ FAQ and limitationsโ | What it will not do, and why |
Indian stocks and mutual funds. Upload a broker tradebook or a registrar statement and the holdings appear. FIFO cost basis by default (the Indian statutory method), weighted average if you prefer. Fund NAVs come from AMFI's official daily feed, with ten years of history backfilled, so a fund's chart is its real NAV line with your purchases marked on it.
Look inside your funds. The same bank usually sits inside several of your funds. Nestivesh weights each fund's latest portfolio disclosure by what your units are worth today and combines them, so a stock held by five funds shows once, with the five contributions behind it. ETFs are opened up the same way.
Global stocks and ETFs. Every trade carries its own currency, so US, Australian, Singaporean and UK trades live in one file. Each holding shows the native figure, the base-currency figure, and the rate that converted it.
Honest forex. Provider rates are stored exactly as fetched. On top of them you set a percentage margin, an absolute margin or a manual rate per pair, and the app shows feed rate, adjustment and effective rate side by side.
Deposits and cash. Indian FDs and RDs, Singapore fixed deposits and Australian term deposits, each with the compounding its bank actually uses. Bank balances are snapshots, and anything older than 30 days is flagged as stale.
One number for all of it. The dashboard converts everything into your base currency and lists what it had to assume: missing rates, missing prices, stale balances.
Multi-user and private. Each portfolio belongs to its owner. The administrator decides who gets in but cannot see anyone's records.
The API is the product. The browser uses the same REST API you can, and the same API is an MCP server for AI assistants.
Note: Nestivesh is not investment advice. Prices and rates are indicative and may be delayed.
Content type
Image
Digest
sha256:2fbabd287โฆ
Size
47.8 MB
Last updated
about 4 hours ago
docker pull manjurn/nestivesh