
Deploy Firefly III
Self-hosted personal finance manager with budgets, rules and Postgres
Just deployed
/var/lib/postgresql/data
Firefly III
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-sslimage, with a volume) - A volume for Firefly III's storage folder (uploads, OAuth keys, sessions)
Deployment Dependencies
- Firefly III v6.7.9 release notes
- Firefly III Docker installation guide
- Firefly III cron job documentation
fireflyiii/coreimage on Docker Hub- Firefly III configuration reference (
.env.example)
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
Firefly III
fireflyiii/core:version-6.7.9ADMIN_EMAIL
