Thomas Kramer

IT-COW | Firefly III als Finanzmanagement-Software installieren

Firefly III als Finanzmanagement-Software installieren

By Administrator at Juni 12, 2022 02:04
Filed Under:

Bislang habe ich Hibiscus als Homebanking-Software benutzt, aber ich wollte mir als Alternative einmal Firefly III anschauen.

 

Der Vergleich der beiden Programme ist wahrscheinlich nicht ganz zutreffend. Es gibt zwar einen finTS-Importer für Firefly, um Umsätze von Banken in die Software zu importieren. Diese Funktion wird aber über einen externen Webservice realisiert und ist damit kein integraler Bestandteil von Firefly. Somit muss man Firefly eher als Finanzmanagement- und nicht als Homebanking-Software ansehen, jedoch kann man mit beiden Programmen seine Finanzen verwalten. Wenn man primär Firefly und keine weitere Homebanking-Software einsetzen will, muss man daher für das Online-Banking die Webseite seiner Bank benutzen.

 

Firefly kann als Docker auf einem Linux-Server laufen und ist als Webservice realisiert, also über den Webbrowser steuerbar. Firefly unterstützt sowohl die MySQL/MariaDB-als auch PostgreSQL-Datenbanken, und optional die In-Memory-Datenbank REDIS als Cache.

 

Die Datenmengen die bei einer Finanzverwaltung im Heimbereich entstehen sind sicher vernachlässigbar, daher sollte es irrelevant sein welche der beiden Datenbanken man benutzt. Bei mir habe ich mich für MariaDB entschieden, ich habe auf meinem Server aber beides am Laufen. Natürlich will ich nicht für jede Software die ich neu installiere eine neue Datenbankinstanz aufsetzen, es reicht schon dass jeder Docker-Container seinen eigenen Webserver mitbringt, auch wenn das kaum Performance kostet.

 

Daher habe ich mich in meinen bereits vorhandenen MariaDB-Docker eingeloggt und eine neue Datenbank für Firefly angelegt:

 

docker exec -it mariadb bash
mysql -u root -p
show databases;
create database firefly;
create user firefly;
GRANT ALL ON firefly.* to 'firefly'@'172.%' IDENTIFIED BY '$PASSWORD' WITH GRANT OPTION;

GRANT ALL ON firefly.* to 'firefly'@'localhost' IDENTIFIED BY ‘$PASSWORD' WITH GRANT OPTION;

exit

exit

 

Danach habe ich dann eine YAML-Datei für Firefly erstellt:

 

version: '3.3'

services:
  app:
    image: fireflyiii/core:latest
    container_name: firefly
    restart: always
    volumes:
      - $HOSTPATH:/var/www/html/storage/upload
    env_file:
      - stack.env
    ports:
      - 8090:8080  

 

Mit $ kennzeichne ich bei mir Variablen, die Werte müsst Ihr bei euch anpassen. Wenn man immer mehr Docker-Container hinzufügt muss man natürlich andere Ports des Hosts verwenden, aber Docker gibt dann schon eine Fehlermeldung aus wenn ein Port bereits vergeben ist.

 

Außerdem benötigt Firefly eine Datei für die ganzen Einstellungen, die hier als stack.env angegeben ist. Eine Vorlage kann über Github heruntergeladen werden. Für die Einstellungen habe ich mich an dem Deployn-Blog orientiert, mit ein paar Abweichungen. Natürlich kann man sich auch die Docker-Dokumentation für Firefly anschauen.

 

In der stack.env-Datei habe ich folgende Einstellungen gesetzt:

- APP_ENV=production

- bei SITE_OWNER die eigene EMail-Adresse einsetzen

- bei APP_KEY einen zufälligen Verschlüsselungsschlüssel setzen, der mit dem Befehl “head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 && echo” generiert werden kann (aus der Anleitung). Der Schlüssel muss genau 32 Zeichen lang sein.

- DEFAULT_LANGUAGE=de_DE

- TZ=Europe/Berlin

- TRUSTED_PROXIES=**

- DB_CONNECTION lasse ich unverändert auf mysql

- DB_HOST=mariadb
- DB_PORT=3306
- DB_DATABASE=firefly
- DB_USERNAME=firefly
- DB_PASSWORD=$PASSWORD

 

Wer REDIS einsetzt kann den Parameter CACHE_DRIVER ändern und muss dann auch die Parameter REDIS_HOST und REDIS_PORT setzen. Das Programm kann wohl auch Mails versenden, die Optionen benötige ich aber voraussichtlich nicht.

 

Danach dann den Docker mit

docker-compose up –d

starten und natürlich die Webseite http://$IP:$PORT aufrufen.

 

Wer die Webseite auch vom Internet aus aufrufen will muss natürlich auch noch Einstellungen in seinem Reverse Proxy setzen. Für derart private Daten sollte man sich dann vielleicht auch mit einem Zwei Faktor-Authentifizierungsserver wie Authelia beschäftigen, oder man benutzt von vornherein sein VPN für diese Zwecke.

 

Für Daueraufträge scheint Firefly einen Cronjob zu benötigen. Fügt der Crontab eures Hosts folgenden Eintrag hinzu:

*/5 * * * * docker exec --user www-data firefly php /var/www/html/artisan firefly-iii:cron

 

Wenn man mit so einem Programm anfängt will man sicher nicht alle Umsätze von Hand eingeben, daher gibt es den firefly-iii-fints-importer. Dieser Webservice ist recht einfach aufzusetzen:

 

git clone https://github.com/bnw/firefly-iii-fints-importer.git
cd firefly-iii-fints-importer
 

Eine docker-compose.yml-Datei wird dabei mit weiteren Dateien erstellt, diese würde ich bearbeiten und einen Namen für den Docker und die Restart-Policy angeben:

 

container_name: firefly-importer
restart: always   

 

Bei Volumes ist per Default ein relativer Pfad für das Host-Mapping angegeben, das sollte vielleicht auch noch angepasst werden damit der Webservice die Vorgaben-Einstellungsdatei example.json findet. Wenn Ihr viele Docker-Container habt müsst Ihr ggf. auch den gemappten Port ändern.

 

Danach sollte man den Container aber noch nicht starten, sondern in das Unterverzeichnis ./app/configurations gehen und die Datei example.json bearbeiten:

 

{
  "bank_username": "$USERNAME",
  "bank_password": "$PASSWORD",
  "bank_code": "$BLZ",
  "bank_url": $BANKURL,
  "bank_2fa": "972",
  "firefly_url": $IP:$PORT,
  "firefly_access_token": "$TOKEN",
  "skip_transaction_review": "false"
}

 

Die Zugangsdaten sind natürlich von eurer Bank abhängig. Die Art des Authentifizierungsverfahrens wird über den Parameter “bank_2fa” angegeben, welcher eine Enumeration darstellt. 972 steht für das “SMART-TAN plus optisch”-Verfahren. Eine Auflistung der dafür möglichen Werte steht in dieser Datei von Github.

 

Danach muss noch der Access-Token für Firefly angegeben werden, dieser muss zunächst in der Firefly-Anwendung erzeugt werden. In Firefly geht man dazu, sofern die Anwendung auf deutsch eingestellt ist, auf Einstellungen/Profil/OAuth und bei “Persönliche Zugangs-Tokens” klickt man auf “Neuen Schlüssel erstellen”. Den dabei erzeugten Key trägt man bei “firefly_access_token” ein.

 

Danach kann man dann mit

docker-compose up –d

den Docker-Container für den Webservice starten.

 

Dann ist der Importer-Webservice über den Webbrowser und die Adresse http://$IP:$PORT erreichbar.

 

Wenn die Verbindung klappt kann man dann die Konten und den Zeitraum für die zu importierenden Umsätze auswählen. Wenn man übrigens beim Import einen Zeitraum auswählt, der vor den ersten Umsätzen liegt die bei der Bank noch gespeichert sind, bekommt man eine nichtssagende technische Fehlermeldung. Das könnte man vielleicht besser lösen, aber wenn man das weiß ist das okay, da das nur beim initialen Import auftritt.

 

Ansonsten gibt es noch einen weiteren Importer für Firefly, FIDI genannt. Damit kann man u. a. alte Umsätze, die nicht mehr bei der Bank gespeichert sind, in Firefly importieren. Diese Schnittstelle ist ebenfalls als Webservice gelöst und kann folgendermaßen angelegt werden.

 

Für FIDI kann man natürlich einen weiteren OAuth-Key in Firefly erzeugen.

 

docker run -d \
--name=fidi \
--rm \
-e FIREFLY_III_ACCESS_TOKEN=$TOKEN \
-e FIREFLY_III_URL=$IP:$PORT \
-p 8091:8080 \
fireflyiii/data-importer:latest

 

Einen solchen Daten-Importer wird man vermutlich nicht ständig benötigen, daher reicht wohl ein Docker-Aufruf bei Bedarf. Außerdem sollte man solche wichtigen Daten regelmäßig sichern, zum Beispiel über einen Cronjob. In der Crontab müssen %-Zeichen durch vorangestellte \ gequotet werden:

 

0 5 * * * docker exec mariadb mysqldump --user=root --password=$PASSWORD --all-databases > $HOSTPATH/mariadb-dump-$(date +\%F_\%H-\%M-\%S).sql.

 

Bislang gefällt mir Firefly gut, welche Kostenstelle welche Umsätze pro Monat erzeugt kann man mit Firefly schneller einsehen als mit Hibiscus. Durch die Realisierung als Webservice ist das Programm natürlich ohne Installation von jedem Rechner aus direkt benutzbar.

   

Kommentar schreiben




  Country flag
biuquote
  • Kommentar
  • Live Vorschau
Loading


Tag-Wolke

Monats-Liste