Deploy Firefly III

Self-hosted personal finance manager with budgets, rules and Postgres

Deploy Firefly III

/var/lib/postgresql/data

Just deployed

/var/www/html/storage

Deploy and Host Firefly III on Railway

Firefly III is a free, open-source personal finance manager. It uses double-entry bookkeeping to track your accounts, income and expenses, and adds budgets, categories, bills, piggy banks, recurring transactions, rules and reports. It runs in your browser and has a full REST API, so your financial data stays on a server you control.

About Hosting Firefly III

Hosting Firefly III means running its PHP web app next to a database, keeping uploaded files and API keys on disk, and running a daily cron job for recurring transactions, auto-budgets and bill reminders. This template runs the official fireflyiii/core 6.7.9 image, pinned by digest, with Railway's PostgreSQL. A volume holds Firefly's storage folder. The first user is created from the email you enter and a generated password, and open sign-up closes after that. A loop inside the same service calls Firefly's cron endpoint every hour. A /health check, which also queries the database, gates every deploy.

Common Use Cases

  • Track bank accounts, credit cards, cash and savings in one place with double-entry bookkeeping
  • Set monthly budgets, schedule recurring bills and income, and watch spending by category
  • Import bank exports with the Firefly III Data Importer, or automate bookkeeping through the REST API

Dependencies for Firefly III Hosting

  • PostgreSQL 18 (Railway's postgres-ssl image, with a volume)
  • A volume for Firefly III's storage folder (uploads, OAuth keys, sessions)

Deployment Dependencies

Implementation Details

First sign-in. Open your Railway domain and sign in with ADMIN_EMAIL and the generated ADMIN_PASSWORD (Firefly III service → Variables), then change the password under Options → Profile. The account is created only while the database has no users, so changing ADMIN_PASSWORD later has no effect. Registration closes once this user exists (Firefly's single-user mode). To let others sign up, turn it off under Administration → Configuration, or invite people from there.

Cron. The start command runs a background loop that calls /api/v1/cron/STATIC_CRON_TOKEN on the local web server 5 minutes after start-up and then every hour. Firefly runs each job at most once a day, so recurring transactions are created on their due date. Set CRON_INTERVAL (seconds) to change how often it checks.

Settings. The start command sets these defaults: PostgreSQL, TRUSTED_PROXIES=** (so HTTPS links work behind Railway's proxy), TZ=UTC, DEFAULT_LANGUAGE=en_US, logs to stdout (LOG_CHANNEL=stdout, level notice) and MAIL_MAILER=log. To change any of them except the database driver, add a service variable with the same name, for example TZ=Europe/Amsterdam.

Email. No mail server is configured, so password-reset and notification emails are written to the log instead of being sent. To send them, set MAIL_MAILER=smtp, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_ENCRYPTION and MAIL_FROM.

API and Data Importer. Create a personal access token under Options → Profile → OAuth. The OAuth keys are stored on the volume, so tokens keep working after redeploys and upgrades.

Runs as root. RAILWAY_RUN_UID=0 lets the container prepare the Railway volume at start-up. PHP-FPM still serves requests as www-data.

Why Deploy Firefly III on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Firefly III on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
51
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
52