From 756a752eeec97efbd02d9417650c85000de8a990 Mon Sep 17 00:00:00 2001 From: Tyler W <7053824+tylrw@users.noreply.github.com> Date: Tue, 24 Oct 2023 14:19:18 -0300 Subject: [PATCH] feat: add Kimai (#1390) * feat: add Kimai * fix: address code review comments * fix: adjust hardcoded app port --- README.md | 1 + apps/kimai/config.json | 45 +++++++++++++++ apps/kimai/docker-compose.yml | 86 +++++++++++++++++++++++++++++ apps/kimai/metadata/description.md | 8 +++ apps/kimai/metadata/logo.jpg | Bin 0 -> 42403 bytes 5 files changed, 140 insertions(+) create mode 100644 apps/kimai/config.json create mode 100644 apps/kimai/docker-compose.yml create mode 100644 apps/kimai/metadata/description.md create mode 100644 apps/kimai/metadata/logo.jpg diff --git a/README.md b/README.md index 37854fbb..e4608f20 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Kapowarr](https://github.com/Casvt/Kapowarr) - Kapowarr is a software to build and manage a comic book library, fitting in the \*arr suite of software. - [Kasm Workspaces](https://github.com/kasmtech) - Kasm Workspaces is a docker container streaming platform for delivering browser-based access to desktops, applications, and web services - [Kavita](https://github.com/Kareadita/Kavita) - Kavita is a fast, feature rich, cross platform reading server +- [Kimai](https://github.com/kimai/kimai) - Open source time-tracker - [Libreddit](https://github.com/spikecodes/libreddit) - Private front-end for Reddit - [LibrePhotos](https://github.com/LibrePhotos/librephotos) - Complete photo management service - [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) - Free and Open Source Machine Translation API. 100% self-hosted, offline capable and easy to setup diff --git a/apps/kimai/config.json b/apps/kimai/config.json new file mode 100644 index 00000000..a091ed33 --- /dev/null +++ b/apps/kimai/config.json @@ -0,0 +1,45 @@ +{ + "name": "Kimai", + "available": true, + "port": 8003, + "exposable": true, + "id": "kimai", + "description": "Kimai is a professional grade time-tracking application, free and open-source. It handles use-cases of freelancers as well as companies with dozens or hundreds of users.", + "tipi_version": 1, + "version": "fpm-2.1.0-prod", + "categories": ["utilities"], + "short_desc": "Open source time-tracker", + "author": "Kevin Papst", + "source": "https://github.com/kimai/kimai", + "website": "https://www.kimai.org", + "form_fields": [ + { + "type": "random", + "label": "KIMAI_DATABASE_ROOT_PASSWORD", + "min": 32, + "env_variable": "KIMAI_DATABASE_ROOT_PASSWORD" + }, + { + "type": "random", + "label": "KIMAI_DATABASE_PASSWORD", + "min": 32, + "env_variable": "KIMAI_DATABASE_PASSWORD" + }, + { + "type": "text", + "label": "Admin email", + "max": 254, + "min": 3, + "required": true, + "env_variable": "KIMAI_ADMINMAIL" + }, + { + "type": "password", + "label": "Admin password", + "max": 128, + "min": 10, + "required": true, + "env_variable": "KIMAI_ADMINPASS" + } + ] +} \ No newline at end of file diff --git a/apps/kimai/docker-compose.yml b/apps/kimai/docker-compose.yml new file mode 100644 index 00000000..3272c5d4 --- /dev/null +++ b/apps/kimai/docker-compose.yml @@ -0,0 +1,86 @@ +# Adapted from https://github.com/tobybatch/kimai2/blob/799a534b8d93d18a2d10573457936a31052ce8e0/compose/docker-compose.fpm.prod.yml + +version: "3.5" + +services: + nginx: + container_name: kimai-proxy + image: tobybatch/nginx-fpm-reverse-proxy:latest + ports: + - ${APP_PORT}:80 + volumes: + - ${APP_DATA_DIR}/data/public:/opt/kimai/public:ro + restart: unless-stopped + depends_on: + - kimai + healthcheck: + test: wget --spider http://kimai-proxy/health || exit 1 + interval: 20s + start_period: 10s + timeout: 10s + retries: 3 + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.kimai-proxy-web-redirect.redirectscheme.scheme: https + traefik.http.services.kimai-proxy.loadbalancer.server.port: 80 + # Web + traefik.http.routers.kimai-proxy-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kimai-proxy-insecure.entrypoints: web + traefik.http.routers.kimai-proxy-insecure.service: kimai-proxy + traefik.http.routers.kimai-proxy-insecure.middlewares: kimai-proxy-web-redirect + # Websecure + traefik.http.routers.kimai-proxy.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.kimai-proxy.entrypoints: websecure + traefik.http.routers.kimai-proxy.service: kimai-proxy + traefik.http.routers.kimai-proxy.tls.certresolver: myresolver + # Local domain + traefik.http.routers.kimai-proxy-local-insecure.rule: Host(`kimai.${LOCAL_DOMAIN}`) + traefik.http.routers.kimai-proxy-local-insecure.entrypoints: web + traefik.http.routers.kimai-proxy-local-insecure.service: kimai-proxy + traefik.http.routers.kimai-proxy-local-insecure.middlewares: kimai-proxy-web-redirect + # Local domain secure + traefik.http.routers.kimai-proxy-local.rule: Host(`kimai-proxy.${LOCAL_DOMAIN}`) + traefik.http.routers.kimai-proxy-local.entrypoints: websecure + traefik.http.routers.kimai-proxy-local.service: kimai-proxy + traefik.http.routers.kimai-proxy-local.tls: true + + kimai: + container_name: kimai + image: kimai/kimai2:fpm-2.1.0-prod + environment: + - ADMINMAIL=${KIMAI_ADMINMAIL} + - ADMINPASS=${KIMAI_ADMINPASS} + - "DATABASE_URL=mysql://kimai:${KIMAI_DATABASE_PASSWORD}@kimai-sqldb/kimai?charset=utf8&serverVersion=5.7" + - TRUSTED_HOSTS=kimai-proxy,localhost,127.0.0.1 + volumes: + - ${APP_DATA_DIR}/data/public:/opt/kimai/public + - ${APP_DATA_DIR}/data/var:/opt/kimai/var + # - ./ldap.conf:/etc/openldap/ldap.conf:z + # - ./ROOT-CA.pem:/etc/ssl/certs/ROOT-CA.pem:z + restart: unless-stopped + networks: + - tipi_main_network + + sqldb: + container_name: kimai-sqldb + image: mysql:5.7 + environment: + - MYSQL_DATABASE=kimai + - MYSQL_USER=kimai + - MYSQL_PASSWORD=${KIMAI_DATABASE_PASSWORD} + - MYSQL_ROOT_PASSWORD=${KIMAI_DATABASE_ROOT_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/mysql:/var/lib/mysql + 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: + - tipi_main_network diff --git a/apps/kimai/metadata/description.md b/apps/kimai/metadata/description.md new file mode 100644 index 00000000..f5a9cf7c --- /dev/null +++ b/apps/kimai/metadata/description.md @@ -0,0 +1,8 @@ +

+ Kimai logo +

+ +Kimai is a professional grade time-tracking application, free and open-source. It handles use-cases of freelancers as well as companies with dozens or hundreds of users. Kimai was build to track your project times and ships with many advanced features, including but not limited to: + +JSON API, invoicing, data exports, multi-timer and punch-in punch-out mode, tagging, multi-user - multi-timezones - multi-language ([over 30 translations existing](https://hosted.weblate.org/projects/kimai/)!), authentication via SAML/LDAP/Database, two-factor authentication (2FA) with TOTP, customizable role and team permissions, responsive design, user/customer/project specific rates, advanced search & filtering, money and time budgets, advanced reporting, support for [plugins](https://www.kimai.org/store/) and so much more. + diff --git a/apps/kimai/metadata/logo.jpg b/apps/kimai/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4d41290c4c822a7aaee133dfc433a6bbd4c76ef GIT binary patch literal 42403 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