Video tutorial coming soon.
Deploy Firefly III on Ubuntu with Docker — take full control of your finances with self-hosted double-entry bookkeeping, budget tracking, and bank data import.
Grab the automated bash script from GitHub to follow along with the video.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/firefly-iii/firefly-iii-ubuntu.sh
chmod +x firefly-iii-ubuntu.sh
sudo bash firefly-iii-ubuntu.sh
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/tools/firefly-iii/firefly-iii-ubuntu.sh
chmod +x firefly-iii-ubuntu.sh
Script deploys Firefly III with MySQL and the Firefly III Data Importer via Docker Compose. All containers start automatically.
sudo bash firefly-iii-ubuntu.sh
Open your browser and navigate to your server IP. Complete the registration page to create your admin account — only the first registration is allowed by default.
http://<your-server-ip>
Use the Data Importer tool at port 8080 with a CSV export from your bank to import historical transactions in bulk.
http://<your-server-ip>:8080
| Port | Purpose |
|---|---|
| 80 | Web UI |
| 8080 | Data Importer |
Firefly III is a free, open-source self-hosted personal finance manager built on double-entry bookkeeping principles — the same accounting method used by businesses. Every transaction has a source account and a destination account, ensuring your books always balance. You get full control over categorization, budgets, and bills without your financial data leaving your server or a subscription fee. Firefly III supports multiple currencies, multiple accounts (checking, savings, credit cards, investments, cash), recurring transactions, and sophisticated reporting including spending trends, budget adherence, and net worth over time.
Cloud finance apps like Mint, YNAB, and MoneyMoney require you to hand over your bank credentials or transaction history to a third party. Firefly III keeps everything on your server. Beyond privacy, it gives you deeper control — custom categories, rules that auto-categorize transactions, budget alerts, and reports that no consumer app provides. The double-entry system means your data is always consistent: if money moves, it moves from somewhere to somewhere, with no mystery spending black holes.
Firefly III listens on port 80 (HTTP, proxied to HTTPS by your reverse proxy). The Data Importer runs on port 8080 — restrict this port to your local network or your IP only, as it is only needed during data import sessions. The MySQL port (3306) must never be exposed externally. In production, only ports 80 and 443 should be publicly accessible via your reverse proxy.
YNAB (You Need a Budget) is the gold standard for budgeting but is cloud-only and subscription-based. Akaunting is better for business invoicing and accounting rather than personal finance. Hledger and Beancount are text-file-based alternatives for power users who prefer plain text accounting. For a simpler self-hosted option, Actual Budget has a modern UI and sync. Firefly III's strength is the depth of its reporting, rules engine, and double-entry integrity for complex personal finances.
Skip Firefly III if you want a simple budget tracker — it has a learning curve from the double-entry model and account setup. If you just need to track spending categories with no import workflow, a simpler app like Actual Budget or even a spreadsheet may suit you better. Firefly III is not designed for business bookkeeping with invoicing, payroll, or tax reporting — use Akaunting or proper accounting software for those needs.
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Double-entry bookkeeping records every transaction as two equal and opposite entries — a debit in one account and a credit in another. For example, buying groceries debits your Grocery category and credits your Checking account. This ensures your total assets always equal your total liabilities plus equity — the books always balance. Firefly III uses this model because it prevents common errors in personal finance apps (money appearing from nowhere, mysterious negative balances) and enables accurate net worth calculation across all your accounts.
Most banks let you export transactions as a CSV file from their online banking portal. Open the Data Importer at port 8080, upload your CSV, and use the mapping wizard to match columns (Date, Amount, Description, etc.) to Firefly III fields. Save the mapping configuration for future imports from the same bank — next time you just upload a new CSV and apply the saved map. Firefly III also supports OFX and CAMT.053 formats for banks that offer them.
Yes, via the Firefly III Data Importer with a bank connection service. It supports Nordigen/GoCardless (European banks) for automatic transaction sync without sharing passwords — you authorize via open banking. For other regions, manual CSV import is the standard method. Never use services that require your actual bank username and password — those services pose significant security risks.
Go to Automation → Rules → Create Rule. Set a trigger (e.g., 'Description contains Uber') and an action (e.g., 'Set category to Transport'). Rules run automatically on new transactions during import. You can also run rules retroactively on existing transactions. Create rules for your most frequent payees first (grocery stores, utility companies, subscription services) and the majority of your imports will be categorized automatically.
A Category is a label for what money was spent on (Groceries, Petrol, Entertainment). A Budget is a monthly spending limit attached to one or more categories. Categories track what you spent; Budgets control how much you allow yourself to spend. You can have categories without budgets (informational tracking only) or link multiple categories to one budget (e.g., 'Food' budget covering both Groceries and Restaurants categories).
Create a Credit Card account in Firefly III with the current balance as a liability. When you spend on the card, transactions come from the credit card account (debit). When you pay the credit card bill, create a transfer from your checking account to the credit card account. This correctly models the credit card as a debt that reduces when you pay it. Firefly III will track the balance, credit limit, and payment due dates if you set up the card as a Bill.
Yes — each account can have its own native currency. When you make a cross-currency transaction (e.g., paying in USD from a EUR account), you enter the exchange rate or amount in both currencies. Firefly III can fetch live exchange rates automatically if you configure an exchange rate API key. Reports can show totals in your base currency with automatic conversion, giving you a consolidated view across all accounts regardless of currency.
Create a Savings account for each goal (e.g., 'Emergency Fund', 'Holiday 2026'). Create recurring transfers from your checking account to each savings account on a monthly schedule. Firefly III will track the balance of each savings account over time, and you can see the growth in account reports. For more visual goal tracking, use the 'Piggy Banks' feature in Firefly III — set a goal amount and a target date and Firefly tracks progress as you transfer money in.