Skip to main content
This guide covers installing Firefly III directly on a Linux server. This method gives you full control over your installation but requires more technical knowledge.

System Requirements

PHP Requirements

Firefly III is built with Laravel and requires:
  • PHP 8.5 or higher
  • Required PHP extensions:
    • bcmath - Arbitrary precision mathematics
    • curl - HTTP client
    • fileinfo - File information
    • iconv - Character encoding conversion
    • intl - Internationalization
    • json - JSON processing
    • mbstring - Multibyte string handling
    • openssl - Cryptographic functions
    • pdo - Database abstraction
    • session - Session handling
    • simplexml - XML parsing
    • sodium - Modern cryptography
    • tokenizer - PHP tokenizer
    • xml - XML processing
    • xmlwriter - XML writing

Database Requirements

One of the following:
  • MySQL 8.0 or higher
  • MariaDB 10.5 or higher
  • PostgreSQL 13 or higher
  • SQLite 3.35 or higher

Web Server

One of:
  • Apache 2.4+ with mod_rewrite enabled
  • Nginx 1.18+
  • Any web server that supports PHP-FPM

Additional Requirements

  • Composer 2.0 or higher
  • At least 512MB RAM
  • 1GB+ disk space

Installation Steps

1

Install system dependencies

If PHP 8.5 is not available in your distribution, you may need to add a PPA like ondrej/php:
2

Create a database

3

Download Firefly III

Clone the repository to your web server directory:
For production, use a tagged release instead of main:
4

Install dependencies

Install PHP dependencies using Composer:
This will download all required packages. It may take a few minutes.
5

Configure environment

Copy the example environment file:
Edit the .env file with your settings:
Required settings:
.env
See the Configuration Reference for all available options.
6

Generate application key

Generate a secure encryption key:
This will automatically update your .env file with a secure APP_KEY.
7

Initialize the application

Run the installation commands:
8

Set file permissions

Set correct ownership and permissions:
The storage and bootstrap/cache directories must be writable by the web server.
9

Configure web server

Create a new site configuration:
Add the following configuration:
/etc/nginx/sites-available/firefly
Enable the site:
The document root must point to the /public directory, not the application root!
10

Set up SSL (recommended)

Use Let’s Encrypt for free SSL certificates:
Update APP_URL in your .env file to use https://.
11

Configure cron jobs

Firefly III needs a daily cron job for recurring transactions:
Add this line:
12

Access Firefly III

Navigate to your domain (e.g., https://firefly.example.com) and create your first user account.

Post-Installation

Enable Audit Logging (Optional)

To track financial events:
.env

Configure Email (Optional)

For notifications and password resets:
.env

Performance Optimization

Install Redis:
Update .env:
.env
Clear and rebuild cache:

PHP-FPM Tuning

Edit PHP-FPM pool configuration:
Adjust these values based on your server resources:
Restart PHP-FPM:

Updating Firefly III

1

Backup your installation

2

Put site in maintenance mode

3

Update the code

4

Update dependencies

5

Run upgrade commands

6

Restore site

Troubleshooting

500 Internal Server Error

Check the Laravel logs:
Common causes:
  • Incorrect file permissions on storage/ directory
  • Missing PHP extensions
  • Invalid .env configuration

Database Connection Errors

Test the connection:
Then run:

Page Shows “Public” Warning

Your document root is set incorrectly. It should point to /var/www/firefly-iii/public, not /var/www/firefly-iii.

CSS/JS Not Loading

Run:
Check file permissions:

Security Hardening

Disable Directory Listing

Already configured in the provided .htaccess file:

Firewall Configuration

Allow only HTTP/HTTPS:

Regular Updates

Keep your system updated:

Next Steps

Configuration

Explore all configuration options

API Documentation

Set up API access