Published on

Kimai mit Docker und Traefik installieren

Authors
  • avatar
    Name
    Tobias Steltner
    Twitter

Intro

Kimai ist eine webbasierte Anwendung zur Zeiterfassung, die sich für eine Nutzung durch mehrere Benutzer eignet. Sie kann von Freiberuflern, Unternehmen und Organisationen eingesetzt werden. Mit Kimai ist es möglich, Zeiten zu erfassen, Berichte zu erstellen, Rechnungen zu generieren und weitere Funktionen zu nutzen.

1. Grundvoraussetzung

  • Docker & Docker Compose v2 (Debian / Ubuntu)
  • TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN

2. Ordner anlegen

Zuerst legen wir uns passende Ordner-Strukturen an.

mkdir -p /opt/containers/kimai

3. Compose Datei anlegen

Erstellen die Compose-Datei:


nano /opt/containers/kimai/compose.yml

3.1 Compose.yaml

version: '3'

services:

  sqldb:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=kimai
      - MYSQL_USER=kimaiuser
      - MYSQL_PASSWORD=kimaipassword
      - MYSQL_ROOT_PASSWORD=sicheresPassword
    command: --default-storage-engine innodb
    restart: unless-stopped
    healthcheck:
      test: mysqladmin -p$$MYSQL_ROOT_PASSWORD ping -h localhost
      interval: 20s
      start_period: 10s
      timeout: 10s
      retries: 3
    networks:
      - default

  kimai:
    image: kimai/kimai2:apache
    volumes:
      - ./data:/opt/kimai/var/data
    environment:
      - ADMINMAIL=deine@email.de
      - ADMINPASS=sicheresPassword
      - DATABASE_URL=mysql://kimaiuser:kimaipassword@sqldb/kimai
      - TRUSTED_HOSTS=traefik,nginx,localhost,127.0.0.1,kimai,kimai.deinedomain.de
      - APP_ENV=prod
    restart: unless-stopped
    networks:
      - default
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.kimai.entrypoints=websecure"
      - "traefik.http.routers.kimai.rule=Host(`kimai.deinedomain.de`)"
      - "traefik.http.routers.kimai.middlewares=default@file"
      - "traefik.http.routers.kimai.tls=true"
      - "traefik.http.routers.kimai.tls.certresolver=http_resolver"
      - "traefik.http.routers.kimai.service=kimai"
      - "traefik.http.services.kimai.loadbalancer.server.port=8001"
      - "traefik.docker.network=proxy"

networks:
  proxy:
    external: true

volumes:
  data:
  mysql:

Noch anzupassen:

MYSQL_PASSWORD=kimaipassword

MYSQL_ROOT_PASSWORD=sicheresPassword

ADMINMAIL=deine@email.de

ADMINPASS=sicheresPassword

DATABASE_URL= mysql://kimaiuser:kimaipassword@sqldb/kimai (selbes Passwort wie oben)

TRUSTED_HOSTS=kimai.deinedomain.de

Eure Traefik URL: Host(kimai.deinedomain.de)


4. Kimai starten

Nun starten wir den Container mittels folgendem Befehl:

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

Sobald der Container ausgerollt ist, könnt ihr nun eure Domain aufrufen. Beim ersten Start braucht der Container ca. 1 Minute.

Melde dich mit deiner Emailadresse und Passwort an und schon kannst du Kimai nutzen.

Für Produktionszwecke würde ich die stark empfehlen, die Dokumentation zu lesen. Es lässt sich auch super als PWA auf dem Smartphone nutzen.

Die angebotenen Apps sowohl für Android oder iOS fand ich persönlich jetzt nicht so brauchbar.

Quelle:

https://www.kimai.org/documentation