From 4d9d68c49da90b04dfe4004336c6d2cc944baf8b Mon Sep 17 00:00:00 2001 From: Stavros Date: Thu, 14 Dec 2023 18:51:03 +0200 Subject: [PATCH] feat(apps): add homepage (#1816) * feat(apps): add homepage * fix(homepage): fix data directory * fix(homepage): enable it to be exposable --- README.md | 1 + apps/homepage/config.json | 23 ++++++++++++++++ apps/homepage/docker-compose.yml | 38 ++++++++++++++++++++++++++ apps/homepage/metadata/description.md | 29 ++++++++++++++++++++ apps/homepage/metadata/logo.jpg | Bin 0 -> 10415 bytes 5 files changed, 91 insertions(+) create mode 100644 apps/homepage/config.json create mode 100644 apps/homepage/docker-compose.yml create mode 100644 apps/homepage/metadata/description.md create mode 100644 apps/homepage/metadata/logo.jpg diff --git a/README.md b/README.md index 082bb382..b13e355d 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Home Assistant](https://github.com/home-assistant/core) - Open source home automation that puts local control and privacy first - [HomeBox](https://github.com/hay-kot/homebox) - Homebox is the inventory and organization system built for the Home User - [Halo](https://github.com/halo-dev/halo) - Halo is a powerful and easy-to-use open source website building tool. +- [Homepage](https://github.com/gethomepage/homepage) - A modern, fully static, fast, secure fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. - [Immich](https://github.com/immich-app/immich) - Photo and video backup solution directly from your mobile phone - [IT-Tools](https://github.com/CorentinTh/it-tools) - Collection of handy online tools for developers, with great UX. - [Invidious](https://github.com/iv-org/invidious) - An alternative front-end to YouTube diff --git a/apps/homepage/config.json b/apps/homepage/config.json new file mode 100644 index 00000000..4f82a0bd --- /dev/null +++ b/apps/homepage/config.json @@ -0,0 +1,23 @@ +{ + "$schema": "../schema.json", + "name": "Homepage", + "available": true, + "exposable": true, + "port": 8756, + "tipi_version": 1, + "version": "v0.8.3", + "id": "homepage", + "categories": [ + "utilities" + ], + "description": "A modern, fully static, fast, secure fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages.", + "short_desc": "A highly customizable homepage", + "author": "gethomepage", + "source": "https://github.com/gethomepage/homepage", + "form_fields": [], + "supported_architectures": [ + "arm64", + "amd64" + ] + } + \ No newline at end of file diff --git a/apps/homepage/docker-compose.yml b/apps/homepage/docker-compose.yml new file mode 100644 index 00000000..057604dc --- /dev/null +++ b/apps/homepage/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.9" +services: + homepage: + image: ghcr.io/gethomepage/homepage:v0.8.3 + container_name: homepage + restart: unless-stopped + ports: + - ${APP_PORT}:3000 + volumes: + - ${APP_DATA_DIR}/data/:/app/config + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.homepage-web-redirect.redirectscheme.scheme: https + traefik.http.services.homepage.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.homepage-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.homepage-insecure.entrypoints: web + traefik.http.routers.homepage-insecure.service: homepage + traefik.http.routers.homepage-insecure.middlewares: homepage-web-redirect + # Websecure + traefik.http.routers.homepage.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.homepage.entrypoints: websecure + traefik.http.routers.homepage.service: homepage + traefik.http.routers.homepage.tls.certresolver: myresolver + # Local domain + traefik.http.routers.homepage-local-insecure.rule: Host(`homepage.${LOCAL_DOMAIN}`) + traefik.http.routers.homepage-local-insecure.entrypoints: web + traefik.http.routers.homepage-local-insecure.service: homepage + traefik.http.routers.homepage-local-insecure.middlewares: homepage-web-redirect + # Local domain secure + traefik.http.routers.homepage-local.rule: Host(`homepage.${LOCAL_DOMAIN}`) + traefik.http.routers.homepage-local.entrypoints: websecure + traefik.http.routers.homepage-local.service: homepage + traefik.http.routers.homepage-local.tls: true + \ No newline at end of file diff --git a/apps/homepage/metadata/description.md b/apps/homepage/metadata/description.md new file mode 100644 index 00000000..018bcdbf --- /dev/null +++ b/apps/homepage/metadata/description.md @@ -0,0 +1,29 @@ +# Features + +With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it. + +- **Fast** - The site is statically generated at build time for instant load times. +- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community. +- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6. +- **Full i18n** - Support for over 40 languages. +- **Service & Web Bookmarks** - Add custom links to the homepage. +- **Docker Integration** - Container status and stats. Automatic service discovery via labels. +- **Service Integration** - Over 100 service integrations, including popular starr and self-hosted apps. +- **Information & Utility Widgets** - Weather, time, date, search, and more. +- **And much more...** + +## Docker Integration + +Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker](https://gethomepage.dev/latest/installation/docker/) page for more information. + +## Service Widgets + +Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/latest/widgets/) page for more information. + +## Information Widgets + +Homepage has built-in support for a number of information providers, including weather, time, date, search, glances and more. System and status information presented at the top of the page. See the [Information Providers](https://gethomepage.dev/latest/widgets/) page for more information. + +## Customization + +Homepage is highly customizable, with support for custom themes, custom CSS & JS, custom layouts, formatting, localization and more. See the [Settings](https://gethomepage.dev/latest/configs/settings/) page for more information. \ No newline at end of file diff --git a/apps/homepage/metadata/logo.jpg b/apps/homepage/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..24aa6101d1f9c02a7c24ed4c759994f51f7b87f2 GIT binary patch literal 10415 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 N{e#zB4hZv~{R