202 lines
8.7 KiB
Markdown
202 lines
8.7 KiB
Markdown
---
|
|
title: Firefly III
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, budgeting, laravel, php, finance, personnel, banques, psd2]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=budgeting, https://github.com/firefly-iii/firefly-iii, https://firefly-iii.org/]
|
|
---
|
|
|
|
# Firefly III 🔥
|
|
|
|
> Gestionnaire de **finances personnelles complet** écrit en Laravel, avec import bancaire via PSD2 (Spectre), règles automatiques, budgets, rapports avancés et API REST riche. C'est la **référence open source** pour qui veut maîtriser ses finances avec une UX web moderne.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://www.firefly-iii.org/ |
|
|
| **GitHub** | https://github.com/firefly-iii/firefly-iii |
|
|
| **License** | AGPL-3.0 |
|
|
| **Langage** | PHP 8.2+ (Laravel 11) |
|
|
| **Étoiles** | ⭐2190 |
|
|
| **Dernière MAJ** | 2026-05-28 |
|
|
| **Catégorie** | [[cat-budgeting]] |
|
|
|
|
## Description
|
|
|
|
Firefly III est une application web de **gestion de finances personnelles** conçue pour les particuliers, freelances et couples qui veulent reprendre le contrôle de leur argent. Contrairement à Actual Budget (local-first), Firefly est une **application web classique** avec backend serveur et base de données. L'**API REST** est très complète et permet d'intégrer Firefly dans des workflows complexes.
|
|
|
|
Les fonctionnalités phares incluent : **comptes multiples** (chèque, épargne, cartes, crédit, actifs, prêts, dettes), **transactions récurrentes** et **règles automatiques** de catégorisation/re-tagging, **budgets** par catégorie avec suivi mensuel, **enveloppes** (piggy banks), **objectifs d'épargne** avec progression, **rattachement de reçus** (upload PDF/images), **import** depuis CSV/OFX/Spectre (PSD2), **règlements** de dettes entre comptes, **tags**, **rapports** sophistiqués (cash flow, balance sheet, income/expense par catégorie, audits), **multi-devises** avec taux de change automatique (ECB, exchangerate.host).
|
|
|
|
L'**import bancaire** est l'un des points forts : via **Spectre** (anciennement Salt Edge) ou **Nordigen** (PSD2 européen), Firefly peut se connecter directement à **plus de 12 000 banques européennes** avec leur API officielle. Spectre propose un tier gratuit (limité), au-delà c'est ~5$/mois. Une **data importer** séparée (`firefly-iii/data-importer`) gère les imports CSV/OFX/CMT/Spectre et applique les règles. L'écosystème comprend aussi **Firefly Importer** et **Firefly Reconcile** (modules complémentaires).
|
|
|
|
L'**UX** est moderne (HTMX + Alpine.js pour la réactivité sans build complexe), multilingue (français intégral), avec un système de **rôles** (owner, demo) et **2FA TOTP** natif. Le projet est **très actif** (multiples commits/jour), avec une documentation détaillée et une communauté Discord dynamique.
|
|
|
|
## Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
services:
|
|
app:
|
|
image: fireflyiii/core:latest
|
|
container_name: firefly-iii
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
cache:
|
|
condition: service_started
|
|
ports:
|
|
- "8080:8080"
|
|
env_file: .env
|
|
volumes:
|
|
- firefly-upload:/var/www/html/storage/upload
|
|
|
|
db:
|
|
image: mariadb:11
|
|
container_name: firefly-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- MARIADB_DATABASE=firefly
|
|
- MARIADB_USER=firefly
|
|
- MARIADB_PASSWORD=ChangeM3_FireflyMaria
|
|
- MARIADB_RANDOM_ROOT_PASSWORD=ChangeMoiRootMdb
|
|
volumes:
|
|
- firefly-db:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
cache:
|
|
image: redis:7-alpine
|
|
container_name: firefly-cache
|
|
restart: unless-stopped
|
|
volumes:
|
|
- firefly-cache:/data
|
|
|
|
importer:
|
|
image: fireflyiii/data-importer:latest
|
|
container_name: firefly-importer
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- app
|
|
env_file: .env
|
|
volumes:
|
|
- firefly-importer:/import
|
|
|
|
cron:
|
|
image: alpine:3.20
|
|
container_name: firefly-cron
|
|
restart: unless-stopped
|
|
command: >
|
|
sh -c "
|
|
echo '0 3 * * * wget -qO- http://app:8080/api/v1/cron/$$STATIC_CRON_TOKEN' > /etc/crontabs/root &&
|
|
crond -f -L /dev/stdout"
|
|
env_file: .env
|
|
|
|
volumes:
|
|
firefly-db:
|
|
firefly-upload:
|
|
firefly-cache:
|
|
firefly-importer:
|
|
```
|
|
|
|
```bash
|
|
# .env (exemple)
|
|
APP_KEY=base64:VOTRE_CLE_ICI
|
|
APP_URL=https://budget.example.com
|
|
TZ=Europe/Paris
|
|
SITE_OWNER=vous@example.com
|
|
TRUSTED_PROXIES=**
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=db
|
|
DB_PORT=3306
|
|
DB_DATABASE=firefly
|
|
DB_USERNAME=firefly
|
|
DB_PASSWORD=ChangeM3_FireflyMaria
|
|
REDIS_HOST=cache
|
|
REDIS_PORT=6379
|
|
STATIC_CRON_TOKEN=ChangeM3_CronToken
|
|
MAIL_MAILER=smtp
|
|
MAIL_HOST=smtp.example.com
|
|
MAIL_PORT=587
|
|
MAIL_USERNAME=budget@example.com
|
|
MAIL_PASSWORD=ChangeMoiMailSMTP
|
|
MAIL_ENCRYPTION=tls
|
|
MAIL_FROM_ADDRESS=budget@example.com
|
|
```
|
|
|
|
### Installation manuelle (LAMP)
|
|
|
|
1. **Pré-requis** : PHP 8.2+ (extensions : BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PDO_MySQL, Tokenizer, XML, Zip, GD, Intl, sodium), MariaDB 10.5+ ou PostgreSQL 13+, Composer, Node.js 18+ (build), Redis (optionnel pour cache/queue).
|
|
2. `git clone https://github.com/firefly-iii/firefly-iii.git && cd firefly-iii`
|
|
3. `composer install --no-dev`
|
|
4. Copier `.env.example` vers `.env` et configurer.
|
|
5. `php artisan key:generate`
|
|
6. `php artisan migrate --seed`
|
|
7. `php artisan passport:install` (OAuth2).
|
|
8. `php artisan firefly-iii:upgrade-database` (ou laisser l'auto-upgrade au premier accès).
|
|
9. Servir via Nginx + PHP-FPM ; configurer le cron (`0 3 * * * php artisan schedule:run`).
|
|
|
|
## Configuration
|
|
|
|
- **Premier accès** : assistant web pour créer le propriétaire, configurer devise/locale (fr-FR), fuseau horaire.
|
|
- **Comptes** : créer un compte par produit bancaire (compte courant, Livret A, PEA, crédit immo, etc.).
|
|
- **Catégories et tags** : hiérarchie libre, tags transversaux.
|
|
- **Budgets** : par catégorie, par mois, avec report optionnel.
|
|
- **Règles** : moteur puissant (trigger + action) pour auto-catégoriser les imports.
|
|
- **Spectre/Nordigen** : créer une app sur https://saltedge.com/ ou https://nordigen.com/, configurer `SPECTRE_APP_ID`, `SPECTRE_SECRET`, lier des comptes bancaires.
|
|
- **Data Importer** : pour les imports manuels CSV/OFX, configurer les mappings colonne.
|
|
- **2FA** : activable depuis le profil utilisateur (TOTP via Google Authenticator, Aegis, etc.).
|
|
- **API** : jetons personnels ou OAuth2 (via Passport) — utilisable par n8n, Home Assistant, etc.
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
- [[app-actual-budget]] — local-first TypeScript, plus moderne, méthodologie enveloppe
|
|
- [[app-sure]] — plateforme finance/budget moderne (Elixir/Phoenix)
|
|
- [[app-monetr]] — alternative Go, plus jeune
|
|
- [[app-ezbookkeeping]] — multi-devises léger (Go)
|
|
- **iHat** — outil minimaliste Python
|
|
- **Firefly III Data Importer** — compagnon officiel
|
|
|
|
### Propriétaires
|
|
- **YNAB** — référence du zero-based budgeting (~14$/mois)
|
|
- **Monarch Money** — agrégation bancaire, UX soignée (~99$/an)
|
|
- **Mint** (abandonné, ex-Intuit) — bascule vers Credit Karma
|
|
- **YNAB companion** apps mobiles
|
|
- **PocketGuard**, **Rocket Money** — apps grand public
|
|
|
|
## Sécurité
|
|
|
|
- **HTTPS obligatoire** via reverse proxy (Traefik/Caddy) — données financières critiques.
|
|
- **2FA natif TOTP** : à activer pour le compte owner et tout compte avec droits admin.
|
|
- **Variables sensibles** : `APP_KEY`, secrets DB, tokens Spectre dans `.env` (chmod 600) ou secrets Docker/Swarm/K8s.
|
|
- **Spectre** : stocker les credentials de l'app tierce en variable d'environnement, surveiller les quotas API.
|
|
- **Sauvegardes 3-2-1** : `mysqldump` quotidien + copie du volume `firefly-upload` (reçus/fichiers).
|
|
- **Updates réguliers** : suivre la branche stable, consulter la release notes (migrations DB parfois nécessaires).
|
|
- **Fail2ban** : sur Nginx en front, pour bloquer les tentatives de brute force.
|
|
- **Headers de sécurité** : `Strict-Transport-Security`, `Content-Security-Policy`, `X-Frame-Options` via reverse proxy.
|
|
|
|
## Ressources
|
|
- Site officiel : https://www.firefly-iii.org/
|
|
- Documentation : https://docs.firefly-iii.org/
|
|
- GitHub : https://github.com/firefly-iii/firefly-iii
|
|
- Data Importer : https://github.com/firefly-iii/data-importer
|
|
- Discord : https://discord.gg/3PbZQXv
|
|
- selfh.st : https://selfh.st/apps/?tag=budgeting
|
|
|
|
## Pages Liées
|
|
- [[cat-budgeting]] — catégorie parente
|
|
- [[app-actual-budget]] — concurrent local-first moderne
|
|
- [[app-sure]] — alternative Elixir moderne
|
|
- [[app-monetr]] — alternative Go
|
|
- [[cat-accounting]] — gestion comptable (freelances/entreprises)
|
|
- [[recettes-docker-compose]] — templates de déploiement
|
|
- [[securisation-home-lab]] — bonnes pratiques sécurité
|