feat: add Kimai (#1390)

* feat: add Kimai

* fix: address code review comments

* fix: adjust hardcoded app port
This commit is contained in:
Tyler W 2023-10-24 14:19:18 -03:00 committed by GitHub
parent 9512252fb7
commit 756a752eee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 140 additions and 0 deletions

View File

@ -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

45
apps/kimai/config.json Normal file
View File

@ -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"
}
]
}

View File

@ -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

View File

@ -0,0 +1,8 @@
<p align="center">
<img src="https://raw.githubusercontent.com/kimai/images/ceed673becba2526f1055552ca7c255374ca5bf8/repository-header.png" alt="Kimai logo">
</p>
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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB