Firefly III – Finantza pertsonalen kudeatzailea
Supongo que quizás muchos lo conoceréis, Firefly III es un servicio que podemos disponer para gestionar nuestras finanzas. Un gestor que nos ayudará a comprender nuestras cuentas bancarias, podremos comprender fácilmente dónde se nos va el dinero, por supuesto open source y on-premise!
Onena, pues eso, si necesitáis tener más visibilidad sobre vuestras cuentas bancarias, o tener un mayor seguimiento de ingresos y gastos, FireFly III lleva años ayudando en este sentido. Lo tendremos instalado en menos de 5 minutos gracias a Docker!
Existen diversas formas de instalar Firely III (y de configurarlo), en base a lo que necesitemos; en este caso instalaremos Firefly III en un contenedor de Docker, antes de proceder nos descargamos los ficheros que necesitaremos y los adaptaremos a nuestra necesidad:
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
Editamos el fichero ‘.env’ y al menos modificaremos la APP_KEY, los locales y los credenciales de acceso a la BD de MySQL, ya que este fichero dispondrá de la mayor parte de la configuración, la parte de correo si queremos notificaciones…
APP_KEY=secretrode32caracteres DEFAULT_LANGUAGE=es_ES TZ=Europe/Madrid ... DB_USERNAME=USUARIO_BD DB_PASSWORD=CONTRASEÑA_USUARIO_BD ...
Editamos el fichero '.db.env’ y al menos modificamos los credenciales de acceso a la BD (los mismos que en el paso anterior):
MYSQL_USER=USUARIO_BD MYSQL_PASSWORD=CONTRASEÑA_USUARIO_BD
Azkenik, si nos interesa tener el contenedor para importar datos a Firefly editamos '.importer.env’ (eta bestela, esto lo obviamos). E indicaremos la dirección IP o FQDN del servidor Firefly III, así como elegiremos la forma de autenticarnos, habitualmente con el Access Token (más adelante vemos cómo generarlo):
FIREFLY_III_URL=http://IP_O_FQDN_FIREFLY_III FIREFLY_III_ACCESS_TOKEN=ey... TZ=Europe/Madrid
Y acabamos editamos el 'docker-compose.yml’ si es que nos interesa realizar algún cambio, en mi caso únicamente abrí los puertos, el 80tcp para FireFly III, el 81tcp para el Importer y como no el 3306 lo dejo abierto para consultar el MySQL desde fuera, por ejemplo desde Grafana, geratzen dira:
services: ... app: ... ports: - '80:8080' ... ... db: ... ports: - '3306:3306' ... ... importer: ... ports: - '81:8080' ...
Y, finalizamos ya levantando los contenedores:
docker compose -f docker-compose.yml up -d --pull=always
Ya podremos acceder a la web de Firefly iii, en este caso publicado en el puerto 80tcp de la IP del host de Docker, así que http://DIRECCION_IP_O_FQDN y la primera vez que entremos tenemos que crearnos una cuenta, indicamos nuestra dirección de correo y una contraseña & “Register”,
Según entremos deberemos de dar de alta nuestro primer Banco, y ya podremos comenzar a darle un vistazo a la aplicación, pero sin datos queda algo pobre… así que lo siguiente será importar los datos de nuestro banco!
Antes de nada, kontatu behar dugu zein autentikazio mota erabili 'Firefly III Data Import Tool' edukiontzian, errazena da Firefly III-tik sarrera pertsonaleko Token bat sortzea eta hori '.importer.env'-an adieraztea’
edo berriro edukiontziak sortzen baditugu eta 'Firefly III Data Import Tool'-aren webgunera konektatzen bagara’ (nire kasuan 81tp atakian) inportazio prozesua hasi ahal izango dugu, sustatu “Inportatu fitxategia”,
'Inportagarri den fitxategian'’ gure bankutik deskargatu dugun CSV fitxategia utziko dugu, mugimenduetan interesa dugun historiko guztiarekin. Eskaintzen diguten konfigurazio fitxategi aukerako hori, une honetan ez dugu izango, baina asistente hau amaitutakoan, sortu ahal izango dugu, un fichero JSON que estará alimentado de las opciones que vamos a elegir a continuación, “Next”,
Indicamos si el fichero CSV tiene encabezados, si queremos convertirlo a UTF-8, cual es el delimitador del CSV, en que banco lo vamos a importar de FireFly III, el formato de la fecha… “Bidali”,
Dependiendo las opciones elegidas anteriormente ya nos mostrará el contenido de nuestro fichero y nos separará las columnas… podremos ignorar las columnas que no nos interesen importar (por supuesto), y asociaremos el rol de cada columna, al menos importaremos los campos de 'Transaction date', 'Description’ y 'Amount'. “Bidali”,
Antes de comenzar, podremos pulsar en “Download configuration file” para no tener que hacer este asistente y acordarnos del formato que lleva, o para automatizar esta importación a futuro. Sakatu on “Lanari ekin” hasi ahal izateko,
Ikusten dugu nola inportatzen dituen CSV bidezko mugimenduak… itxaroten dugu…
Behin amaitutakoan adieraziko digu, perfecto!
Datuak izaten hasten gara! Jolasean Rigodón! Orain edozein txosten xehetasun gehiagorekin ikus dezakegu, eta abar…
Lo siguiente, Kategorien konfigurazioa izan daiteke, Dirua non xahutzen dugun jakiteko! Mugimendu bakoitza kategoriaz hornitzeko eta esateko hipotekakoa den, supermerkatuaren gastua, gasolinarena, Amazonena…
Honetatik “Automatizazioa” > “Arauak” sortu ahal izango ditugu, konfigurazioa erraza da, izen bat adierazten diogu eta noiz aktibatzea nahi dugun, Deskribapen batean hitz bat detektatzen duenean, adibidez…
Eta hor hemen uzten zaituztet Firefly III-rekin, pixka bat probatzeko oso erraza delako; ondoren txostenak, txostenak dotoreago geratzen dira, Bajetuaren nondik norakoak xehetasun gehiagorekin ulertzen ditugu. Estos pantallazos que veis arriba es de una app también open source que podemos instalar en nuestros móviles (llamada Waterfly III) que se conecte a FireFly III y quizás es más cómoda…
Y… espera que no hemos acabado! Os acordáis que en el contenedor de la BD de MySQL le dejamos el 3306tcp abierto? Bueno pues con los credenciales de acceso podremos conectarnos y hacer consultas, como nos interese y verlo de manera preciosa y al gusto desde Grafana, por categorías, o simplemente los movimientos… pero no sólo por verlo desde Grafana, si no que con lo friki que soy, se me genera un PDF diario y esta información me viene en él, entre otras cosas más como puedan ser detalles interesantes de Home Assistant (estadísticas…)
Bestela, los números que vemos, son fakes, zenbakiak ezagut ezazuen moduan erdi estalita dauden zatia, ezin dut hain publikoki esan ditzaketen milioiak). Venga, zuzen, MySQL queryak behar dituenarentzako:
- Guztira duen grafikoa:
SELECT tj.date as time, "Guztira" metrika gisa, SUM(t.amount) GAINEAN (ORDER BY tj.date ASC) AS value FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id WHERE t.account_id = 'ZURE_BANKU_ID' ORDER BY tj.date ASC;
- Mugimenduen grafikoa:
SELECT tj.date as time, t.amount as value, tj.description as metric FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id WHERE t.account_id = 'ZURE BANKU_ID' ORDER BY tj.date ASC;
- Mugimenduen taula:
SELECT t.amount, tj.description, EZKERRA(tj.date, 10) as data, SUM(t.amount) GAINEAN (ORDER BY tj.date ASC) AS Guztira FROM transactions t INNER JOIN transaction_journals tj ON t.transaction_journal_id = tj.id WHERE t.account_id = 'ZURE BANKUAREN ID' ORDER BY date desc;
Eta espero ez dakidala garrantzitsuena! Nola automatikoki egin dezakegu hau? ongi, zortea baduzu eta zure bankuak nola edo hala konektatzea onartzen badu, API bidez, eta abar… ongi, baina ez badugu, hirugarrenen zerbitzu bat existitzen da (ordainpekoa eta kanpokoa) lagundu ahal dizun… Beste modu bat da guk eskuz astero fitxategiak deskargatu eta beti bide berean utzi, ondoren script batek inportatuko dituena (cron edukiontzi bat dago), edo klik-ak grabatzen dituen tresna bat erabiliz, bankura sartzeko eta txostena sortzeko… azken hau nire aukera pertsonala da. Egia esan oso pobreena da, MV isolatua dut, Interneteko sarbiderik gabe (nada más que a los sitios de los bancos)… y diariamente se ejecuta un Tiny Task (ojito) que genera los informes, como cada banco es de su padre, unos se generan en CSV, otros en XLS y otros en XLSX (tocate los…) así que os dejo algunos tips que tengo en un script que os pueden ayudar:
#Convierte de XLSX a CSV y usa el ; como separador:
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 las primeras 15 líneas:
sed -i '1,15d' fichero.csv
#Importa el csv que hay en la carpeta actual con el JSON de configuración, ambos ficheros se llaman igual:
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/data-importer:azkena
Komando honi esker, JSON-ean adierazitako bankura CSVa inportatuko dugu, miragarria! Mugimendu berdinak saihestuz, eta abar… Azkena (eta benetan), Lehenago ikusi ditugun MySQL kontsultak, oso baliagarriak izan daitezke Home Assistant-ekin integratzeko, eta gosaltzen dugun bitartean gure bozgorailuetatik kontuetan ditugun saldoa esan diezagula, eta azken mugimenduak ere bai… oso ondo!!!
Venga, orain benetan lasai utziko zaituztet, ondo joatea opa dizuet, gutxi lan egin eta asko irabazi 😉 besarkada bat!























































