
Deploy Firefly III on Your Own Server
Firefly III - A free and open source personal finance manager
Want to deploy Firefly III on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is Firefly III?
Enter your Firefly III Configuration parameters and click on next. It will take about a minute for the process to finish.
Self-Host Firefly III
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
firefly_iii:
image: fireflyiii/core:version-5.5.13
environment:
APP_KEY: ${firefly_app}-key
DB_CONNECTION: mysql
DB_DATABASE: firefly
DB_HOST: firefly_iii-db
DB_PASSWORD: ""
DB_PORT: "3306"
DB_USERNAME: firefly
SITE_OWNER: ${firefly_site}-owner
TRUSTED_PROXIES: "**"
TZ: ${firefly_time}-zone
volumes:
- firefly_iii-export:/var/www/firefly-iii/storage/export
- firefly_iii-upload:/var/www/firefly-iii/storage/upload
depends_on:
- firefly_iii-db
firefly_iii-db:
image: mariadb:10.5.4
environment:
MYSQL_DATABASE: firefly
MYSQL_PASSWORD: ""
MYSQL_ROOT_PASSWORD: ""
MYSQL_USER: firefly
volumes:
- firefly_iii-db-data:/var/lib/mysql
volumes:
firefly_iii-export: {}
firefly_iii-upload: {}
firefly_iii-db-data: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:8080
Why Self-Host Firefly III?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
fireflyiii/core:${firefly_version}Want to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"