Introduction

Firefly III is an open-source personal finance management application, widely adopted by users who value privacy and control over their financial data. In this article, you'll learn how to install Firefly III manually (without Docker) on a LetsCloud instance, leveraging the platform’s scalability to securely and independently manage your finances.

Goals

This tutorial aims to guide users who want to install and configure Firefly III on a LetsCloud instance without using Docker. The manual installation provides more control and flexibility over the environment using a Linux, PHP, and MariaDB stack. This guide is ideal for developers, infrastructure professionals, and enthusiasts who want full control of their self-hosted personal finance manager.

Requirements

Before getting started, you’ll need:

  • An active LetsCloud plan
  • A Linux instance (recommended: Ubuntu 24.04 LTS)
  • Root (or sudo) access
  • Domain name (optional but recommended)
  • Web server Nginx
  • PHP 8.1 or higher with required extensions
  • MySQL/MariaDB
  • Composer
  • Git

Installation Steps

Update your system

$

sudo apt update && sudo apt upgrade -y

Install required packages

$

sudo apt install php php-cli php-common php-mbstring php-xml php-bcmath php-curl php-mysql php-tokenizer php-zip unzip curl git composer nginx mariadb-server -y

Configure the database

$

sudo mysql -u root

mysql>mysql>mysql>mysql>mysql>

CREATE DATABASE firefly CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'fireflyuser'@'localhost' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON firefly.* TO 'fireflyuser'@'localhost'; FLUSH PRIVILEGES; EXIT;

Clone Firefly III

$$$$

cd /var/www/ sudo git clone https://github.com/firefly-iii/firefly-iii.git cd firefly-iii sudo git checkout main

Configure the environment

$$

cp .env.example .env nano .env

Edit the variables:

.env

APP_KEY=base64:...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=firefly
DB_USERNAME=fireflyuser
DB_PASSWORD=secure_password

6. Generate the app key

$

php artisan key:generate

7. Install dependencies and set permissions

$$$$

composer install --no-dev --optimize-autoloader php artisan migrate --seed sudo chown -R www-data:www-data /var/www/firefly-iii sudo chmod -R 755 /var/www/firefly-iii/storage

Configure Nginx

$

sudo nano /etc/nginx/sites-available/firefly

File content:

firefly

server {
    listen 80;
    server_name your_domain.com;

    root /var/www/firefly-iii/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Enable the site:

$$$

sudo ln -s /etc/nginx/sites-available/firefly /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

Access

You can now access Firefly III via your instance’s IP address or configured domain:

http://<your-ip-or-domain>

Security Tip

It’s recommended to enable HTTPS using Let’s Encrypt and Certbot:

$$

sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx

Conclusion

With LetsCloud, you have the freedom to build customized environments like this one, with full control over security, scalability, and personalization. Firefly III is an excellent choice for managing personal or small business finances.

Read more about: Operating SystemUbuntu