From 02d762e0a6744d67d304867de4892030774d2aa9 Mon Sep 17 00:00:00 2001 From: DrMxrcy Date: Tue, 28 Feb 2023 03:46:07 -0500 Subject: [PATCH] Add Umami --- README.md | 1 + apps/umami/config.json | 29 ++++++++++++++++++++++++ apps/umami/docker-compose.yml | 34 +++++++++++++++++++++++++++++ apps/umami/metadata/description.md | 11 ++++++++++ apps/umami/metadata/logo.jpg | Bin 0 -> 22715 bytes 5 files changed, 75 insertions(+) create mode 100644 apps/umami/config.json create mode 100644 apps/umami/docker-compose.yml create mode 100644 apps/umami/metadata/description.md create mode 100644 apps/umami/metadata/logo.jpg diff --git a/README.md b/README.md index 91f89f1d..0f0d5886 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Teddit](https://codeberg.org/teddit/teddit) - Alternative Reddit front-end focused on privacy https://teddit.net - [Transmission](https://github.com/transmission/transmission) - Fast, easy, and free BitTorrent client - [Tube Archivist](https://github.com/tubearchivist/tubearchivist) - Your self-hosted YouTube media server +- [Umami](https://github.com/umami-software/umami) - Umami is a simple, fast, privacy-focused alternative to Google Analytics. - [Uptime Kuma](https://github.com/louislam/uptime-kuma) - A fancy self-hosted monitoring tool - [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Unofficial Bitwarden compatible server - [Vikunja](https://kolaente.dev/vikunja/) - The open-source, self-hostable to-do app. Organize everything, on all platforms. diff --git a/apps/umami/config.json b/apps/umami/config.json new file mode 100644 index 00000000..180c85f3 --- /dev/null +++ b/apps/umami/config.json @@ -0,0 +1,29 @@ +{ + "$schema": "../schema.json", + "name": "Umami", + "port": 8147, + "available": true, + "exposable": true, + "id": "umami", + "tipi_version": 1, + "version": "v1.40.0", + "categories": ["utilities"], + "description": "Umami is a simple, fast, privacy-focused alternative to Google Analytics.", + "short_desc": "Umami is a simple, fast, privacy-focused alternative to Google Analytics.", + "author": "https://github.com/umami-software", + "source": "https://github.com/umami-software/umami", + "form_fields": [ + { + "type": "random", + "label": "DB_PASSWORD", + "min": 32, + "env_variable": "DB_PASSWORD" + }, + { + "type": "random", + "label": "HASH_SALT", + "min": 32, + "env_variable": "HASH_SALT" + } + ] +} diff --git a/apps/umami/docker-compose.yml b/apps/umami/docker-compose.yml new file mode 100644 index 00000000..a95649a1 --- /dev/null +++ b/apps/umami/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3" + +services: + umami: + image: ghcr.io/umami-software/umami:postgresql-v1.40.0 + ports: + - "${APP_PORT}:3000" + environment: + DATABASE_URL: postgresql://umami:${DB_PASSWORD}@db:5432/umami + DATABASE_TYPE: postgresql + HASH_SALT: ${HASH_SALT} + depends_on: + - umami-db + restart: always + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.umami.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.umami.entrypoints: websecure + traefik.http.routers.umami.service: umami + traefik.http.routers.umami.tls.certresolver: myresolver + traefik.http.services.umami.loadbalancer.server.port: 3000 + umami-db: + image: postgres:12-alpine + environment: + POSTGRES_DB: umami + POSTGRES_USER: umami + POSTGRES_PASSWORD: ${DB_PASSWORD} + volumes: + - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data + restart: always + networks: + - tipi_main_network diff --git a/apps/umami/metadata/description.md b/apps/umami/metadata/description.md new file mode 100644 index 00000000..62a1ef03 --- /dev/null +++ b/apps/umami/metadata/description.md @@ -0,0 +1,11 @@ +# Defualt Login +### Username: admin +### Password: umami + +# umami + +Umami is a simple, fast, privacy-focused alternative to Google Analytics. + +## [](https://github.com/umami-software/umami/blob/master/README.md#getting-started)Getting started + +A detailed getting started guide can be found at [https://umami.is/docs/](https://umami.is/docs/) \ No newline at end of file diff --git a/apps/umami/metadata/logo.jpg b/apps/umami/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ee5f8ca7fa1d3f84a5f74c5aac681398fb24ca7 GIT binary patch literal 22715 zcmeFZcUV(f(>EMIQ9(h9Q~~L|g<{3_63#S8LBT>BqNNN{SHgAx05})`maYi^0B~myH;9V-10$&MgP*d0lBKo#lYjDm zaKz4WGzq}I0{~;Zf6)KmiEi1z+^w;LzF}W1Zdm15OypRe-0tr@$4}ns@4WO+-rM7e z2X>71Pu@)rqJZUXusny|FTB++y!8{epW~yjW2E6uoQ0VFqZ0k{A>91;L72@W0!&W}z21J>QR zxVU&fueg5@0pZPC*Kgol!^gwL4p6)c0N~@|;9kQL?hX7K*g-hBc-OAu-?({;gn*Qc zk(|abiAhjy;vNOF4keI9Lf-NzqJfG{$knY%1mgYt1+pGH3;8ee|3l4BDapUI{!=;& zxQ&N}M1n^GkOgGD{fGGf9e(ElqO3Xp;1NmEij&3NdE;T7u{5;+Q9lOJo+r~>_H-9p zilr~!<8gtgsj2g9&HC%t@RX!u_SCFHF2 zp>E;YFiM}Kccoj##M&~;i-$9{jsl4{1TzkQyC;qqM;xYnl?ye zJK}3t4^L|57}t?3bGTZk**Svh&g1P^>M8B{BK{oQu`>okpOy{F%`X&CwK7Bsk|Gxd zvmH%TnjVh_y`K13<#mKp8c@F^zFE^`o>)5PY3XL&2MN#a7@f^0fZCg3Qq`(ll{0l% zVyk!^MY7gx?RN1@n~Bp+qh@vWWrg}3N@1L8(6T5k+6sQ)`Dtt~L0yR7v8?mr$Je)? zHV*@xLK4%U(K4E%Xq0N$y_heqU`XVd26KH=!gT+9^HpFc-gNHtsqMqnD@ut(>HL|3 zVSL(!=!*TIrRuiJcJm*AtgU%`)vZ8(H%DEt;s7(Ss4ReptVl0Pma>WoN=?m>7+|si zJi3UAdgc@cIZ2SLu`hU&$lUbJ<84&_=%N1td(ld^sZEhgDXiC<%rp^sV3R*MX{v@{ z^@+>YA$c}qfZogU#O*e`MSYbtBE=gzj!fMy^lBJLxpTB#CmQv5D;Yj~gj7W3v{#)2 zX7N+^YBo%WU%qNRiOtgP^~0oy&hB4j2Pi5rSh;p7)>k4NwqWyvoc48%)6LY>DS-J{ zT7RvF%%@~_`Y{si#9B5-j-o>ppWigTd(6m_YSNmwcKprJl`Xs%f0n#N5xJ-fe=z6> zRu@B**7M~q2*2v}BpP^o6eyhySMq)i^GJc|#P^B_2QjFKI=O7JM5|s^EHMf3t^6kS z^J(zc=|(URM1!(H?6wv0%+gyo+uv#u>4CB^d`gz&q66s7 z?9a8Lw^ym7>|TZ7%nIm}>Mbc%7XVRbsl8+h}L8*%sYtFe_v-WxOxa+b-< zIu;pZw9{!)?(F0lHlz1F3%#m659#YLsn0hbq#>UKWo#3E9My~G+rnYU)INFLRJku_ z;CV=kWDDzNOB+-v9D70;1FgYX28z48^d9(PE@d|w&fX~Nz7h$%cG`URagL?4SrwX} z2dI%y<$iy0e`4aHr8VN?^vpxv3F_3uO^W~x>XeieqzT9`tCFbh7w25GKcK5G6I
  • r=A1 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 yd)LZL+)y=V?7KY&SQ)%158S@sES%ZaN literal 0 HcmV?d00001