← All articles
turned on laptop computer

Maybe: The Open-Source Personal Finance App You Can Self-Host

Finance 2026-03-15 · 5 min read maybe personal-finance net-worth budgeting self-hosted
By Selfhosted Guides Editorial TeamSelf-hosting practitioners covering open source software, home lab infrastructure, and data sovereignty.

Most personal finance apps ask you to hand over your bank credentials or link your accounts through aggregators like Plaid. You get a nice dashboard in exchange for trusting a third party with some of the most sensitive data you own. For a lot of people, that tradeoff is uncomfortable — or simply not acceptable.

Photo by Joshua Aragon on Unsplash

Maybe is the alternative. It's an open-source personal finance app designed to be self-hosted, so your financial data lives on your own infrastructure. The project was originally a commercial SaaS product that raised over $1M before the founder open-sourced it entirely and rebuilt it as a community project. That history shows in the polish: Maybe looks and feels like a proper product, not a hobby project.

What Maybe Does

Maybe focuses on net worth tracking and investment portfolio management — two areas where most free tools either fall short or require account linking.

The core features:

The Plaid integration is optional. If you'd rather not use it, you can import transactions manually via CSV exports from your bank or brokerage. Many users find this preferable — it's slightly more work but completely severs the data-sharing chain.

Running Maybe with Docker

Maybe ships with an official Docker Compose setup, which makes deployment straightforward.

Prerequisites: Docker, Docker Compose, a server or local machine with a few hundred MB of RAM.

Pull the compose file:

curl -o docker-compose.yml https://raw.githubusercontent.com/maybe-finance/maybe/main/docker-compose.example.yml

The default compose file starts Maybe with a Postgres database. Before running it, create a .env file with the required configuration:

# .env
SECRET_KEY_BASE=<generate with: openssl rand -hex 64>
POSTGRES_PASSWORD=<choose a strong password>
APP_DOMAIN=localhost  # or your domain if exposing externally
SELF_HOSTING_ENABLED=true

Then start the stack:

docker compose up -d

After a minute or so, Maybe will be available at http://localhost:3000. On first load you'll create an admin account. There's no onboarding wizard — you're dropped into the dashboard and can start adding accounts.

Adding Your Accounts

Maybe organizes your financial picture around accounts. Each account represents an asset or liability — a checking account, a brokerage account, your home's estimated value, a loan, etc.

To add one, click New Account and pick a type. For manual accounts, you set a starting balance and optionally import transactions. For connected accounts (Plaid), you authenticate with your institution through the standard Plaid flow — but this is entirely opt-in.

A typical setup might include:

Maybe's net worth chart updates as you add accounts and log values. It's particularly good at showing investment allocation — once you've added brokerage accounts, it breaks down holdings by type, sector, and individual position.

Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.

Importing Transactions

For manual accounts, Maybe accepts CSV imports in a flexible format. Most banks and brokerages offer CSV exports from their transaction history pages.

The import flow is simple: go to an account, click Import, upload your CSV, and map the columns (date, amount, description). Maybe handles debits and credits, categorizes transactions using a built-in rule engine, and deduplicates on reimport so you can safely re-upload overlapping date ranges.

If you have years of history, this is worth the one-time effort. Once the historical data is loaded, ongoing maintenance is just uploading a monthly export — five minutes per account.

Reverse Proxying with Nginx

If you want to access Maybe from outside your home network (or on a custom domain inside your network), add an Nginx reverse proxy block:

server {
    listen 443 ssl;
    server_name finance.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/finance.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/finance.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:3000;
        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;
    }
}

Since this is financial data, keep it behind authentication if you're exposing it externally. Pair it with a VPN (WireGuard, Tailscale) or at minimum add HTTP Basic Auth in front of it.

Keeping Maybe Updated

Maybe is under active development. To update:

docker compose pull
docker compose up -d

The compose stack handles database migrations automatically on startup. Check the GitHub releases page for a changelog before major version bumps — the project occasionally introduces breaking changes that require manual steps.

Maybe vs. Alternatives

If you're evaluating Maybe against other self-hosted finance tools:

Firefly III is more powerful for budgeting and transaction categorization, but lighter on investment tracking. If your main goal is envelope budgeting or detailed spending analysis, Firefly is stronger. If you care more about net worth and portfolio composition, Maybe has the edge.

Actual Budget excels at zero-based budgeting and is simpler to operate. It doesn't have investment portfolio features at all — it's purely a budgeting tool.

Ghostfolio focuses exclusively on investment portfolio tracking with sophisticated benchmarking and allocation analysis. If you want a dedicated portfolio tool and don't need integrated budgeting, Ghostfolio is excellent.

Maybe's strength is doing both — tracking your full financial picture (cash + investments + liabilities) in a single interface with production-quality UX.

When Self-Hosting Makes Sense

Self-hosted Maybe is a good fit if:

It's less ideal if you want fully automated account syncing without any manual steps — the Plaid path works, but for the most privacy-conscious users, that defeats the purpose. For fully offline tracking, expect to spend 10–20 minutes a month on CSV imports.

Either way, the fact that a polished personal finance platform is available as a self-hosted option at all is worth noting. The open-source release of what was previously a $1M-funded SaaS product is a meaningful donation to the self-hosting community.

Get free weekly tips in your inbox. Subscribe to Self-Hosted Weekly