Prerequisites
- Docker Engine 20.10 or higher
- Docker Compose v2.0 or higher (optional, but recommended)
- At least 512MB of available RAM
- Database: MySQL 8.0+, PostgreSQL 13+, or SQLite
Quick Start with Docker Run
Generate an application key
Generate a random 32-character string for your APP_KEY:Save this key for the next step.
Start Firefly III container
Replace
SomeRandomStringOf32CharsExactly with the key you generated in the previous step.Docker Compose Installation (Recommended)
Docker Compose simplifies multi-container deployments and makes configuration management easier.Create a docker-compose.yml file
Create a new directory for Firefly III and add a
docker-compose.yml file:Generate your APP_KEY
Use one of these methods to generate a secure 32-character key:Update the
APP_KEY value in your docker-compose.yml file.Start the containers
- Pull the required Docker images
- Create the database
- Start both containers
- Run database migrations automatically
Check the logs
Monitor the startup process:Wait until you see messages indicating the application is ready.
Using Docker Secrets
For enhanced security, you can use Docker secrets or environment files for sensitive data:docker-compose.yml
Many environment variables support a
_FILE suffix. Check the configuration reference for details.Reverse Proxy Configuration
If you’re running Firefly III behind a reverse proxy (nginx, Traefik, Caddy), you need to:- Set
TRUSTED_PROXIES=**in your environment variables - Ensure your proxy passes the correct headers
- Update
APP_URLto match your external URL
Nginx Example
Traefik Example
docker-compose.yml
Cron Jobs
Firefly III requires a daily cron job for recurring transactions and other maintenance tasks.Option 1: Using a Cron Container
Add to yourdocker-compose.yml:
Option 2: Host Cron Job
Add to your host’s crontab:Data Persistence
Firefly III uses Docker volumes to persist data:firefly_upload: User uploads and attachmentsfirefly_db: Database files
Backup Your Data
Updating Firefly III
Troubleshooting
Permission Issues
If you encounter permission errors:Database Connection Failed
Check that:- Database container is running:
docker ps - Database credentials match between containers
- Containers are on the same network
Container Won’t Start
View logs for errors:- Invalid
APP_KEY(must be exactly 32 characters) - Database not ready (wait a few moments and retry)
- Port 8080 already in use (change to a different port)
Environment Variables
See the Configuration Reference for a complete list of environment variables.Next Steps
Configuration
Learn about all available configuration options
First Steps
Set up your first accounts and transactions