Railway

Deploy Maybe

Monarch Money alternative. Self-hosted personal finance app

Deploy Maybe

/var/lib/postgresql/data

Just deployed

Just deployed

/data

Just deployed

maybe-storage

Bucket

Just deployed

Maybe logo

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

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 Maybe transactions list showing income and expense totals Maybe checking account balance chart above recent activity

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 webghcr.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

VariablePurpose
SELF_HOSTEDEnables self-hosted mode and the Self-Hosting settings page
SECRET_KEY_BASESigns sessions and seeds the record encryption keys
DB_HOST, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DBPostgreSQL connection
REDIS_URL / CACHE_REDIS_URLSidekiq queues; Rails cache on a separate Redis db
APP_DOMAINHost used in generated links and outgoing email
SIDEKIQ_WEB_USERNAME, SIDEKIQ_WEB_PASSWORDBasic auth for /sidekiq
REQUIRE_EMAIL_CONFIRMATIONOff by default; turn on once SMTP is configured
ACTIVE_STORAGE_SERVICE, S3_*, AWS_ENDPOINT_URL_S3Object 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

Hardware Requirements for Self-Hosting Maybe

ResourceMinimumRecommended
CPU1 vCPU (web) + 0.5 vCPU (worker)2 vCPU + 1 vCPU
RAM512 MB web, 512 MB worker1 GB web, 1 GB worker
Storage1 GB PostgreSQL5 GB PostgreSQL plus object storage
RuntimeRuby 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

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
42
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51