← All articles
PRODUCTIVITY Self-Hosting Ghostfolio: Open Source Wealth Manageme... 2026-02-09 · ghostfolio · investment-tracking · portfolio

Self-Hosting Ghostfolio: Open Source Wealth Management and Portfolio Tracking

Productivity 2026-02-09 ghostfolio investment-tracking portfolio finance wealth-management

Most investment tracking happens across a patchwork of brokerage accounts, spreadsheets, and free tools that sell your data. You log into three different platforms to see your full picture, or you hand everything to a service like Personal Capital that mines your financial data for lead generation. Ghostfolio offers a clean alternative: a single dashboard for all your investments, running on your own server.

Ghostfolio is an open source wealth management application that tracks stocks, ETFs, cryptocurrencies, and other assets across multiple accounts. It provides portfolio performance analytics, asset allocation breakdowns, and dividend tracking — all without sending your financial data to a third party.

What Ghostfolio Does

Ghostfolio focuses on the investment tracking side of personal finance:

What it doesn't do

Ghostfolio is not a budgeting tool or a full accounting system. It tracks what you own and how it's performing. For day-to-day spending and budgeting, pair it with something like Actual Budget or Firefly III.

Ghostfolio vs. Personal Capital vs. Sharesight

Feature Ghostfolio Personal Capital (Empower) Sharesight
Self-hosted Yes No No
Open source Yes No No
Free tier Unlimited (self-hosted) Yes (with upsells) 10 holdings
Stocks/ETFs Yes Yes Yes
Crypto Yes Limited No
Multi-currency Yes USD-centric Yes
Dividend tracking Yes Basic Excellent
Tax reporting No No Yes (AU/NZ/CA/UK)
Bank link No (manual entry) Yes Some brokerages
Performance method Time-weighted Time-weighted Time-weighted
Benchmarking Yes Yes Yes
Data privacy Full control Data monetized SaaS
Cost Free (self-hosted) Free (sells advisory) Free-$31/mo
Mobile app PWA Native iOS/Android Native iOS/Android

When to choose which

Ghostfolio is best if you want full control of your financial data, track assets across countries and currencies, and are willing to enter transactions manually.

Personal Capital (Empower) is best if you want automatic bank/brokerage linking and don't mind the platform using your data to pitch advisory services.

Sharesight is best if you need tax-lot reporting for Australian, New Zealand, Canadian, or UK tax purposes.

Self-Hosting Ghostfolio: Setup

Server requirements

Ghostfolio runs a Node.js backend with PostgreSQL and Redis:

Docker Compose setup

services:
  ghostfolio:
    container_name: ghostfolio
    image: ghostfolio/ghostfolio:latest
    ports:
      - "3333:3333"
    environment:
      NODE_ENV: "production"
      ACCESS_TOKEN_SALT: "change-me-to-a-random-string"
      DATABASE_URL: "postgresql://ghostfolio:ghostfolio@postgres:5432/ghostfolio"
      JWT_SECRET_KEY: "change-me-to-another-random-string"
      REDIS_HOST: "redis"
      REDIS_PORT: "6379"
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_started
    restart: always

  postgres:
    container_name: ghostfolio-db
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: "ghostfolio"
      POSTGRES_USER: "ghostfolio"
      POSTGRES_PASSWORD: "ghostfolio"
    volumes:
      - ghostfolio-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ghostfolio"]
      interval: 10s
      timeout: 5s
      retries: 5
    restart: always

  redis:
    container_name: ghostfolio-redis
    image: redis:7-alpine
    restart: always

volumes:
  ghostfolio-db:

Generating secrets

Before starting, generate proper secrets for the two required values:

# Generate ACCESS_TOKEN_SALT
openssl rand -hex 32

# Generate JWT_SECRET_KEY
openssl rand -hex 32

Replace change-me-to-a-random-string and change-me-to-another-random-string with the generated values.

Starting the service

docker compose up -d

Access Ghostfolio at http://your-server:3333. The default admin credentials are displayed on the login page on first run. Change the admin password immediately after logging in.

Market Data Yahoo Finance API Exchange rates prices Ghostfolio NestJS API Portfolio analytics Performance tracking Multi-currency Redis Caching PostgreSQL Portfolios & data Dashboard Web UI (PWA) serve

Setting Up Your Portfolio

Creating accounts

Accounts in Ghostfolio represent your real-world brokerage and investment accounts:

  1. Go to Accounts in the sidebar
  2. Click Add Account
  3. Enter the account name (e.g., "Fidelity 401k", "Coinbase", "Interactive Brokers")
  4. Select the account currency
  5. Optionally set the account platform for icon display

Adding activities

Activities are your buy/sell transactions:

  1. Go to Activities (or Portfolio > Activities)
  2. Click Add Activity
  3. Select the activity type: Buy, Sell, Dividend, or Fee
  4. Search for the asset by ticker symbol or name
  5. Enter the date, quantity, unit price, and any fees
  6. Assign it to the correct account

Ghostfolio looks up assets using Yahoo Finance tickers. For US stocks, use the standard symbol (AAPL, MSFT). For international stocks, use the Yahoo Finance format (e.g., VWCE.DE for a German-listed ETF).

Adding cryptocurrencies

Crypto assets follow the same process:

  1. Create an activity with type Buy
  2. Search for the cryptocurrency (BTC, ETH, SOL, etc.)
  3. Enter the purchase date, quantity, and price
  4. Assign to your crypto account

Ghostfolio fetches live crypto prices automatically.

Bulk import

For larger portfolios, use CSV import:

  1. Go to Activities > Import
  2. Upload a CSV file with columns for date, type, symbol, quantity, price, fee, currency, and account
  3. Review and confirm the imported transactions

Most brokerages let you export transaction history as CSV, which you can format to match Ghostfolio's expected columns.

Portfolio Analysis

Performance overview

The main dashboard shows:

Asset allocation

The allocation view breaks down your portfolio by:

These breakdowns help identify concentration risk and rebalancing opportunities.

Benchmarking

Compare your portfolio performance against common benchmarks:

  1. Go to Portfolio > Analysis
  2. Select a benchmark index (S&P 500, MSCI World, etc.)
  3. View your portfolio's performance overlaid on the benchmark

This answers the perennial question: "Am I doing better or worse than just buying an index fund?"

Dividend view

If you hold dividend-paying assets, Ghostfolio tracks:

Multi-Currency Support

Ghostfolio handles multi-currency portfolios natively:

This is particularly useful for investors who hold US-listed ETFs alongside European or Asian market securities.

Reverse Proxy Setup

Caddy:

portfolio.yourdomain.com {
    reverse_proxy localhost:3333
}

Nginx:

server {
    server_name portfolio.yourdomain.com;

    location / {
        proxy_pass http://localhost:3333;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Backup Strategy

Back up the PostgreSQL database regularly:

# Backup the database
docker exec ghostfolio-db pg_dump -U ghostfolio ghostfolio > ghostfolio-backup-$(date +%Y%m%d).sql

# Restore from backup
docker exec -i ghostfolio-db psql -U ghostfolio ghostfolio < ghostfolio-backup-20260209.sql

Include the database backup in your regular backup routine (restic, borg, etc.).

Honest Trade-offs

Ghostfolio is great if you:

Consider Personal Capital (Empower) instead if you:

Consider Sharesight instead if you:

Consider a spreadsheet instead if you:

The bottom line: Ghostfolio fills the gap between manual spreadsheets and data-hungry commercial platforms. It gives you a clean, modern portfolio dashboard without requiring you to hand over your financial data. The manual transaction entry is the main trade-off — there's no automatic bank sync. But for people who value data privacy and invest across multiple countries and currencies, that trade-off is often worth it.