Docs / Self-Hosted Applications / How to Set Up Firefly III for Personal Finance Tracking

How to Set Up Firefly III for Personal Finance Tracking

By Admin · Mar 2, 2026 · Updated Apr 23, 2026 · 31 views · 3 min read

How to Set Up Firefly III for Personal Finance Tracking

Firefly III is a free, self-hosted personal finance manager that gives you complete control over your financial data. Running it on your Breeze means your banking information, budgets, and spending habits stay entirely private. It supports multiple currencies, recurring transactions, budgets, piggy banks, and detailed reporting.

Prerequisites

  • A Breeze instance with at least 2 GB of RAM
  • Docker and Docker Compose installed
  • A domain or subdomain (e.g., finance.example.com)

Step 1 — Create the Docker Compose File

Create a project directory and set up the Docker Compose configuration:

mkdir -p ~/firefly && cd ~/firefly
cat > docker-compose.yml <<'EOF'
version: "3.8"
services:
  app:
    image: fireflyiii/core:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
    env_file: .env
    volumes:
      - firefly_upload:/var/www/html/storage/upload
    depends_on:
      - db
  db:
    image: mariadb:lts
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: firefly
      MYSQL_USER: firefly
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - firefly_db:/var/lib/mysql
volumes:
  firefly_upload:
  firefly_db:
EOF

Step 2 — Configure Environment Variables

Create the .env file with your settings:

APP_KEY=$(head -c 32 /dev/urandom | base64 | tr -d '/+=' | head -c 32)
APP_URL=https://finance.example.com
DB_HOST=db
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=$(openssl rand -hex 16)
DB_ROOT_PASSWORD=$(openssl rand -hex 16)
TRUSTED_PROXIES=**
TZ=America/New_York

Step 3 — Launch the Stack

docker compose up -d

Wait about 30 seconds for the database migrations to finish, then verify the containers are running:

docker compose ps

Step 4 — Reverse Proxy Setup

Configure Nginx to forward traffic to Firefly III:

server {
    listen 443 ssl http2;
    server_name finance.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Step 5 — Getting Started with Firefly III

Visit your domain and register your admin account. Then follow these steps to organize your finances:

  1. Create asset accounts — represent your bank accounts, credit cards, and cash wallets
  2. Set up budgets — define monthly spending limits for categories like groceries, entertainment, and utilities
  3. Import transactions — use CSV import or connect to your bank with the Firefly III Data Importer
  4. Configure recurring transactions — automate entries for rent, subscriptions, and regular income
  5. Create piggy banks — set savings goals and track progress toward them

Automating Bank Imports

For automated transaction imports, deploy the Firefly III Data Importer alongside your main instance. It can connect to your bank via the Spectre API or import CSV files on a schedule. Set it up as an additional Docker container that communicates with the Firefly III API.

Security Considerations

  • Always use HTTPS when accessing Firefly III, since it handles sensitive financial data
  • Enable two-factor authentication in your profile settings
  • Regularly back up the MariaDB database volume
  • Keep Firefly III updated to receive security patches

Was this article helpful?