Deploy Maybe
Monarch Money alternative. Self-hosted personal finance app
Just deployed
/var/lib/postgresql/data
Just deployed
Redis
Just deployed
/data
Just deployed
maybe-storage
Bucket
Just deployed
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.

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.

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.
Template Content
Redis
redis:8.2maybe-storage
Bucket
