---
title: "Deploy Maybe"
description: "Monarch Money alternative. Self-hosted personal finance app"
category: "Other"
url: https://railway.com/deploy/maybe-finance
---

# Deploy Maybe

Monarch Money alternative. Self-hosted personal finance app

**[Deploy Maybe on Railway](https://railway.com/template/maybe-finance)**

- **Creator:** A3A
- **Category:** Other
- **Total deploys:** 1

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### maybe https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/maybe.svg

- **Image:** ghcr.io/maybe-finance/maybe:latest
- **Health check:** /up
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### worker https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/maybe.svg

- **Image:** ghcr.io/maybe-finance/maybe:latest
- **Start command:** `/rails/bin/docker-entrypoint bundle exec sidekiq`

## Buckets

- **maybe-storage**

## Documentation

![Maybe logo](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ-CRON_Q-NZrRlti3BdSkZbcMLqiyOf2mfINCgvgW-l1pKz8TuAR8Dv_I&s=10)

# Deploy and Host Maybe on Railway

Maybe is an open-source personal finance app that pulls every account you own — checking, savings, credit cards, loans, brokerage, crypto, property and vehicles — into one net worth picture, with transactions and budgets on top. Built as a commercial product by Maybe Finance and released under AGPLv3, it sits closer to Monarch Money or Copilot Money than to a spreadsheet: balance charts, per-account activity feeds, a household two people can share, and a ledger you can filter, bulk-edit and categorize with rules. Self-host Maybe when you want that without giving a subscription service a view of your bank accounts.

Deploy Maybe the way its production Compose file runs it, split across four Railway services. A Rails web service serves the UI and API and holds the public domain; a Sidekiq worker runs the background queue and the jobs Maybe schedules at boot; managed PostgreSQL stores every account, entry and setting; managed Redis backs the Sidekiq queues and the shared Rails cache. Uploads go to a Railway object storage bucket rather than a disk, so web and worker read the same objects. Only the web service is reachable from the internet.

![Maybe Railway architecture](https://res.cloudinary.com/rroe4rtk/image/upload/v1786897233/15c49845-bac6-4b4a-919b-585200df4620.png)

## Getting Started with Maybe on Railway

Open the generated Railway URL and you land on a registration screen, not a login form — self-hosted Maybe ships with no seeded account and no default password, and the first person to register becomes admin of a new household. Passwords need eight characters, mixed case, a digit and a symbol. Three onboarding steps follow: name and optional profile photo, then currency, date format and theme, then a short goals step.

The first useful action on the empty dashboard is adding an account: **New asset → Cash → Enter account balance**, then a name, a starting balance and a subtype such as Checking. Add one entry from **Transactions → New transaction** and watch the balance move and the net worth chart redraw — that round trip proves the web service, PostgreSQL and the balance calculator are healthy. A profile photo upload is the quickest check that object storage works.

Before sharing the URL, open **Settings → Self-Hosting** and turn on **Require invite code for signup** — until you do, anyone with the address can create a household here. Background job health lives at `/sidekiq`, behind basic auth.

![Maybe dashboard with net worth trend and cash allocation](https://res.cloudinary.com/rroe4rtk/image/upload/v1786878227/maybe-dashboard.png)
![Maybe transactions list showing income and expense totals](https://res.cloudinary.com/rroe4rtk/image/upload/v1786878228/maybe-transactions.png)
![Maybe checking account balance chart above recent activity](https://res.cloudinary.com/rroe4rtk/image/upload/v1786878230/maybe-account-detail.png)

## About Hosting Maybe

Maybe is a Rails 7.2 application with a Hotwire front end, published as one image at `ghcr.io/maybe-finance/maybe`. That image runs both roles — Puma and Sidekiq — selected by the start command. Durable state lives in PostgreSQL; Redis carries the queue, cron and cache; object storage carries uploads.

Key capabilities:

- Net worth across cash, investments, crypto, property, vehicles, credit cards and loans
- A transaction ledger with categories, merchants, tags, bulk edits and rules
- Budgets with per-category targets and month-over-month comparison
- Multi-currency support and configurable date and number formats
- A household model with invited members, so a couple shares one instance
- CSV import for accounts and transactions, plus full data export
- An optional AI assistant over your own data, with your OpenAI key

Two things to know before committing. Maybe Finance archived the repository in July 2025 at **v0.6.0**, its final release: the app is complete and the image still runs, but expect no further updates or security patches, so keep signup invite-only. And live security prices and exchange rates came from Synth, a Maybe Finance service that shut down with the company — manual balances, transactions and budgets work without it, live pricing does not.

## Why Deploy Maybe on Railway

Railway removes the server work self-hosting a Rails app usually involves.

- Managed PostgreSQL and Redis, provisioned and connected for you
- Object storage for uploads, so no volume juggling between web and worker
- The Sidekiq worker runs as its own service and scales independently
- HTTPS, a public domain and HSTS with no reverse proxy to configure
- Database migrations run automatically on every deploy

## Common Use Cases for Self-Hosted Maybe

- Replacing a paid tracker such as Monarch Money, Copilot or Empower with an instance you control
- A private household ledger for a couple: two logins, one shared set of accounts
- Tracking illiquid assets — property, vehicles, private investments — mainstream apps handle poorly
- Consolidating CSV exports from several banks into one categorized transaction history

## Dependencies for Maybe on Railway

- **Maybe web** — `ghcr.io/maybe-finance/maybe:latest`, Puma on port 3000, health checked at `/up`
- **Maybe worker** — the same image started as `bundle exec sidekiq`, no public domain
- **PostgreSQL** — managed Postgres 18; system of record for accounts, entries and budgets
- **Redis** — managed Redis; Sidekiq queues and cron on db 0, Rails cache on db 1
- **Object storage** — S3-compatible bucket for profile photos, account logos and exports

### Environment Variables Reference

| Variable | Purpose |
|---|---|
| `SELF_HOSTED` | Enables self-hosted mode and the Self-Hosting settings page |
| `SECRET_KEY_BASE` | Signs sessions and seeds the record encryption keys |
| `DB_HOST`, `POSTGRES_USER`, `POSTGRES_PASSWORD`, `POSTGRES_DB` | PostgreSQL connection |
| `REDIS_URL` / `CACHE_REDIS_URL` | Sidekiq queues; Rails cache on a separate Redis db |
| `APP_DOMAIN` | Host used in generated links and outgoing email |
| `SIDEKIQ_WEB_USERNAME`, `SIDEKIQ_WEB_PASSWORD` | Basic auth for `/sidekiq` |
| `REQUIRE_EMAIL_CONFIRMATION` | Off by default; turn on once SMTP is configured |
| `ACTIVE_STORAGE_SERVICE`, `S3_*`, `AWS_ENDPOINT_URL_S3` | Object storage for uploads |
| `OPENAI_ACCESS_TOKEN`, `SMTP_*` | Optional AI assistant and outbound email |

`SECRET_KEY_BASE` must never change after first boot: the record encryption keys are derived from it, so rotating it makes encrypted columns unreadable.

### Deployment Dependencies

- Source: https://github.com/maybe-finance/maybe (AGPLv3, archived at v0.6.0)
- Image: `ghcr.io/maybe-finance/maybe`
- Self-hosting guide: https://github.com/maybe-finance/maybe/blob/main/docs/hosting/docker.md
- Runtime: Ruby 3.4, Rails 7.2, Sidekiq 8

## Hardware Requirements for Self-Hosting Maybe

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU (web) + 0.5 vCPU (worker) | 2 vCPU + 1 vCPU |
| RAM | 512 MB web, 512 MB worker | 1 GB web, 1 GB worker |
| Storage | 1 GB PostgreSQL | 5 GB PostgreSQL plus object storage |
| Runtime | Ruby 3.4, PostgreSQL 14+, Redis 6+ | Ruby 3.4, PostgreSQL 18, Redis 8 |

## Self-Hosting Maybe with Docker

Generate the one secret the app requires. This shell command produces a 64-byte hex string:

```
openssl rand -hex 64
```

The image runs both roles. This Compose fragment shows the split the template reproduces:

```
services:
  web:
    image: ghcr.io/maybe-finance/maybe:latest
    ports: ["3000:3000"]
    environment:
      SELF_HOSTED: "true"
      SECRET_KEY_BASE: "the value you just generated"
      DB_HOST: db
      POSTGRES_USER: maybe_user
      POSTGRES_PASSWORD: maybe_password
      POSTGRES_DB: maybe_production
      REDIS_URL: redis://redis:6379/0
  worker:
    image: ghcr.io/maybe-finance/maybe:latest
    command: bundle exec sidekiq
```

Leave the web service on the image's own entrypoint: it runs `db:prepare` before Puma starts, so overriding the command skips migrations.

## How Much Does Maybe Cost to Self-Host?

Maybe is free and open source under AGPLv3 — no licence key, seat limits or paid tier. The only cost is infrastructure: the web service, the worker, PostgreSQL, Redis and the object storage you actually use, which for a household instance is small. The optional AI assistant bills through your own OpenAI account and stays off unless you add a key.

## FAQ

**What is Maybe?**
An open-source personal finance and net worth app: add accounts, import or enter transactions, categorize them, and get dashboards, budgets and balance history.

**What does this Railway template deploy?**
A Rails web service, a Sidekiq worker on the same image, managed PostgreSQL, managed Redis and an object storage bucket, pre-wired with reference variables.

**Why does self-hosted Maybe need Redis and a separate worker service?**
Balance recalculation, imports, exports and daily scheduled jobs run through Sidekiq, which keeps its queues and cron schedule in Redis. Without a worker they never run.

**Why does this template use object storage instead of a disk?**
The worker writes generated exports and image variants that the web service then serves. A shared S3-compatible bucket lets both reach the same files; a per-service disk cannot.

**How do I create the first admin account in self-hosted Maybe?**
Register at the deployed URL — the first account becomes household admin. Then enable invite-code signup.

**Is Maybe still maintained?**
No. The repository was archived in July 2025 at v0.6.0. It works as shipped, but expect no further updates or security fixes, and keep signup restricted.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — [Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/maybe-finance
