Setting Up Ledger or Firefly III on Your NAS for Personal Finance
Australians are increasingly wary of where their financial data lives. Between the ATO's data-matching programs and the steady stream of bank scams targeting CBA, ANZ, Westpac and NAB customers, plenty of households are rethinking the wisdom of trusting cloud-only budgeting apps. A network-attached storage device sitting quietly in the study or under the TV cabinet offers a way to keep full control. Pair that NAS with a self-hosted personal finance tracker and you get powerful reporting without handing your transactions to a third party.
Ledger and Firefly III are the two tools that come up most often in the home-lab community. Ledger is a command-line, plain-text accounting system that has been around since 2003. Firefly III is a modern web app built around double-entry bookkeeping, with a clean dashboard, recurring transactions and Piggy Banks for saving targets. Both run happily on modest hardware and both suit the typical Australian small-office or home setup powered by Telstra, Optus or Aussie Broadband over the NBN.
Neither tool locks you into a subscription model. Both store data in formats you can export at any time, which matters when the cost of living in Sydney or Brisbane keeps climbing and every subscription feels like a fresh hit.
The rest of this piece looks at how each one works, what it takes to install them on a Synology or QNAP box, and how to keep the records safe.
Why a NAS Is a Sensible Home for Your Money Data
A mid-range four or five-bay NAS is overkill for streaming a few movies, but it is exactly the right size for a personal finance workflow. The same machine that handles Time Machine backups for the family Macs can host Docker containers for Firefly III and a small SQLite database. You are essentially building your own private version of a budgeting service, except the data never leaves the shed.
Australian readers tend to care a lot about latency. Uploading CSV exports to an overseas server and waiting for the dashboard to load is painful when you live in regional WA or out past Geelong. A local NAS responds in milliseconds. You can use the same box to pull OFX or CAMT.053 files from your bank, run a cron job at 2 am, and have a refreshed dashboard ready when you sit down with a flat white the next morning.
Privacy is the other big driver. The notifiable data breaches scheme has made Australians more aware of what happens when a SaaS provider gets popped. Keeping your net-worth chart behind your own firewall, with no public port forwarded, dramatically shrinks your attack surface. It is the same reason people on forums like Whirlpool and OzBargain are suddenly keen on self-hosting everything from password managers to photo libraries.
Ledger CLI: Plain-Text Accounting for the Tinkerers
Ledger is a C++ program that reads a human-readable journal file. Each transaction is a line of text, posted to one or more accounts, with optional assertions about what the balance should be. There is no GUI, no database, and no Docker image required, although plenty of people wrap it in containers anyway. You edit the journal in vim, VS Code or TextMate on a Mac, then run ledger -f finances.ledger bal to see a balance sheet.
This approach is fantastic for people who like the idea of money data being readable in fifty years. A text file from 2025 will open just as easily in 2075. For Australians who keep decades of records, that longevity matters. The currency symbol is configurable, which is handy when most accounts are in EUR and you also have a mortgage statement in CHF.
The catch is that Ledger has a learning curve. Reconciling statements, writing automated importers and producing reports all require comfort with the terminal. If you are the sort of person who already has Homebrew installed and reads Hacker News for fun, it will feel like home. If you would rather click buttons, you may find it frustrating.
Firefly III: A Web App That Just Makes Sense
Firefly III is the opposite end of the spectrum. It is a PHP application written by James Cole, with a slick Bootstrap front end, a REST API, and a passionate community of contributors on GitHub. You log in through a browser, see your accounts, rules, bills and budgets laid out in charts, and click around to add transactions. It also exposes a documented API, which makes it easy to bolt on importers that pull data from your bank.
The double-entry foundation means every transaction hits at least two accounts, so the books always balance. Recurring transactions handle your monthly Netflix, your ATO-set-aside amount and the standing direct debits your bank charges. Piggy Banks let you stash money virtually for goals like a trip to Tasmania or a new ute. Reports cover everything from year-to-date spending to a multi-year net-worth chart that handles inflation adjustments.
Firefly III really shines when you run it in Docker on a Synology or QNAP. The container pulls in PHP-FPM, Nginx and a small MariaDB database. You point it at a persistent volume on your Btrfs or ext4 array, set up a reverse proxy with a Let's Encrypt certificate, and you have a budgeting portal that looks every bit as polished as the SaaS competitors. The trade-off is the extra Docker container and web stack.
| Feature | Ledger CLI | Firefly III |
|---|---|---|
| Interface | Command line, plain-text journal | Web GUI with REST API |
| Storage format | Human-readable text file | SQLite or MySQL/MariaDB database |
| Learning curve | Steep for non-technical users | Gentle, point-and-click |
| Reporting | Powerful but requires commands | Built-in charts, budgets, Piggy Banks |
| Hardware footprint | Negligible, runs anywhere | Needs PHP, web server, database |
| Best suited to | Tinkerers and long-term archivists | Families, couples, casual users |
Getting Either App Running on Your NAS
Both tools happily live on a Synology DS923+, a QNAP TS-464, or a beefier five-bay unit like the ones featured in this 5-bay NAS round-up. The rule of thumb is at least 2 GB of free RAM for Firefly III, plus a small SSD cache volume if you want the database queries to feel snappy.
For Ledger, the install is essentially copying a binary. Synology users can grab a pre-built package from the community, while QNAP users tend to use Entware or a manual chroot. Drop your journal file on a shared folder, point your editor at it, and you are done. For Firefly III, the standard path is Portainer or Container Station, pulling the official fireflyiii/core and fireflyiii/importer images. The first run walks you through a setup wizard, asks for an ATO-friendly currency code, and sets up an admin account.
Whichever route you take, put the data on a RAID-1 mirror at minimum. Money records are exactly the kind of thing you do not want to lose to a single disk failure. A nightly rsync to a USB drive, plus a snapshot to Backblaze B2 or an Australian provider with a Sydney region, completes a sensible 3-2-1 backup plan.
Practical Habits to Keep the Books Honest
Self-hosting is only half the battle. The other half is keeping up with the boring weekly ritual of reconciliation. Set a recurring calendar entry for Sunday afternoon, fire up the kettle and match every transaction in Firefly III or Ledger against your bank statement. Five minutes a week beats two hours every six months.
Importers help a lot. Firefly III has a built-in importer that speaks CSV, CAMT.053 and a few Australian bank formats. For NAB and CBA you can usually download an OFX file from the bank's web portal and feed it in. Westpac and ANZ are a bit fussier, but a small Python script using the ofxparse library bridges the gap. Ledger users usually write a tiny shell script that converts a CSV into journal entries, then post them with ledger add.
Make sure your categories line up with how the ATO thinks about money. Bucket your salary, your dividends, your rental income and your tax-deductible work expenses into separate accounts. When EOFY rolls around in June, you will thank yourself. A few hours of setup now saves a frantic week in July.
A Practical Checklist Before You Start
Walk through this list before you commit a single transaction. It is far easier to add good habits at the start than to retro-fit them once the books have six months of un-reconciled data.
- Pick a NAS with at least 4 GB of RAM if you plan to run Firefly III alongside other containers
- Use RAID-1 or RAID-5 for any volume that holds your journal or database files
- Schedule a weekly reconciliation habit and stick to it, even when nothing looks wrong
- Keep at least one offsite copy of the database or journal, in a different physical location
- Update the container image or Ledger binary every few months to pick up security patches
- Document your setup in a runbook so the family can recover it if you are unavailable
Time to take control of your money data. Pull out that dusty NAS under the TV cabinet, fire up your browser and try Firefly III this weekend. If you prefer the terminal, install Ledger and start typing in your first journal entries. Either choice puts you back in charge of every dollar, every cent and every transaction, exactly where it belongs.