Firefly III ist eine freie und quelloffene Finanzmanagersoftware für den persönlichen Gebrauch. Firefly kann dabei helfen, Ausgaben, Einnahmen, Budgets im Auge zu behalten. Kreditkarten, gemeinsame Haushaltskonten und Sparkonten werden unterstützt.
Als andere Optionen sollte man sich Frappe Books ansehen. Hier sind die Zielgruppe auch kleine Unternehmen. Leider befindet es sich aber noch in der Beta-Phase, funktioniert nur über Umwege auf einem Server und Belege anheften ist (noch) nicht möglich. Mit Gnucash war ich in der Vergangenheit nicht wirklich zufrieden. Akaunting ist eine andere Software, die auf einem Server läuft. Bedauerlicherweise ist der Installationsvorgang davon eher bescheiden und Funktionalitäten wie doppelte Buchführung kosten Geld.
Deshalb geht es hier um Firefly III.
Ich nutze ein Synology NAS. Es handelt sich um ein DS220+(Amazon Affiliate-Link) mit 10 GB RAM(Amazon Affiliate-Link).
So viele Ressourcen sind jedoch nicht nötig. Jedenfalls sollte ein Server mit Portainer (Anleitung für Synology) vorhanden sein.
Außerdem ist ein Reverse-Proxy-Manager im Netzwerk hilfreich, unabhängig davon, ob er sich auf einem anderen Gerät oder dem Synology NAS befindet.
Zunächst erstelle ich einen neuen freigegebenen Ordner im DSM. Die Daten-Prüfsumme aktiviere ich nicht, weil ich auf in diesem Ordner meine Datenbank haben möchte. Der Docker-Gruppe gebe ich auch Zugriff auf diesen Ordner.
In meinem Fall ist es /volume2/firefly
. In diesem Verzeichnis erstelle ich drei neue Ordner:
Jetzt kann ich schon zu Portainer wechseln und einen neuen Stack erstellen. Diesen nenne ich firefly und füge in den Web-Editor folgenden Code ein:
version: '3.7'networks:internal:external: falseservices:firefly:container_name: fireflyimage: fireflyiii/core:latestports:- 8080:8080volumes:- /volume2/firefly/upload:/var/www/html/storage/uploadrestart: unless-stoppedenv_file:- stack.envdepends_on:- firefly-dbnetworks:- internalfirefly-db:container_name: firefly-dbimage: postgres:14volumes:- /volume2/firefly/db:/var/lib/postgresql/datarestart: unless-stoppedenvironment:POSTGRES_DB: ${DB_DATABASE}POSTGRES_USER: ${DB_USERNAME}POSTGRES_PASSWORD: ${DB_PASSWORD}networks:- internalfirefly-db-backup:container_name: firefly-db-backupimage: postgres:14volumes:- /volume2/firefly/db-backup:/dump- /etc/localtime:/etc/localtime:roenvironment:PGHOST: firefly-dbPGDATABASE: ${DB_DATABASE}PGUSER: ${DB_USERNAME}PGPASSWORD: ${DB_PASSWORD}BACKUP_NUM_KEEP: 10BACKUP_FREQUENCY: 7dentrypoint: |bash -c 'bash -s <<EOFtrap "break;exit" SIGHUP SIGINT SIGTERMsleep 2mwhile /bin/true; dopg_dump -Fc > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.psql(ls -t /dump/dump*.psql|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.psql)|sort|uniq -u|xargs rm -- {}sleep $$BACKUP_FREQUENCYdoneEOF'networks:- internalfirefly-redis:container_name: firefly-redisimage: redis:6networks:- internal
Einige Dinge müssen an die eigenen Gegebenheiten angepasst werden:
volume2/firefly/...
: Der Pfad zum Ordner, in dem die Daten gespeichert werden.8080:8080
: Der Port, auf dem Firefly laufen soll. Ist dieser Port bereits belegt, sollte ein anderer Port verwendet werden: 8081:8080
, 8082:8080
, usw.Danach muss die .env-Datei von hier heruntergeladen werden. Die muss als .env
gespeichert werden. Anschließend kann man sie in Portainer hochladen.
Jetzt können einige Werte davon angepasst werden:
APP_ENV
stelle ich auf production
.SITE_OWNER
trage ich meine E-Mail-Adresse ein.APP_KEY
muss ein zufälliger Schlüssel generiert werden mit genau 32 Zeichen.DEFAULT_LANGUAGE
trage ich de_DE
ein.TZ
stelle ich auf Europe/Berlin
ein.TRUSTED_PROXIES
kann auf **
gesetzt werden.DB_CONNECTION
ändere ich zu pgsql
.DB_HOST
ist in meinem Fall firefly-db
.DB_PORT
ist 5432
.DB_PASSWORD
kann beliebig gewählt werden.CACHE_DRIVER
ändere ich zu redis
.REDIS_HOST
ist in meinem Fall firefly-redis
.REDIS_PORT
bleibt 6379
.Bei Bedarf können auch die E-Mail-Einstellungen angepasst werden, um Benachrichtigungen von Firefly bei bestimmten Ereignissen, wie Fehlern und Abstürzen, Sicherheitsbenachrichtigungen sowie Passwortrücksetzungen eine E-Mail zu erhalten.
MAIL_MAILER
ändere ich zu smtp
.
MAIL_HOST
ist in meinem Fall smtp.meinedomain.de
.
…
Vorsicht an dieser Stelle. Ich habe diese Daten richtig eingegeben, aber beim db-host einen Fehler gemacht, weshalb das Programm nicht richtig startete. Der Firefly Mailer hat mir bis zu 32 E-Mails pro Minute gesendet. Vielleicht sollte man diese Angaben demnach erst später eingeben, wenn man sich sicher ist, dass das Programm einigermaßen läuft.
Als Letztes kann man noch die APP_URL
festlegen, die man im Proxy-Host festlegt. Laut Anleitung hat diese Einstellung jedoch keine Auswirkungen.
Danach starte ich den Stack. An dieser Stelle kann man sich einen Kaffee holen gehen ☕
Anschließend kann man sich entweder unter der im Proxy-Manager eingestellten Adresse oder der IP-Adresse des Servers mit dem eingestellten Port anmelden (standardmäßig 8080).
Bitte bei Wünschen, Anmerkungen, Kritik einen Kommentar schreiben :) Ich hoffe, das hier hilft jemanden weiter.