Firefly III

stack Finance

Personal finance manager for tracking what comes in and goes out, with budgets, subscriptions, recurring transactions, rules and reports. This one runs on Postgres.

Install Firefly III

It isn't in the main Portainer Templates list yet, so use this one. Portainer takes one URL at a time, so it swaps out whatever list you had before.

In Portainer, head to Settings --> App Templates, paste this in as the URL and save.

https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/templates.json
  1. Open App Templates and pick Firefly III.
  2. Fill in App key and Cron token and Database password and Trusted proxies. Everything else can stay as it is.
  3. Hit Deploy the stack, then open http://<your-server>:8092 in a browser.

Before you start

Fill in all three secrets before you deploy, since the stack won't start without them. The app key and cron token must be exactly 32 characters (openssl rand -hex 16 makes one), and keep all three the same when you redeploy. Then open http://<your-host>:8092 (or whichever port you picked) and register. The first account becomes the admin and sign-ups close after it, so do it straight away. A small cron container pings Firefly III at 03:00 every night, which is what creates recurring transactions and fires subscription reminders. Transactions live in Postgres, in the postgres-data volume, and attachments in firefly-upload. Docs: docs.firefly-iii.org

Settings

What the Portainer form asks for. With compose they go in the .env file instead.

VariableWhat it's forDefault
FIREFLY_APP_KEYApp key (required) Exactly 32 characters. Generate one with: openssl rand -hex 16. Keep it the same when you redeploy, or everyone's logged out and API tokens stop working. Needs filling in
FIREFLY_CRON_TOKENCron token (required) Exactly 32 characters, and not the same as the app key. Generate one with: openssl rand -hex 16. Needs filling in
FIREFLY_DB_PASSWORDDatabase password (required) Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or Firefly III can't reach its database. Needs filling in
FIREFLY_PORTHost port for the web UI 8092
FIREFLY_TZTimezone Like Europe/London. Transaction dates and the nightly cron use it. UTC
FIREFLY_TRUSTED_PROXIESTrusted proxies Leave blank, unless it's behind a reverse proxy. Then set ** so Firefly III trusts the proxy's headers. Needs filling in

Services

The containers this stack runs, with ports as they come out of the box.

ServiceImagePorts
fireflyfireflyiii/core:version-68092:8080
postgrespostgres:17-alpineInternal only
cronalpine:3Internal only

More apps