Finance Manager Firefly III auf Synology
Die Anleitung beschreibt, wie man die kostenlose Finanzsoftware Firefly III auf einem Synology NAS mit Hilfe von Docker installieren kann.
Inhaltsverzeichnis
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.
Alternativen
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.
Voraussetzungen
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.
Installation
Ordnerstruktur
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:
- db
- db-backup
- upload
Neuer Stack
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: false
services:
firefly:
container_name: firefly
image: fireflyiii/core:latest
ports:
- 8080:8080
volumes:
- /volume2/firefly/upload:/var/www/html/storage/upload
restart: unless-stopped
env_file:
- stack.env
depends_on:
- firefly-db
networks:
- internal
firefly-db:
container_name: firefly-db
image: postgres:14
volumes:
- /volume2/firefly/db:/var/lib/postgresql/data
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
networks:
- internal
firefly-db-backup:
container_name: firefly-db-backup
image: postgres:14
volumes:
- /volume2/firefly/db-backup:/dump
- /etc/localtime:/etc/localtime:ro
environment:
PGHOST: firefly-db
PGDATABASE: ${DB_DATABASE}
PGUSER: ${DB_USERNAME}
PGPASSWORD: ${DB_PASSWORD}
BACKUP_NUM_KEEP: 10
BACKUP_FREQUENCY: 7d
entrypoint: |
bash -c 'bash -s <<EOF
trap "break;exit" SIGHUP SIGINT SIGTERM
sleep 2m
while /bin/true; do
pg_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_FREQUENCY
done
EOF'
networks:
- internal
firefly-redis:
container_name: firefly-redis
image: redis:6
networks:
- 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 aufproduction
.- Bei
SITE_OWNER
trage ich meine E-Mail-Adresse ein. - Bei
APP_KEY
muss ein zufĂ€lliger SchlĂŒssel generiert werden mit genau 32 Zeichen.
- Bei
DEFAULT_LANGUAGE
trage ichde_DE
ein. TZ
stelle ich aufEurope/Berlin
ein.TRUSTED_PROXIES
kann auf**
gesetzt werden.- PaperTrail kann man aktivieren, ich nutze es nicht.
DB_CONNECTION
Ă€ndere ich zupgsql
.DB_HOST
ist in meinem Fallfirefly-db
.DB_PORT
ist5432
.DB_PASSWORD
kann beliebig gewÀhlt werden.CACHE_DRIVER
Ă€ndere ich zuredis
.REDIS_HOST
ist in meinem Fallfirefly-redis
.REDIS_PORT
bleibt6379
.
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 zusmtp
. -
MAIL_HOST
ist in meinem Fallsmtp.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.