,

Kimai Zeiterfassung auf VPS installieren

Lesedauer 6 Minuten

Wir zeigen dir in einer Schritt-für-Schritt-Anleitung, wie du Kimai Zeiterfassung auf einem VPS installieren kannst.

Inhaltsverzeichnis

0. Überblick

1. Kimai installieren

1.1 Einleitung

Kimai ist eine open source Zeiterfassungssoftware. Kimai ermöglicht es Zeiten für Projekte abzurechnen und stellt diese noch grafisch dar. Kimai kann mit Hilfe von Plugins noch um einige Funktionen erweitert werden.

1.2 Infos zu yml Dateien

Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Du kannst den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator

1.3 Vorbereitung

Diese Anleitung basiert auf dem aktuellen Debian 10 Betriebssystem. Kimai werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates und eine schnelle Installation.

Um Kimai neben anderen Diensten auf unserem Server betreiben zu können, nutzen wir hier den Reverse Proxy Traefik. Die Anleitung dazu finden Sie hier: https://www.easyname.at/blog/vps/anwendungen/traefik-reverseproxy-auf-vps-installieren

1.3.1 Verzeichnis erstellen

Wir erstellen uns ein neues Verzeichnis, in welchem wir später alle Daten von Kimai abspeichen. Dazu geben wir folgendes in der Konsole ein:

mkdir -p /opt/containers/kimai/{var,mysql,plugins} 

Anschließend müssen wir noch die Rechte eines Ordners anpassen. Gib dazu folgendes ein:

chown -R www-data:www-data /opt/containers/kimai/var/ 

Du kannst hier auch ein anderes Verzeichnis verwenden. Musst dann aber die gesamte Anleitung entsprechend anpassen.

1.3.2 docker-compose.yml erstellen

Nun können wir mit der eigentlichen „Installation“ von Kimai beginnen. Dazu öffnest du folgende Datei:

nano /opt/containers/kimai/docker-compose.yml 

Nun kopierst du folgenden Code in die Datei. Dieser Code ist unser Bauplan für unseren Kimai Container.

version: '3.5' 

services: 

  kimai-sql: 

    image: mysql:5.7 

    container_name: kimai-sql 

    environment: 

      - MYSQL_DATABASE=kimai 

      - MYSQL_USER=kimaiuser 

      - MYSQL_PASSWORD=kimaipassword 

      - MYSQL_ROOT_PASSWORD=changemeplease 

    volumes: 

      - ./mysql:/var/lib/mysql 

    command: --default-storage-engine innodb 

    restart: unless-stopped 

    networks: 

      - default 

  kimai: 

    image: kimai/kimai2:apache 

    environment: 

      - ADMINMAIL=admin@euredomain.de 

      - ADMINPASS=changemepleasess 

      - DATABASE_URL=mysql://kimaiuser:kimaipassword@kimai-sql/kimai 

      - TRUSTED_HOSTS=traefik,nginx,localhost,127.0.0.1,kimai 

      - APP_ENV=prod 

      # - MAILER_URL= 

      #- MAILER_FROM=kimai@euredomain.de 

    container_name: kimai 

    volumes: 

      - public:/opt/kimai/public 

      - ./var:/opt/kimai/var 

      - ./plugins:/opt/kimai/var/plugins 

    restart: unless-stopped 

    networks: 

      - default 

      - proxy 

    labels: 

      - "traefik.enable=true" 

      - "traefik.http.routers.kimai.entrypoints=http" 

      - "traefik.http.routers.kimai.rule=Host(`kimai.euredomaind.de`)"   # Hier eure URL eingeben # 

      - "traefik.http.middlewares.kimai-https-redirect.redirectscheme.scheme=https" 

      - "traefik.http.routers.kimai.middlewares=kimai-https-redirect" 

      - "traefik.http.routers.kimai-secure.entrypoints=https" 

      - "traefik.http.routers.kimai-secure.rule=Host(`kimai.euredomain.de`)"    # Hier eure URL eingeben # 

      - "traefik.http.routers.kimai-secure.tls=true" 

      - "traefik.http.routers.kimai-secure.tls.certresolver=http" 

      - "traefik.http.routers.kimai-secure.service=kimai" 

      - "traefik.http.services.kimai.loadbalancer.server.port=8001" 

      - "traefik.docker.network=proxy" 

      - "traefik.http.routers.kimai-secure.middlewares=secHeaders@file" 

volumes: 

    public: 

networks: 

  proxy: 

    external: true 

Nun müssen wir noch einiges anpassen.

1.3.3 Hostname anpassen

Nun musst du noch den Hostnamen anpassen, über welchen später Kimai erreichbar sein soll.

Diese beiden Zeilen musst du anpassen.

    - "traefik.http.routers.kimai.rule=Host(`kimai.euredomain.de `)" 

    - "traefik.http.routers.kimai-secure.rule=Host(`kimai.euredomain.de`)" 

In meinem Fall also:

    - "traefik.http.routers.kimai.rule=Host(`kimai.testbereich.net`)" 

    - "traefik.http.routers.kimai-secure.rule=Host(`kimai.testbereich.net`)" 

Wenn du Kimai direkt auf deiner „Hauptdomain“ betreiben willst, dann änderst du es folgendermaßen ab:

"traefik.http.routers.kimai.rule=Host(`www.euredomain.de`,`euredomain.de`)" 

"traefik.http.routers.kimai-secure.rule=Host(`www.euredomain.de`,`euredomain.de`)" 

Egal wie du dich entscheidest, diese Anpassung musst du noch vornehmen.

      - TRUSTED_HOSTS=traefik,nginx,localhost,127.0.0.1,kimai 

Hier fügst du am Ende deine Domain hinzu. Bei mir sieht es dann so aus:

      - TRUSTED_HOSTS=traefik,nginx,localhost,127.0.0.1,kimai,testbereich.net 

1.3.4 Datenbank Passwort anpassen

Nachdem du den Hostnamen angepasst hast, musst du noch das Datenbank Passwort anpassen. Vergib ein langes, sicheres Kennwort.

Folgende Zeilen musst du ändern:

      - MYSQL_PASSWORD=kimaipassword 

      - MYSQL_ROOT_PASSWORD=changemeplease 

Bei mir sieht es dann so aus:

      - MYSQL_PASSWORD=Adas324!dna3 

      - MYSQL_ROOT_PASSWORD=ghj47ASdnbg234 

Anschließend musst du noch folgende Zeile anpassen, damit Kimai später auf die Datenbank zugreifen kann.

      - DATABASE_URL=mysql://kimaiuser:kimaipassword@kimai-sql/kimai 

Hier musst du dein MYSQL Kennwort eingeben. Diese Zeile sieht dann bei mir so aus:

      - DATABASE_URL=mysql://kimaiuser:Adas324!dna3@kimai-sql/kimai 

1.3.5 Administrator Account anpassen

Nun ändern wir noch die Zugangsdaten zu unserem Administrator Account ab. Dazu passt du folgende Zeilen an:

      - ADMINMAIL=admin@euredomain.de 

      - ADMINPASS=changemepleasess 

Bei mir sieht es dann beispielsweise so aus:

      - ADMINMAIL=admin@easyname.at 

      - ADMINPASS=ASdnjad234aFas 

1.3.6 E-Mail aktivieren

Um die E-Mail-Funktionen zu aktivieren (z.B. das Zurücksetzen des Kennworts per E-Mail) musst du die Konfiguration anpassen. Der Hersteller veröffentlicht hier auch eine Anleitung, falls du Probleme hast: https://www.kimai.org/documentation/emails.html

Das wichtigste ist, dass wenn du eine E-Mail Login oder Passwort mit Sonderzeichen hast, dann musst du diese „URL Encoden“. Dies kannst du beispielsweise auf dieser Webseite machen: URL Encode Online | URLEncoder

Hier ein konkretes Beispiel:

Mein E-Mail Login ist: admin@easyname.at

Mein Passwort: ASdn324!2&§da

Dann muss ich beide Zeilen anpassen, da jeweils mindestens ein Sonderzeichen enthalten ist. Die Webseite gibt mir also folgende Werte zurück:

admin%40easyname.at 

ASdn324%212%26%C2%A7da 

Dies bekommst du hier nochmals genauer erklärt: https://symfony.com/doc/current/mailer.html

In der Konfiguration sind bereits folgende Zeilen enthalten:

      # - MAILER_URL= 

      # - MAILER_FROM=kimai@euredomain.de 

Diese musst du dann entsprechend anpassen und die „#“ zu Beginn entfernen.

- MAILER_URL=smtp://admin%40easyname.at: ASdn324%212%26%C2%A7da@mail.easyname.at:587?encryption=tls&auth_mode=plain 

- MAILER_FROM=admin@easyname.at 

2. Kimai starten

Gib nun folgendes ein, um deinen Kimai Container zu starten:

docker compose -f /opt/containers/kimai/docker-compose.yml up -d 

Beim ersten Start des Containers wird Kimai initialisiert. Dies bedeutet, dass die Datenbank eingerichtet, deine Einstellungen übernommen werden und vieles mehr. Daher dauert es einige Minuten, bis der Container dann über die Webseite (z.B kimai.euredomain.de) erreichbar ist. Bei mir hat es ca. 1 Minute gedauert.

Nun solltest du folgendes sehen: 

Nachdem du dich nun eingeloggt hast mit deinem Administrator, siehst du folgendes: 

Kimai Dashboard

2.1 Sprache ändern

Um die Sprache des Benutzers zu ändern, musst du links auf „Users“ klicken. 

Sprache des Benutzers ändern - Kimai

Klicke anschließend hinter deinem Benutzer auf den „Pfeil“ und wähle „Preferences“ aus. 

Preferences in Kimai

Hier kannst du nun die Sprache und vieles mehr anpassen. 

Spracheinstellungen Kimai

Vergiss nicht am Schluss ganz unten auf der Webseite auf „Save“ zu klicken.

Einstellungen speichern Kimai

Anschließend sollte sofort die Webseite in deiner gewünschten Sprache sein. 

Oberfläche mit gewünschter Sprache - Kimai

2.2 Plugins installieren

Kimai bietet einen Marktplatz, wo du kostenlose und kostenpflichte Erweiterungen erwerben kannst: https://www.kimai.org/store/

Ich zeige dir hier an einem Beispiel, wie du diese Erweiterungen in Kimai integrieren kannst. Auf der Webseite suche ich mir also beispielhaft das „Easy Backup“ Programm aus.

Easy Backup in Kimai

Oben rechts gibt es einen Button mit „Download“. 

Download-Button in Kimai

Klicke mit der rechten Maustaste auf diesen Button und wähle „Adresse des Links kopieren“ aus. 

Adresse des Links kopieren für Download

Auf deinem Server gehst du nun in dein Plugin Verzeichnis. Gib dazu folgendes ein:

cd /opt/containers/kimai/plugins 

Gib nun “wget” in die Konsole ein und gib die Adresse zum Download ein, welche du eben kopiert hast.

Bei mir ist dies

wget https://github.com/mxgross/EasyBackupBundle/archive/master.zip 

Anschließend entpackst du die Datei mit folgendem Befehl:

unzip master.zip 

Nun löschen wir die ZIP Datei wieder. Dazu gibst du folgendes ein:

rm master.zip 

Wenn du nun „ls“ eingibst, solltest du einen neuen Ordner im Verzeichnis sehen:

Neuer Ordner im Verzeichnis in Kimai

Diesen Ordner müssen wir jetzt noch umbenennen, da das Plugin sonst nicht erkannt wird. Gib dazu folgendes ein:

mv EasyBackupBundle-master/ EasyBackupBundle 

Nun müssen wir die Dateirechte für das Verzeichnis noch anpassen. Gib dazu folgendes ein:

chown -R www-data:www-data /opt/containers/kimai/plugins/ 

Zum Schluss müssen wir Kimai alle Daten neu einlesen lassen. Dazu gibst du folgenden Befehl ein. Wichtig ist, dass Kimai dazu gestartet sein muss.

docker exec kimai /bin/bash -c "/opt/kimai/bin/console kimai:reload --env=prod" 

Nun solltest du folgendes sehen:

Kimai alle Daten neu einlesen lassen

 

Wenn du alles richtig gemacht hast, dann solltest du nun unter dem Reiter „Erweiterungen“ unsere Erweiterung „EasyBackup“ sehen. 

EasyBackup in Kimai

easyname ist ein erfolgreicher und bekannter österreichischer Anbieter von Cloud-Services, Domains sowie Webhosting bis hin zur Server-Infrastruktur und gehört seit 2020 zur dogado group.
Das Unternehmen ist seit 2006 in Österreich erfolgreich am Markt und inzwischen auch in vielen anderen Ländern weltweit tätig. Sowohl das Team als auch die gehosteten Daten befinden sich in Österreich.

easyname liegt die Datensicherheit besonders am Herzen und stellt daher zu jedem Hosting-Paket auch kostenlose SSL-Zertifikate zur Verfügung. Mit intuitiven Tools zur Erstellung von Websites und Webshops und mit Easy Install Apps wie WordPress, Joomla oder PrestaShop können alle easyname-Kunden schnell in die Online-Welt einsteigen.