Mit Kimai kann man eine webbasierte Zeiterfassungsanwendung einrichten. Wer sich Kimai unter Linux Debian 9 anschauen möchte, findet hier eine ausführliche Anleitung dazu.
Aufgrund striktere Zeiterfassungen der Mitarbeiter dank neuer Gesetze ist es mittlerweile notwendig, dass man die Mitarbeiter und deren Arbeitszeiten akribisch erfasst. Mit Kimai (Kimai2) wird eine webbasierte Zeiterfassung angeboten, die sich durchaus sehen lassen kann.
Benötigt wird hierbei auf jeden Fall ein Linux-Betriebssystem und weitere Komponente, wie zum Beispiel Composer oder Docker. Ich selbst habe mich an die empfohlene Installationsweise über Composer gehalten und erkläre in diesem Beitrag, wie man es bei sich einfach und unkompliziert einrichten kann.
In unserem Fall gehen wir davon aus, dass man neben Debian 9 (Debian 4.9.189–3+deb9u2) auch Nginx als Webserver verwendet. Da ich mich nicht mit Apache anfreunden konnte und auch nicht werde, verwende ich seit Anfang an Nginx.
Nachdem man mit „apt-get update && apt-get upgrade && apt-get dist-upgrade” sichergestellt hat, dass man auf dem aktuellsten Stand ist, muss zunächst Composer installieren.
Composer unter Debian 9 installieren:
- apt-get install curl php-cli php-mbstring git unzip
- cd ~
- curl ‑sS https://getcomposer.org/installer ‑o composer-setup.php
- sudo php composer-setup.php –install-dir=/usr/local/bin –filename=composer
Hat man die oben genannten Befehle ausgeführt, kann mit dem Befehl „composer” überprüfen, ob es ordnungsgemäß installiert wurde. Ist das der Fall, kann direkt loslegen und Kimai einrichten.
Kimai unter Debian 9 installieren:
Zunächst geht man über das Linux-Terminal – beispielsweise über PuTTY oder KiTTY – zu dem genannten Ordner, wo Kimai installiert werden soll. In meinem Fall ist das „/home/www/kimai.newsportal.koeln/”. Im Anschluss die unten genannten Befehle ausführen.
- cd /home/www/
- sudo ‑u www-data git clone ‑b 1.6.2 –depth 1 https://github.com/kevinpapst/kimai2.git
- mv kimai2 kimai.newsportal.koeln
- cd kimai.newsportal.koeln/
- sudo ‑u www-data composer install –no-dev –optimize-autoloader
Hat man zuerst die nötigen Dateien über Git heruntergeladen und über Composer installiert, muss die neu erstellte „.env”-Datei bearbeiten. In meinem Fall sieht sie so aus:
MAILER_FROM=kimai@newsportal.koeln APP_ENV=prod APP_SECRET=IRGENDWAS_HIER_EINTRAGEN DATABASE_URL=mysql://db_user:db_passwort@127.0.0.1:3306/db_name MAILER_URL=smtp://localhost:465?encryption=ssl&auth_mode=login&username=kimai@newsportal.koeln&password=HelloWorld CORS_ALLOW_ORIGIN=^https?://localhost(:[0-9]+)?$
Bei „APP_SECRET” müsst ihr irgendeine zufällige Zeichenreihe eingeben. Verwendet zum Beispiel ein Passwortgenerator mit Buchstaben und Zahlen. Unter „DATABASE_URL” müsst ihr bei „db_user” euren Datenbankbenutzer angeben, sowie das dazugehörige Passwort in „db_passwort”. Bei „db_name” gibt ihr logischerweise an, wie die Datenbank überhaupt heißt. Das müsst ihr vorher logischerweise dann noch einrichten – den passenden Datenbankzugang. Zum Schluss noch die Zugangsdaten eines E‑Mail-Postfachs angeben, indem bei „username=” danach die E‑Mail-Adresse eingegeben wird und bei „password=” das entsprechende Passwort dazu. Anschließend kann man fortfahren.
- sudo ‑u www-data bin/console kimai:install ‑n
- chown ‑R www-data:www-data *
- sudo ‑u www-data bin/console kimai:create-user Raphael kimai@newsportal.koeln ROLE_SUPER_ADMIN
Damit habt ihr Kimai erfolgreich installiert. Nun muss nur noch der Außenzugriff über den Webserver eingerichtet werden.
Nginx unter Debian für Kimai einrichten:
Prinzipiell könnt ihr meine Nginx-Konfiguration problemlos übernehmen – bis auf ein paar kleine Änderungen wie Domainname und ähnlicheres. Aber das funktioniert nur, wenn man ein SSL-Zertifikat für die entsprechende Domain vorher erstellt beziehungsweise einrichtet. Außerdem wird PHP-FPM vorausgesetzt.
server { listen 80; listen [::]:80; server_name kimai.newsportal.koeln; rewrite ^ https://$server_name$request_uri permanent; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "img-src https://kimai.newsportal.koeln/"; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name kimai.newsportal.koeln; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "img-src https://kimai.newsportal.koeln/"; ssl on; ssl_certificate /etc/letsencrypt/live/kimai.newsportal.koeln/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kimai.newsportal.koeln/privkey.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_dhparam /etc/nginx/ssl/dhparams.pem; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; resolver 8.8.8.8 8.8.4.4; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"; root /home/www/kimai.newsportal.koeln/public/; access_log /var/log/nginx/access-kimai_newsportal_koeln.log; error_log /var/log/nginx/error-kimai_newsportal_koeln.log; index index.php; location ~ /\.ht { deny all; } location / { try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi.conf; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/..:/tmp/"; internal; } location ~ \.php$ { return 404; } }
Zum Abschluss noch mit „service nginx reload” die Nginx-Konfiguration für Kimai laden lassen und schon kann man – in meinem Fall – über kimai.newsportal.koeln die Benutzeroberfläche von Kimai abrufen.
In den wenigsten Fällen kann man eins-zu-eins einfach alles kopieren und ausführen beziehungsweise abspeichern. Achtet daher auf die kleinsten Details, da diese Anleitung sich ausschließlich auf das Newsportal Köln richtet. Eine Anpassung ist demnach logischerweise vonnöten, sowie einige Voraussetzung wie zum Beispiel der Nginx-Webserver oder PHP (7.4) FPM.