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 00000000..e4d41290 Binary files /dev/null and b/apps/kimai/metadata/logo.jpg differ