From ed47ee4e114bde322a45ea6fe1305d1a1dbb1677 Mon Sep 17 00:00:00 2001 From: DrMxrcy <58747968+DrMxrcy@users.noreply.github.com> Date: Tue, 4 Apr 2023 02:29:05 -0400 Subject: [PATCH] Add Dash. (#300) * Add Dash. * Update logo.jpg --- README.md | 1 + apps/dashdot/config.json | 17 ++++++++++++++++ apps/dashdot/docker-compose.yml | 28 +++++++++++++++++++++++++++ apps/dashdot/metadata/description.md | 28 +++++++++++++++++++++++++++ apps/dashdot/metadata/logo.jpg | Bin 0 -> 11636 bytes 5 files changed, 74 insertions(+) create mode 100644 apps/dashdot/config.json create mode 100644 apps/dashdot/docker-compose.yml create mode 100644 apps/dashdot/metadata/description.md create mode 100644 apps/dashdot/metadata/logo.jpg diff --git a/README.md b/README.md index c0e4574a..c1f5ff1c 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Code-Server](https://github.com/coder/code-server) - Web VS Code - [Codex.Docs](https://github.com/codex-team/codex.docst) - Free Docs app powered by Editor.js ecosystem. - [DailyTXT](https://github.com/PhiTux/DailyTxT) - Encrypted Diary Web-App +- [Dash.](https://github.com/MauriceNino/dashdot) - A simple, modern server dashboard, primarily used by smaller private server - [Deluge](https://github.com/linuxserver/docker-deluge) - Deluge is a lightweight, Free Software, cross-platform BitTorrent client - [Deemix](https://gitlab.com/Bockiii/deemix-docker) - deemix is a barebone deezer downloader library built from the ashes of Deezloader Remix. - [DokuWiki](https://github.com/dokuwiki/dokuwiki) - DokuWiki is a simple to use and highly versatile Open Source wiki software diff --git a/apps/dashdot/config.json b/apps/dashdot/config.json new file mode 100644 index 00000000..a86ddc34 --- /dev/null +++ b/apps/dashdot/config.json @@ -0,0 +1,17 @@ +{ + "$schema": "../schema.json", + "name": "Dash.", + "port": 8173, + "available": true, + "exposable": true, + "id": "dashdot", + "tipi_version": 1, + "version": "v5.1.2", + "categories": ["utilities"], + "description": "dash. (or dashdot) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. It is intended to be used for smaller VPS and private servers.", + "short_desc": "A simple, modern server dashboard, primarily used by smaller private server", + "author": "MauriceNino", + "source": "https://github.com/MauriceNino/dashdot", + "website": "https://getdashdot.com/", + "form_fields": [] +} diff --git a/apps/dashdot/docker-compose.yml b/apps/dashdot/docker-compose.yml new file mode 100644 index 00000000..4b1ea0d2 --- /dev/null +++ b/apps/dashdot/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3.5' +services: + dashdot: + image: mauricenino/dashdot:5.1.2 + restart: unless-stopped + container_name: dashdot + privileged: true + ports: + - ${APP_PORT}:3001 + volumes: + - /:/mnt/host:ro + environment: + - DASHDOT_SHOW_HOST=false + - DASHDOT_SHOW_DASH_VERSION=true + - DASHDOT_ENABLE_CPU_TEMPS=true + - DASHDOT_USE_IMPERIAL=true + - DASHDOT_ALWAYS_SHOW_PERCENTAGES=true + - DASHDOT_PAGE_TITLE=dashdot + - DASHDOT_ACCEPT_OOKLA_EULA=true + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.dashdot.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.dashdot.entrypoints: websecure + traefik.http.routers.dashdot.service: dashdot + traefik.http.routers.dashdot.tls.certresolver: myresolver + traefik.http.services.dashdot.loadbalancer.server.port: 3001 diff --git a/apps/dashdot/metadata/description.md b/apps/dashdot/metadata/description.md new file mode 100644 index 00000000..e4af5614 --- /dev/null +++ b/apps/dashdot/metadata/description.md @@ -0,0 +1,28 @@ +# [![dash. - a modern server dashboard](https://github.com/MauriceNino/dashdot/raw/main/.github/images/banner_muted.png)](https://github.com/MauriceNino/dashdot/blob/main/.github/images/banner_muted.png) + +_Feel free to join the **[Discord](https://discord.gg/3teHFBNQ9W)** and **star the repo** if you like the project!_ + + + +**dash.** (or **dashdot**) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. It is intended to be used for smaller VPS and private servers. + + + +[Live Demo](https://dash.mauz.io) | [Docker Image](https://hub.docker.com/r/mauricenino/dashdot) + +**dash.** is a open-source project, so any contribution is highly appreciated. If you are interested in further developing this project, have a look at the [Contributing.md](https://github.com/MauriceNino/dashdot/blob/main/.github/CONTRIBUTING.md). + +In case you want to financially support this project, you can visit my [GitHub Sponsors](https://github.com/sponsors/MauriceNino), or my [Ko-Fi](https://ko-fi.com/mauricenino). + +## [](https://github.com/MauriceNino/dashdot#preview)Preview + +| Dark-Mode | Light-Mode | +| --- | --- | +| [![Screenshot of the dark-mode](https://github.com/MauriceNino/dashdot/raw/main/apps/docs/static/img/screenshot_darkmode.png)](https://github.com/MauriceNino/dashdot/blob/main/apps/docs/static/img/screenshot_darkmode.png) | [![Screenshot of the light-mode](https://github.com/MauriceNino/dashdot/raw/main/apps/docs/static/img/screenshot_lightmode.png)](https://github.com/MauriceNino/dashdot/blob/main/apps/docs/static/img/screenshot_lightmode.png) | + +## [](https://github.com/MauriceNino/dashdot#documentation)Documentation + +- [Installation Options](https://getdashdot.com/docs/install) +- [Configuration Options](https://getdashdot.com/docs/config) +- [Contributing](https://github.com/MauriceNino/dashdot/blob/main/.github/CONTRIBUTING.md) +- [Changelog](https://github.com/MauriceNino/dashdot/blob/main/.github/CHANGELOG.md) \ No newline at end of file diff --git a/apps/dashdot/metadata/logo.jpg b/apps/dashdot/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15d1df8e69c3777fae5f8e7cd6effb127a717ff9 GIT binary patch literal 11636 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 eEvpW>shrK>