
Luciole III – Gestionnaire des finances personnelles
Je suppose que peut-être beaucoup d’entre vous le connaissent, Firefly III est un service que nous pouvons utiliser pour gérer nos finances. Un gestionnaire qui nous aidera à comprendre nos comptes bancaires, Nous serons en mesure de comprendre facilement où va notre argent, Bien sûr open source et on-premise!
Puits, Eh bien, c’est tout, Si vous avez besoin d’avoir plus de visibilité sur vos comptes bancaires, ou avoir un meilleur suivi des revenus et des dépenses, FireFly III aide à cet égard depuis des années. Nous l’installerons en moins de 5 minutes grâce à Docker!
Il existe plusieurs façons d’installer Firely III (et de le configurer), en fonction de nos besoins; dans ce cas, nous installerons Firefly III dans un conteneur Docker, Avant de procéder, nous téléchargeons les fichiers dont nous aurons besoin et les adaptons à nos besoins:
wget https://raw.githubusercontent.com/firefly-iii/docker/main/docker-compose-importer.yml -O docker-compose.yml wget https://raw.githubusercontent.com/firefly-iii/firefly-iii/main/.env.example -O .env wget https://raw.githubusercontent.com/firefly-iii/docker/main/database.env -O .db.env wget https://raw.githubusercontent.com/firefly-iii/data-importer/main/.env.example -o .importer.env
Nous modifions le fichier '.env’ et au moins nous modifierons le APP_KEY, Variables locales et informations d’identification d’accès à la base de données MySQL, puisque ce fichier aura la majeure partie de la configuration, la partie mail si on veut des notifications…
APP_KEY=secretrode32characters DEFAULT_LANGUAGE=es_ES TZ=Europe/Madrid ... DB_USERNAME=USUARIO_BD DB_PASSWORD=CONTRASEÑA_USUARIO_BD ...
Nous modifions le fichier '.db.env’ et au moins modifier les identifiants d’accès à la base de données (les mêmes qu’à l’étape précédente):
MYSQL_USER=USUARIO_BD MYSQL_PASSWORD=CONTRASEÑA_USUARIO_BD
Dernier, si nous sommes intéressés par le conteneur pour importer des données dans Firefly, nous modifions '.importer.env’ (Et si ce n’est pas le cas, Nous l’ignorons). Et nous indiquerons l’adresse IP ou FQDN du serveur Firefly III, ainsi que nous choisirons la manière de nous authentifier, généralement avec le jeton d’accès (Plus tard, nous verrons comment le générer):
FIREFLY_III_URL=http://IP_O_FQDN_FIREFLY_III FIREFLY_III_ACCESS_TOKEN=ey... TZ=Europe/Madrid
Et nous avons fini par éditer le docker-compose.yml’ si nous sommes intéressés à apporter des modifications, Dans mon cas, je n’ai ouvert que les ports, 80tcp pour FireFly III, 81tcp pour l’importateur et bien sûr le 3306 Je laisse la possibilité de consulter MySQL de l’extérieur, par exemple de Grafana, Rester:
Services: ... Appli: ... Ports: - '80:8080' ... ... Db: ... Ports: - '3306:3306' ... ... Importateur: ... Ports: - '81:8080' ...
Et, Nous terminons en soulevant les conteneurs:
docker compose -f docker-compose.yml up -d --pull=toujours
Nous pourrons désormais accéder au site web de Firefly iii, dans ce cas, publié sur le port 80tcp de l’IP de l’hôte Docker, Donc HTTP://DIRECCION_IP_O_FQDN et la première fois que nous nous connectons, nous devons créer un compte, Nous fournissons notre adresse e-mail et un mot de passe & “Registre”,
Dès que nous entrons, nous devrons enregistrer notre première banque, et nous pouvons commencer à jeter un coup d’œil à l’application, Mais sans données, il est quelque peu pauvre… La prochaine chose à faire sera donc d’importer les données de notre banque!
Tout d’abord, nous devons décider du type d’authentification que nous utiliserons dans le conteneur 'Firefly III Data Impor Tool', le plus simple est de générer un Personal Access Token à partir de Firefly III et de l’indiquer dans le fichier '.importer.env’
Si nous régénérons les conteneurs et nous connectons au site web du 'Firefly III Data Impor Tool'’ (Dans mon cas sur le port 81tp) Nous pourrons commencer le processus d’importation, Cliquez sur “Importer un fichier”,
Dans 'Fichier importable'’ nous laisserons le fichier CSV que nous aurons téléchargé depuis notre banque, avec tout ce qui nous intéresse historique des mouvements. Le fichier de configuration optionnel qui nous demande, Pour l’instant, nous ne l’aurons pas, Mais une fois que nous aurons terminé cet assistant, Nous serons en mesure de le générer, un fichier JSON qui sera alimenté avec les options que nous allons choisir ci-dessous, “Prochain”,
Nous indiquons si le fichier CSV a des en-têtes, si nous voulons le convertir en UTF-8, qu’est-ce que le délimiteur CSV, Dans quelle banque allons-nous l’importer de FireFly III, Format de date… “Envoyer”,
Selon les options choisies ci-dessus, il nous montrera le contenu de notre fichier et séparera les colonnes… Nous pouvons ignorer les colonnes que nous ne souhaitons pas importer (Bien sûr), et d’associer le rôle de chaque colonne, au moins, nous importerons les champs 'Date de la transaction', « Descriptif’ et 'Montant'. “Envoyer”,
Avant de commencer, nous pouvons cliquer sur “Télécharger le fichier de configuration” pour que nous n’ayons pas à faire cet assistant et à nous souvenir du format qu’il a, ou d’automatiser cette importation à l’avenir. Cliquez sur “Démarrer le travail” pour commencer,
Nous voyons à quel point les mouvements CSV sont importants… Espoir…
Une fois qu’il aura terminé, il nous dira, Parfait!
Nous commençons à avoir des données! Ole et ole Rigodón! Maintenant, nous serons en mesure de voir n’importe quel rapport plus en détail, etc…
Ce qui suit, peut être de configurer les catégories, Pour savoir où va notre argent! afin qu’il catégorise chaque mouvement et indique s’il s’agit d’une hypothèque, Dépenses au supermarché, essence, d’Amazon…
Depuis “Automatisation” > “Règlement” Nous pouvons les créer, La configuration est simple, Nous lui donnons un nom et quand nous voulons qu’il soit activé, lorsqu’il détecte un mot dans la description, Par exemple…
Et là je vous laisse avec Firefly III, Quelques tours très simples; Puis les petits fromages, Les rapports sont plus élégants, Nous comprenons l’orientation de notre budget de manière plus détaillée. Ces captures d’écran que vous voyez ci-dessus proviennent d’une application open source que nous pouvons installer sur nos mobiles (appelé Waterfly III) qui se connecte à FireFly III et est peut-être plus confortable…
Et… Attendez, nous n’avons pas fini! Vous vous souvenez que dans le conteneur de la base de données MySQL, nous avons laissé le 3306tcp ouvert? Eh bien, avec les identifiants d’accès, nous pouvons nous connecter et faire des requêtes, car nous sommes intéressés et le voyons d’une belle manière et à goûter de Grafana, Par catégories, ou simplement les mouvements… mais pas seulement pour le voir de Grafana, mais avec à quel point je suis geek, Je génère un PDF et cette information me vient dedans, entre autres choses telles que des détails intéressants de Home Assistant (statistiques…)
D’ailleurs, Les chiffres que nous voyons, Ce sont des faux, à part le fait qu’ils sont à moitié couverts pour que vous ne connaissiez pas les chiffres que je manipule, Je ne peux pas dire publiquement combien de millions j’ai). Venir, à l’essentiel, celui qui a besoin de requêtes MySQL:
- Graphique avec total:
SELECT tj.date comme heure, "Total" en tant que métrique, SOMME(t.montant) SUR (COMMANDER PAR tj.date ASC) AS value
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU_ID_DEL_BANCO' ORDER BY tj.date ASC;
- Gráfica con movimientos:
SELECT tj.date comme heure, t.amount comme valeur, tj.description as metric
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY tj.date ASC;
- Tabla de movimientos:
SELECT t.amount, tj.description, GAUCHE(tj.date, 10) comme la fecha, SOMME(t.montant) SUR (COMMANDER PAR tj.date ASC) AS Total
FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY date desc;
Y esperar que se me olvida lo más importante! ¿Cómo automatizamos esto? pues si tienes suerte y tu banco te permite conectarte de alguna manera, por API, etc… bien, autrement, Existe algún servicio de terceros (Payant et externe) qui pourraient vous aider… Une autre façon consiste à télécharger manuellement les fichiers chaque semaine et à les laisser toujours sur le même chemin, puis un script les importe (Il y a un conteneur cron), ou à l’aide d’un outil qui enregistre les clics, Connectez-vous à la banque et générez le rapport… Ce dernier est mon choix personnel. C’est vraiment merdique, J’ai une machine virtuelle isolée, Pas d’accès à Internet (Rien que les sites des banques)… et une Tiny Task est exécutée quotidiennement (Fais gaffe) qui génère les rapports, Comme chaque banque appartient à son père, certains sont générés en CSV, d’autres en XLS et d’autres en XLSX (touchez votre…) Je vous laisse donc quelques conseils que j’ai dans un script qui peuvent vous aider:
#Convertissez de XLSX en CSV et utilisez le ; comme séparateur: xlsx2csv -d ';' fichero.xlsx fichero.csv #Convierte de XLS a CSV sin perder el formato de las fechas: libreoffice --convert-to csv fichero.xls #Borra le premier 15 Lignes: sed -i '1,15d' fichero.csv #Importa el csv que hay en la carpeta actual con el JSON de configuración, Les deux fichiers portent le même nom: sudo docker run --RM -V $PWD:/import -e FIREFLY_III_ACCESS_TOKEN=ey... -e IMPORT_DIR_ALLOWLIST=/import -e FIREFLY_III_URL=http://IP_FQDN_FIREFLY_III -e WEB_SERVER=false Fireflyiii/importateur-de-données:dernier
Avec cette dernière commande, nous allons importer le CSV à la Banque indiquée dans le JSON une merveille! Éviter les mouvements en double, etc… Les dernières nouveautés (Et c’est tout pour de vrai), les requêtes MySQL que nous avons vues auparavant, ils peuvent s’avérer utiles pour l’intégrer à Home Assistant, Et cela nous indique, pendant que nous prenons le petit-déjeuner sur nos haut-parleurs, le solde que nous avons dans les comptes, ainsi que les derniers mouvements… Tissu marinière!!!
Venir, Maintenant, je te laisse tranquille, Je vous souhaite beaucoup, que vous travaillez peu et gagnez beaucoup 😉 un câlin!