Glühwürmchen III – Persönlicher Finanzmanager

Ich nehme an, dass ihn vielleicht viele von Ihnen kennen werden, Firefly III ist ein Dienst, mit dem wir unsere Finanzen verwalten können. Ein Manager, der uns hilft, unsere Bankkonten zu verstehen, Wir können leicht verstehen, wohin unser Geld fließt, Natürlich Open Source und On-Premise!

gut, dafür, Wenn Sie mehr Transparenz über Ihre Bankkonten benötigen, oder eine bessere Übersicht über Einnahmen und Ausgaben haben, FireFly III hilft dabei seit Jahren. Wir werden es in weniger als installieren lassen 5 Minuten dank Docker!

Es gibt verschiedene Möglichkeiten, Firely III zu installieren (und konfigurieren Sie es), basierend auf dem, was wir brauchen; In diesem Fall installieren wir Firefly III in einem Docker-Container, Bevor wir fortfahren, laden wir die benötigten Dateien herunter und passen sie an unsere Bedürfnisse an:

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

Bearbeiten Sie die Datei ‚.env‘ und zumindest werden wir den APP_KEY ändern, die Räumlichkeiten und die Zugangsdaten zur MySQL-Datenbank, da diese Datei den größten Teil der Konfiguration enthält, der E-Mail-Teil, wenn wir Benachrichtigungen wünschen…

APP_KEY=secretrode32caracteres
DEFAULT_LANGUAGE=es_ES
TZ=Europa/Madrid
...
DB_USERNAME=USER_BD
DB_PASSWORD=USER_PASSWORD_BD
...

Bearbeiten Sie die Datei ‚.db.env‘ und zumindest ändern wir die Zugangsdaten zur Datenbank (das gleiche wie im vorherigen Schritt):

MYSQL_USER=USER_BD
MYSQL_PASSWORD=USER_PASSWORD_BD

letzte, Wenn wir daran interessiert sind, den Container zum Importieren von Daten in Firefly zu haben, bearbeiten wir ihn ‚.importer.env‘ (und wenn nicht,, wir ignorieren das). Und wir geben die IP-Adresse oder den FQDN des Firefly III-Servers an, Außerdem wählen wir die Art der Authentifizierung, normalerweise mit dem Access Token (Später werden wir sehen, wie man es generiert):

FIREFLY_III_URL=http://IP_O_FQDN_FIREFLY_III
FIREFLY_III_ACCESS_TOKEN=ey...
TZ=Europa/Madrid

Und wir haben gerade das bearbeitet ‚docker-compose.yml‘ Wenn wir an Änderungen interessiert sind, In meinem Fall habe ich nur die Ports geöffnet, el 80tcp für FireFly III, das 81tcp für den Importeur und natürlich das 3306 Ich lasse es offen, MySQL von außen zu konsultieren, zum Beispiel von Grafana, sein:

Dienstleistungen:
...
  App:
...
    Häfen:
      - '80:8080'
...
...
  db:
...
    Häfen:
      - '3306:3306'
...
...
  Importeur:
...
    Häfen:
      - '81:8080'
...

und, Zum Schluss heben wir die Container an:

docker compose -f docker-compose.yml up -d --pull=always

Wir können jetzt auf die Firefly III-Website zugreifen, in diesem Fall veröffentlicht auf Port 80tcp der Docker-Host-IP, also http://ADDRESS_IP_O_FQDN und beim ersten Anmelden müssen wir ein Konto erstellen, Wir geben unsere E-Mail-Adresse und ein Passwort an & „Registrieren“,

Wenn wir eintreten, müssen wir unsere erste Bank registrieren, Und jetzt können wir uns die Bewerbung ansehen, aber ohne Daten ist es etwas dürftig… Als nächstes müssen wir also die Daten von unserer Bank importieren!

bevor irgendetwas, Wir müssen entscheiden, welche Art der Authentifizierung wir im Container verwenden. ‚Firefly III-Datenimporttool‘, Am einfachsten ist es, dass wir von Firefly III einen persönlichen Zugangstoken generieren und diesen im angeben ‚.importer.env‘

Wenn wir die Container erneut generieren und eine Verbindung zur Website des herstellen ‚Firefly III-Datenimporttool‘ (in meinem Fall auf Port 81tp) Wir können den Importvorgang starten, klicken Sie auf „Datei importieren“,

in ‚Importierbare Datei‘ Wir hinterlassen die CSV-Datei, die wir von unserer Bank heruntergeladen haben, mit all der Geschichte, die uns über die Bewegungen interessiert. Die optionale Konfigurationsdatei, nach der Sie uns fragen, Im Moment werden wir es nicht haben, aber sobald wir diesen Zauberer beendet haben, wir können es erzeugen, eine JSON-Datei, die mit den Optionen gefüttert wird, die wir unten auswählen werden, „Nächster“,

Wir geben an, ob die CSV-Datei Header hat, wenn wir es in UTF-8 konvertieren wollen, Was ist das Trennzeichen der CSV?, In welche Bank werden wir es aus FireFly III importieren?, Datumsformat… „einreichen“,

Abhängig von den oben gewählten Optionen wird uns der Inhalt unserer Datei angezeigt und die Spalten getrennt.… Wir können die Spalten ignorieren, die wir nicht importieren möchten (natürlich), und wir werden die Rolle jeder Spalte zuordnen, Zumindest werden wir die Felder importieren ‚Transaktionsdatum‘, ‚Beschreibung‘ und ‚Menge‘. „einreichen“,

Vor dem Start, wir können Sie auf „Laden Sie die Konfigurationsdatei herunter“ Daher müssen wir diesen Assistenten nicht ausführen und uns das erforderliche Format merken, oder diesen Import in Zukunft zu automatisieren. klicken Sie auf „Auftrag starten“ vorab,

Wir sehen, wie wichtig die Bewegungen des CSV sind… wir hoffen,…

Sobald es fertig ist, wird es uns Bescheid sagen, perfekt!

Wir fangen an, Daten zu haben! Ole und ole Rigodón! Jetzt können wir jeden Bericht detaillierter sehen, etc…

folgendermaßen, Es können die Kategorien konfiguriert werden, um zu wissen, wohin unser Geld fließt! damit es jede Bewegung kategorisieren und sagen kann, ob es sich um eine Hypothek handelt, Kosten im Supermarkt, von Gas, von Amazon…

von „Automatisierung“ > „Regeln“ wir können sie erschaffen, Die Einrichtung ist einfach, Wir geben einen Namen an und geben an, wann er aktiviert werden soll, wenn Sie ein Wort in der Beschreibung entdecken, zum Beispiel…

Und hier verlasse ich Sie mit Firefly III, Gehen Sie herum, es ist ganz einfach; dann der Käse, Die Berichte sind eleganter, Wir verstehen detaillierter, wohin unser Budget fließt. Diese Screenshots, die Sie oben sehen, stammen von einer Open-Source-App, die wir auf unseren Mobiltelefonen installieren können. (namens Waterfly III) das verbindet sich mit FireFly III und ist vielleicht komfortabler…

und… Warte, wir sind noch nicht fertig! Sie erinnern sich, dass wir im MySQL-DB-Container 3306tcp offen gelassen haben? Nun, mit den Zugangsdaten können wir uns verbinden und Anfragen stellen, wie wir interessiert sind und es schön sehen und von Grafana probieren können, nach Kategorien, oder einfach die Bewegungen… aber nicht nur, um es von Grafana aus zu sehen, Ja, wenn man bedenkt, wie geeky ich bin, Ich erzeuge eine PDF Tagebuch und diese Informationen gelangen mir darin, unter anderem interessante Details zum Home Assistant (Statistiken…)

sicher, die Zahlen, die wir sehen, Sohn fälscht, Ansonsten sind sie zur Hälfte abgedeckt, so dass Sie die von mir verwendeten Zahlen nicht kennen, Ich kann es nicht öffentlich sagen, wie viele Millionen ich habe). Venga, der Punkt, derjenige, der MySQL-Abfragen benötigt:

  • Diagramm mit der Gesamtsumme:
WÄHLEN Sie tj.date als Uhrzeit aus, "Gesamt" als Metrik, SUMME(t.Betrag) ÜBER (BESTELLEN NACH tj.date ASC) AS-Wert
FROM Transaktionen 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;

  • Diagramm mit Bewegungen:
WÄHLEN Sie tj.date als Uhrzeit aus, t.amount als Wert, tj.description als Metrik
FROM Transaktionen 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;

  • Bewegungstabelle:
WÄHLEN Sie den Betrag aus, tj.beschreibung, LINKS(tj.date, 10) schließe sie, SUMME(t.Betrag) ÜBER (BESTELLEN NACH tj.date ASC) AS Gesamt
FROM Transaktionen t INNER JOIN Transaction_journals tj ON t.transaction_journal_id = tj.id
WHERE t.account_id = 'TU ID DEL BANCO' ORDER BY Datum desc;

Und hoffe, dass ich das Wichtigste vergesse! Wie automatisieren wir das?? Nun, wenn Sie Glück haben und Ihre Bank Ihnen erlaubt, auf irgendeine Weise eine Verbindung herzustellen, per API, etc… gut, andernfalls, Gibt es einen Drittanbieterservice? (bezahlt und extern) das könnte dir helfen… Eine andere Möglichkeit besteht darin, die Dateien wöchentlich manuell herunterzuladen und sie immer im gleichen Pfad zu belassen, dann importiert ein Skript sie (Es gibt einen Cron-Container), oder ein Tool verwenden, das unsere Klicks aufzeichnet, Geben Sie die Bank ein und erstellen Sie den Bericht… Letzteres ist meine persönliche Option. Die Wahrheit ist sehr schäbig, Ich habe ein isoliertes MV, kein Internetzugang (nichts anderes als die Websites der Banken)… und täglich wird eine kleine Aufgabe ausgeführt (ojito) das die Berichte generiert, So wie jede Bank ihrem Vater gehört, einige werden im CSV-Format generiert, andere in XLS und andere in XLSX (berühre das…) Deshalb hinterlasse ich Ihnen einige Tipps, die ich in einem Skript habe, die Ihnen helfen können:

#Konvertieren Sie von XLSX in CSV und verwenden Sie das ; als Trennzeichen:
    xlsx2csv -d ';' Datei.xlsx Datei.csv

#Konvertieren Sie von XLS nach CSV, ohne die Datumsformatierung zu verlieren:
    libreoffice --convert-to csv file.xls

#Löschen Sie die ersten 15 Linien:
    sed -i '1,15d' file.csv

#Importieren Sie die CSV-Datei im aktuellen Ordner mit der Konfigurations-JSON, beide Dateien haben den gleichen Namen:
    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:neueste

Mit diesem letzten Befehl importieren wir die CSV in die im JSON angegebene Bank, ein Wunder! Vermeidung doppelter Bewegungen, etc… Das Letzte (und jetzt wirklich), die MySQL-Abfragen, die wir zuvor gesehen haben, Die Integration mit Home Assistant kann für uns sehr nützlich sein, und teilen Sie uns während des Frühstücks über unsere Lautsprecher den Kontostand mit, sowie die letzten Sätze… Matrosenstoff!!!

Venga, Jetzt lasse ich dich in Ruhe, Ich wünsche dir, dass es sehr gut läuft, Mögen Sie wenig arbeiten und viel verdienen 😉 eine Umarmung!

Hector Herrero
Letzte Artikel von Hector Herrero (Alle anzeigen)