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:
- Create asset accounts — represent your bank accounts, credit cards, and cash wallets
- Set up budgets — define monthly spending limits for categories like groceries, entertainment, and utilities
- Import transactions — use CSV import or connect to your bank with the Firefly III Data Importer
- Configure recurring transactions — automate entries for rent, subscriptions, and regular income
- 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