Ich habe eigentlich immer viele verschiedene Aufgaben erfüllen müssen und mich schon oft gefragt, wie viel Zeit eigentlich wofür drauf geht. Ausgewachsene Systeme zur Zeiterfassung waren mir jedoch immer zu kompliziert, nur um meine Neugierde über mich selbst zu befriedigen. Eher durch Zufall fand ich nun einem Time Tracker namens TIMEtagger, der sich sehr vielversprechend anhört. Dieses System scheint einen Versuch wert zu sein. Ich beschreibe einfach mal, wie ich den TIMEtagger auf meinem QNAP NAS installiert habe.
Ein Time Tracker namens TIMEtagger
Der TIMEtagger ist ein OpenSource Projekt des Niederländers Almar Klein. Auf der Website timetagger.app bietet dieser das Projekt auch als Cloud-Lösung an. Für derzeit 3 Euro im Monat oder 144 Euro für eine Lizenz auf Lebenszeit ist diese auch sehr erschwinglich, denke ich. Der Anbieter übernimmt für diesen Preis die Updates und kümmert sich auch um die Datensicherung.
Für meine eigene Neugierde begnüge ich mich allerdings mit der kostenfreien self-hosted Variante. Diese bietet Almar Klein auf GitHub zum Download an. Die Datensicherung ist damit komplett in meiner Verantwortung und um Updates muss ich mich ebenso selbst kümmern, wie um Sicherheitsaspekte. Aber für ein privates System ist das okay, denke ich. Außerdem ist für mich ja der Weg das Ziel 🙃.
Die Installation
Ich möchte die App auf meinem eigenen NAS betreiben. Auf QNAP (wie auch auf anderen Systemen) bietet sich dafür der Einsatz einer Docker-Containers an. Über die App Container Station können solche Container recht komfortabel verwaltet werden. Die erste zu nehmende Hürde war allerdings, dass ich keinen so richtig passenden Container auf Docker Hub fand. Es gibt zwar einige, aber der am weitesten verbreitete ist an einigen Stellen modifiziert und die anderen sind nicht wirklich mit Dokumentationen versehen. Also entschied ich mich dazu, einen eigenen Container zu bauen. Wobei das arg übertrieben klingt, weil Almar Klein passende Skripte dafür anbietet, die nur leicht modifiziert werden müssen.
In der Container Station wählte ich unter ‚Create‘ den unscheinbaren Button ‚Create Application‘ aus. Hier kann ein Docker Compose File angelegt werden. Dafür gibt es auf GitHub diese Vorlage. Wenn ich diese 1:1 übernehme, dann kann ich allerdings nicht von meinen anderen Containern aus auf die IP-Adresse dieses Containers zugreifen. Die Subnetze sind verschieden. Die kleine Änderung network_mode: bridge bewirkte Wunder für mich. Darauf muss man aber auch erstmal kommen 😉. Außerdem sollte das Daten-Volume noch so platziert werden, wie es für QNAP typisch ist. Dafür habe ich den entsprechenden Pfad im ‚volumes‘-Bereich noch angepasst:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
version: '3' services: timetagger: image: ghcr.io/almarklein/timetagger network_mode: bridge ports: - "20404:80" volumes: - /share/Container/container-station-data/lib/docker/volumes/timetagger_data/_data:/root/_timetagger environment: - TIMETAGGER_BIND=0.0.0.0:80 - TIMETAGGER_DATADIR=/root/_timetagger - TIMETAGGER_LOG_LEVEL=info - TIMETAGGER_CREDENTIALS=<USERNAME>:<BCrypt hash of the password> |
Wichtig war es noch, den Weiterleitungs-Port von ’80‘ auf ‚20404‘ (oder irgendetwas anderes) anzupassen. Dieser wird an die IP-Adresse des NAS gebunden. Diese Daten habe ich dann einfach per Copy & Paste in den Dialog der QNAP Container Station kopiert.
Letzte Zeile: Die Credentials
Die letzte Zeile im Docker Compose File sind die Credentials, mit denen man sich beim TIMEtagger anmelden kann. Hier kann eine durch Kommata getrennte Liste mehrerer Benutzer hinterlegt werden. Da ich mit mir selbst alleine bin, ist das einfach erledigt: Ich habe einen Benutzernamen gewählt und über die von Almar Klein angebotene Seite https://timetagger.app/cred den Hash generiert. Wichtig: Dollar-Zeichen ($) müssen maskiert, also verdoppelt, werden. Sonst interpretiert Docker Compose die folgenden Zeichen als recht wirren Befehl.
Und: Go!
Das war’s. Jetzt genügten der von QNAP geforderte Klick auf den Check der Syntax und ein weiterer Klick auf ‚Okay‘. Nach 1-2 Minuten hatte ich meine TIMEtagger-App auf dem QNAP installiert und konnte über http://<QNAP>:20404 darauf zugreifen. Die Anmeldung funktionierte auf Anhieb.
Allerdings war mir der Zugriff über HTTP zuwider. Das sollte aber nicht der Job der App sein. Darum kümmert sich Caddy. Die Konfiguration ist extrem einfach, da TIMEtagger praktischer Weise bereits in einem /timetagger/-Pfad arbeitet:
1 2 3 4 5 6 7 8 9 10 |
[...] my.server.name { [...] redir /timetagger /timetagger/ handle /timetagger/* { reverse_proxy <QNAP>:20404 } [...] } [...] |
So. Jetzt kümmert sich Caddy um den HTTPS-Zugriff und der TIMEtagger ist für mich von überall erreichbar.
Abschließendes …
Ich werde das jetzt mein intensiv testen und eventuell noch einmal berichten. Über ein Plugin habe ich den TIMEtagger bereits in mein Notizsystem Joplin eingebunden. Bei der Einrichtung musste ich hierzu allerdings herausfinden, dass man beim Hostname wirklich nur den Hostname, also https://<myserver>, eintragen darf – kein Slash dahinter, kein Pfad. Nur dann funktioniert das Plugin.
No responses yet