diff --git a/.editorconfig b/.editorconfig index 9fb14436da..8c52ff9378 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,24 +1,12 @@ root = true -# Basics - All Files [*] -end_of_line = lf charset = utf-8 -insert_final_newline = true - -# JS, TS and Vue -[*.{js,jsx,ts,tsx,vue}] +end_of_line = lf indent_style = space indent_size = 2 -trim_trailing_whitespace = true insert_final_newline = true +trim_trailing_whitespace = true -# YAML, for config file -[*.{yml,yaml}] -indent_size = 2 - -# Markdown for docs [*.md] trim_trailing_whitespace = false - -# Licensed under MIT, (C) 2024 Alicia Sykes \ No newline at end of file diff --git a/README.md b/README.md index 9412040fd7..6bfe18f954 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,41 @@

Dashy

- Dashy helps you organize your self-hosted services by making them accessible from a single place + The most customizable dashboard for self-hosters
+ Dashy is the homepage for your homelab

User Showcase | Live Demo | Getting Started | Documentation | GitHub

---- - -

-Dashy is kindly sponsored by SSD Nodes - Affordable VPS hosting for self-hosters
- - SSD Nodes - -

- -

-
-Dashy is kindly sponsored by Umbrel - the personal home cloud and OS for self-hosting
- - - -

- -

-Dashy is kindly sponsored by TestMu AI - The worldโ€™s first full-stack Agentic AI Quality Engineering platform
- - LambdaTest - -

+

Kindly sponsored by

+ + + + + + + +
+ + SSD Nodes
+ SSD Nodes +

+ Affordable VPS hosting for self-hosters +
+ + Umbrel
+ Umbrel +

+ Personal home cloud and OS for self-hosting +
+ + TestMu AI
+ TestMu AI +

+ Full-stack Agentic AI Quality Engineering platform +
Table of Contents @@ -60,7 +65,6 @@ - [๐Ÿ’– Supporting Dashy](#supporting-dashy-) - [๐Ÿ† Credits](#credits-) - [๐Ÿงฑ Developing](#developing-) - - [๐Ÿ—ž๏ธ Release Schedule](#release-schedule-) - [๐Ÿ“˜ Documentation](#documentation-) - [๐Ÿ›ฃ๏ธ Roadmap](#roadmap-) - [๐Ÿ™Œ Alternatives](#alternatives-) @@ -96,11 +100,11 @@ ## Demo โšก -**Live Instances**: [Demo 1](https://demo.dashy.to) (Live Demo) โ”† [Demo 2](https://live.dashy.to) (Dashy Links) โ”† [Demo 3](https://dev.dashy.to) (Dev Preview) +**Live Instances**: [Demo](https://demo.dashy.to) (Live Demo) โ”† [Dev Preview](https://dev.dashy.to) (Dev Preview) **Screenshots**: Checkout the [Showcase](./docs/showcase.md), to see example dashboards from the community -**Spin up your own demo**: [![One-Click Deploy with PWD](https://img.shields.io/badge/Play--with--Docker-Deploy-2496ed?style=flat-square&logo=docker)](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml) or [`docker run -p 8080:8080 lissy93/dashy`](./docs/quick-start.md) +**Try it yourself**: [`docker run -p 8080:8080 lissy93/dashy`](./docs/quick-start.md)

@@ -120,13 +124,13 @@ You will need [Docker](https://docs.docker.com/get-docker/) installed on your system -``` -docker run -p 8080:8080 lissy93/dashy +```bash +docker run -p 4000:8080 lissy93/dashy ``` Or -```docker +```bash docker run -d \ -p 4000:8080 \ -v /path/to/your/user-data:/app/user-data \ @@ -135,13 +139,13 @@ docker run -d \ lissy93/dashy:latest ``` -[![Dashy on Docker Hub](https://dockeri.co/image/lissy93/dashy)](https://hub.docker.com/r/lissy93/dashy) +To use with compose, see our sample [`docker-compose.yml`](https://github.com/lissy93/dashy/blob/master/docker-compose.yml). The mounted `/app/user-data` directory **must** contain at least a `conf.yml`. It can also hold sub-config files, item icons, fonts, custom CSS, or anything else you want served from the web root. -Dashy is also available via GHCR (`ghcr.io/lissy93/dashy`). -To use with compose, see our sample [`docker-compose.yml`](https://github.com/lissy93/dashy/blob/master/docker-compose.yml). +Dashy is distributed both on [DockerHub](https://hub.docker.com/r/lissy93/dashy) (`lissy93/dashy`) and [GHCR](https://github.com/lissy93/dashy/pkgs/container/dashy) (`ghcr.io/lissy93/dashy`). + You can either use `:latest` or pin to specific versions (like `4.0.0`). All images are multi-arch (works on amd64, arm64, and arm/v7). @@ -149,7 +153,7 @@ All images are multi-arch (works on amd64, arm64, and arm/v7). ### Deploying from Source ๐Ÿ”จ -You will need [git](https://git-scm.com/downloads), the latest or LTS version of [Node.js](https://nodejs.org/) and _(optionally)_ [Yarn](https://yarnpkg.com/) installed on your system. +You'll need Node (20+) installed, as well as git and `yarn` enabled. - Clone the Repo: `git clone https://github.com/Lissy93/dashy.git` and `cd dashy` - Configuration: Fill in your settings in `./user-data/conf.yml` @@ -157,15 +161,14 @@ You will need [git](https://git-scm.com/downloads), the latest or LTS version of - Build: `yarn build` - Run: `yarn start` -> See docs: [Full list of Dashy's commands](./docs/management.md#basic-commands) +> See docs: [Full list of Dashy's commands](./docs/management.md#running-commands) ### Deploy to the Cloud โ˜๏ธ Dashy supports **1-Click deployments** on several popular cloud platforms. To spin up a new instance, just click a link below: - [ Deploy to Netlify](https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy) -- [ Deploy to Heroku](https://heroku.com/deploy?template=https://github.com/Lissy93/dashy) - [ Deploy to Vercel](https://vercel.com/new/project?template=https://github.com/lissy93/dashy) -- [ Deploy to Render](https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render) +- [ Deploy to Render](https://render.com/deploy?repo=https://github.com/lissy93/dashy) - [ Deploy to Railway](https://railway.app/template/MtdjAQ?referralCode=app) - [ Deploy to GCP](https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git) - [ Deploy to PWD](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml) @@ -230,7 +233,7 @@ The following icon types are supported: [simple-icons]: https://simpleicons.org/ [material icons]: https://github.com/Templarian/MaterialDesign [selfh.st/icons]: https://selfh.st/icons -[dashboard-icons]: https://github.com/WalkxCode/dashboard-icons +[dashboard-icons]: https://github.com/homarr-labs/dashboard-icons

@@ -324,7 +327,7 @@ You can change the view from the UI, using the switch icon in the top-right corn > For full documentation on views and opening methods, see: [**Alternate Views**](./docs/alternate-views.md) -There are several different ways you can launch apps. You can specify the default opening method for any given item under the `target` attribute or set a site-wide default under `appConfig.defaultOpeningMethod`. Right-click on an item to item for all options. The following options are supported: +There are several different ways you can launch apps. You can specify the default opening method for any given item under the `target` attribute or set a site-wide default under `appConfig.defaultOpeningMethod`. Right-click on an item for all options. The following options are supported: - `sametab` - The app will be launched in the current tab - `newtab` - The app will be launched in a new tab (or use Ctrl + Click) - `modal` - Launch app in a resizable/ movable popup modal on the current page (or use Alt + Click) @@ -424,7 +427,7 @@ Dashy supports multiple languages and locales. When available, your language sho - ๐Ÿ‡ฆ๐Ÿ‡ช **Arabic**: `ar` - Contributed by **[@kayedspace](https://github.com/kayedspace)** - ๐Ÿ‡ง๐Ÿ‡ฉ **Bengali**: `bn` - Contributed by **[@soaibsafi](https://github.com/soaibsafi)** - ๐Ÿ‡ง๐Ÿ‡ฌ **Bulgarian**: `bg` - Contributed by **[@asenov](https://github.com/asenov)** -- ๐Ÿ‡จ๐Ÿ‡ณ **Chinese**: `cn` - Contributed by **[@FormatToday](https://github.com/FormatToday)** +- ๐Ÿ‡จ๐Ÿ‡ณ **Chinese**: `zh-CN` - Contributed by **[@FormatToday](https://github.com/FormatToday)** - ๐Ÿ‡จ๐Ÿ‡ฟ **Czech**: `cs` - Contributed by **[@Tuzi555](https://github.com/Tuzi555)** - ๐Ÿ‡ฉ๐Ÿ‡ฐ **Danish**: `da` - Contributed by **[@lordpansar](https://github.com/lordpansar)** - ๐Ÿ‡ณ๐Ÿ‡ฑ **Dutch**: `nl` - Contributed by **[@evroon](https://github.com/evroon)** @@ -440,11 +443,11 @@ Dashy supports multiple languages and locales. When available, your language sho - ๐Ÿ‡ณ๐Ÿ‡ด **Norwegian Bokmรฅl**: `nb` - Contributed by **[@rubjo](https://github.com/rubjo)** - ๐Ÿ‡ต๐Ÿ‡ฑ **Polish**: `pl` - Contributed by **[@skaarj1989](https://github.com/skaarj1989)** - ๐Ÿ‡ต๐Ÿ‡น **Portuguese**: `pt` - Contributed by **[@LeoColman](https://github.com/LeoColman)** +- ๐Ÿ‡ท๐Ÿ‡ด **Romanian**: `ro` - Contributed by **[@z3r0l1nk](https://github.com/z3r0l1nk)** - ๐Ÿ›ฐ๏ธ **Galician**: `gl` - Contributed by **[@pvillaverde](https://github.com/pvillaverde)** -- ๐Ÿ‡ท๐Ÿ‡บ **Russian**: `ru` -Contributed by **[@sasetz](https://github.com/sasetz)** +- ๐Ÿ‡ท๐Ÿ‡บ **Russian**: `ru` - Contributed by **[@sasetz](https://github.com/sasetz)** - ๐Ÿ‡ธ๐Ÿ‡ฐ **Slovak**: `sk` - Contributed by **[@Smexhy](https://github.com/Smexhy)** - ๐Ÿ‡ธ๐Ÿ‡ฎ **Slovenian**: `sl` - Contributed by **[@UrekD](https://github.com/UrekD)** -- ๐Ÿ‡ฐ๐Ÿ‡ฌ **Kyrgyz**: `ky` - Contributed by **[@noblepower1337](https://github.com/noblepower1337)** - ๐Ÿ‡ช๐Ÿ‡ธ **Spanish**: `es` - Contributed by **[@lu4t](https://github.com/lu4t)** - ๐Ÿ‡ธ๐Ÿ‡ช **Swedish**: `sv` - Contributed by **[@BOZG](https://github.com/BOZG)** - ๐Ÿ‡น๐Ÿ‡ผ **Traditional Chinese**: `zh-TW` - Contributed by **[@stanly0726](https://github.com/stanly0726)** @@ -489,20 +492,15 @@ pages: ## System Requirements ๐Ÿ“Š -If running on bare metal, Dashy requires [Node](https://nodejs.org/en/) V 18.0.0 or later, LTS (20.x) is recommended. +If running on bare metal, Dashy requires [Node](https://nodejs.org/en/) V 20.0.0 or later, LTS (22.x) is recommended. -If running in Docker container, the recommended base image is Alpine (3.19) +If running in Docker container, the recommended base image is Alpine (3.21) The hardware requirements vary depending on where and how you are running Dashy. Generally speaking, on a bare-metal system or Docker container, 1GB of memory should be more than enough, and depending on whether you are using your own assets, then 1GB of disk space should be sufficient. If you are using one of the 1-click cloud deployment methods, serving the app through a CDN or using a static hosting provider, then there are no specific requirements, as the built app is just a series of static JS files, and so is very light-weight. -Dashy also wells run on low-powered ARM-based single board computers, such as a Raspberry Pi (tested on Pi 3) - -**Browser Support** -![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![IE](https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png) ---- | --- | --- | --- | --- | -Latest โœ” | Latest โœ” | 10+ โœ” | Latest โœ” | 6.1+ โŒ | +Dashy also runs well on low-powered ARM-based single board computers, such as a Raspberry Pi (tested on Pi 3) **[โฌ†๏ธ Back to Top](#dashy)** @@ -565,7 +563,7 @@ Huge thanks to the sponsors helping to support Dashy's development! > For full development documentation, see: [**Developing**](./docs/developing.md) -[![Open Project in VS Code](https://img.shields.io/badge/Open_in-VS_Code-863cfc?style=flat-square&logo=visualstudiocode)](https://open.vscode.dev/Lissy93/Dashy) +[![Open Project in VS Code](https://img.shields.io/badge/Open_in-VS_Code-863cfc?style=flat-square&logo=visualstudiocode)](https://vscode.dev/github/Lissy93/Dashy) [![Open in GitPod](https://img.shields.io/badge/Open_in-GitPod-ffae33?style=flat-square&logo=gitpod)](https://gitpod.io/#github.com/lissy93/dashy.git) [![Open in GitHub Code Spaces](https://img.shields.io/badge/Open_in-Code%20Spaces-131313?style=flat-square&logo=github)](https://github.dev/Lissy93/dashy) @@ -658,7 +656,7 @@ A few self-hosted web apps serve a similar purpose to Dashy. If you're looking f Dashy is Licensed under [MIT X11](https://en.wikipedia.org/wiki/MIT_License) ``` -Copyright ยฉ 2021-2024 Alicia Sykes +Copyright ยฉ Alicia Sykes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -695,7 +693,7 @@ For more info, see TLDR Legal's [Explanation of MIT](https://tldrlegal.com/licen

- ยฉ Alicia Sykes 2024
+ ยฉ Alicia Sykes 2019 - 2026
Licensed under MIT

Thanks for visiting :) diff --git a/docs/authentication/authelia-oidc.md b/docs/authentication/authelia-oidc.md index 5cce307927..5cfa67459f 100644 --- a/docs/authentication/authelia-oidc.md +++ b/docs/authentication/authelia-oidc.md @@ -1,4 +1,4 @@ -# Authelia Authentication for Dashy +# Authelia OIDC Dashy supports using [Authelia](https://www.authelia.com/) as its OIDC provider. diff --git a/docs/authentication/authentik.md b/docs/authentication/authentik.md index 8d5cdaf4c8..d9d1111c9e 100644 --- a/docs/authentication/authentik.md +++ b/docs/authentication/authentik.md @@ -1,4 +1,4 @@ -# Authentik Authentication for Dashy +# Authentik OIDC Dashy supports using [Authentik](https://goauthentik.io/) as its OIDC provider. diff --git a/docs/authentication/cloudflare-tunnel.md b/docs/authentication/cloudflare-tunnel.md index 3a5986e99e..db79962cce 100644 --- a/docs/authentication/cloudflare-tunnel.md +++ b/docs/authentication/cloudflare-tunnel.md @@ -1,4 +1,4 @@ -# Cloudflare Tunnel + Access for Dashy +# Cloudflare Tunnel Dashy works well behind [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) with [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/policies/access/) doing auth at the edge. This is one of the most common ways to expose a homelab dashboard to the public internet without opening any inbound ports, without managing TLS, and without standing up your own identity provider. diff --git a/docs/authentication/keycloak.md b/docs/authentication/keycloak.md index 30bc0e240f..9a38722afe 100644 --- a/docs/authentication/keycloak.md +++ b/docs/authentication/keycloak.md @@ -1,4 +1,4 @@ -# Keycloak Authentication for Dashy +# Keycloak Dashy supports using a [Keycloak](https://www.keycloak.org/) (V17+) authentication server. diff --git a/docs/authentication/pocketid.md b/docs/authentication/pocketid.md index 7195043383..0ef9c828e6 100644 --- a/docs/authentication/pocketid.md +++ b/docs/authentication/pocketid.md @@ -1,4 +1,4 @@ -# Pocket ID Authentication for Dashy +# Pocket ID OIDC Dashy supports using [Pocket ID](https://pocket-id.org/) as its OIDC provider. diff --git a/docs/authentication/tailscale.md b/docs/authentication/tailscale.md index 772e95d198..8420e34011 100644 --- a/docs/authentication/tailscale.md +++ b/docs/authentication/tailscale.md @@ -1,4 +1,4 @@ -# Tailscale (and Headscale) for Dashy +# Tailscale [Tailscale](https://tailscale.com/) is a popular way to put Dashy on a private network you can reach from your phone, laptop, or any other device you've added to your tailnet, without exposing it to the public internet. With Tailscale Serve in front, requests reaching Dashy already carry the user's identity in HTTP headers, which plugs straight into Dashy's header auth for auto-login. diff --git a/docs/authentication/zitadel.md b/docs/authentication/zitadel.md index 061b146a83..bc12e697b4 100644 --- a/docs/authentication/zitadel.md +++ b/docs/authentication/zitadel.md @@ -1,4 +1,4 @@ -# Zitadel Authentication for Dashy +# Zitadel OIDC Dashy supports using [Zitadel](https://zitadel.com/) as its OIDC provider. @@ -109,7 +109,7 @@ First boot runs the database migrations and creates the org, admin user, and a m ## 2. Configure Zitadel -Steps below are the manual UI walkthrough. There's also a Management API for scripted setup; an example bootstrap script is at [`alicia-notes/zitadel/configure.sh`](https://github.com/lissy93/dashy/blob/4.1.5/alicia-notes/zitadel/configure.sh) in the source repo. +Steps below are the manual UI walkthrough. Zitadel also has a Management API if you'd rather script the setup. ### Create the project diff --git a/docs/credits.md b/docs/credits.md index ae2712b640..cf9aa8dcec 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -23,12 +23,11 @@ This app definitely wouldn't have been quite so possible without the making use ### Core -At it's core, the application uses [**Vue.js**](https://github.com/vuejs/vue), as well as it's services with [**VueX**](https://vuex.vuejs.org/) for state management. Styling is done with [**SCSS**](https://github.com/sass/sass), JavaScript is currently [**Babel**](https://github.com/babel/babel), (but I am in the process of converting to [**TypeScript**](https://github.com/Microsoft/TypeScript)). Linting is done with [**ESLint**](https://github.com/eslint/eslint) and [**Prettier**](https://prettier.io/), both following the [**AirBnB Styleguide**](https://github.com/airbnb/javascript). The config is defined in [**YAML**](https://github.com/yaml/yaml), with a simple [**Node.js**](https://github.com/nodejs/node) server to serve up the static app and the optional API endpoints, and container deployment is done with [**Docker**](https://www.docker.com/). +At it's core, the application uses [**Vue.js**](https://github.com/vuejs/core), as well as it's services with [**VueX**](https://vuex.vuejs.org/) for state management. Styling is done with [**SCSS**](https://github.com/sass/sass), the app is written in [**TypeScript**](https://github.com/Microsoft/TypeScript) and JavaScript, and bundled with [**Vite**](https://github.com/vitejs/vite). Linting is done with [**ESLint**](https://github.com/eslint/eslint) and [**Prettier**](https://prettier.io/), both following the [**AirBnB Styleguide**](https://github.com/airbnb/javascript). The config is defined in [**YAML**](https://github.com/yaml/yaml), with a simple [**Node.js**](https://github.com/nodejs/node) server to serve up the static app and the optional API endpoints, and container deployment is done with [**Docker**](https://www.docker.com/). ### Utilities - [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT` -- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT` - [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT` - [`i18n`](https://github.com/kazupon/vue-i18n) - Internationalization plugin by @kazupon and community `MIT` - [`frappe-charts`](https://github.com/frappe/charts) - Lightweight charting library by @frappe `MIT` @@ -36,12 +35,6 @@ At it's core, the application uses [**Vue.js**](https://github.com/vuejs/vue), a ### Frontend Components - [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT` -- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT` -- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT` -- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT` -- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` - - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` -- [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT` --- diff --git a/docs/deployment.md b/docs/deployment.md index a9cf29d52d..b15c059713 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -23,17 +23,27 @@ Once you've got Dashy up and running, you'll want to configure it with your own - [Using Docker Compose](#using-docker-compose) - [Podman](#podman) - [Portainer](#portainer) + - [Coolify](#coolify) + - [1Panel](#1panel) - [Kubernetes](#kubernetes) - [Unraid](#unraid) + - [Proxmox VE](#proxmox-ve) + - [TrueNAS SCALE](#truenas-scale) - [Home Server Platforms](#home-server-platforms) - [Synology NAS](#synology-nas) + - [Saltbox](#saltbox) - [Build from Source](#build-from-source) + - [Nix / NixOS](#nix--nixos) - [Deploy to Cloud Service](#deploy-to-cloud-service) - [Netlify](#netlify) - [Vercel](#vercel) + - [Render](#render) + - [Railway](#railway) + - [Google Cloud Run](#google-cloud-run) - [Easypanel](#easypanel) - [EdgeOne Pages](#edgeone-pages) - [Play-with-Docker](#play-with-docker) + - [Managed Hosting](#managed-hosting) - [Hosting with CDN](#hosting-with-cdn) - [Requirements](#requirements) - [System Requirements](#system-requirements) @@ -48,17 +58,17 @@ Once you've got Dashy up and running, you'll want to configure it with your own **Container Info**: [ ![Docker Supported Architecture](https://img.shields.io/badge/Architectures-amd64%20|%20arm32v7%20|%20arm64v8-6ba6e5) -![Docker Base Image](https://img.shields.io/badge/Base_Image-Alpine_3.19-6ba6e5) +![Docker Base Image](https://img.shields.io/badge/Base_Image-node%3A22--alpine-6ba6e5) ![Docker Hosted on](https://img.shields.io/badge/Hosted_on-DockerHub%20%26%20GHCR-6ba6e5) ](https://hub.docker.com/r/lissy93/dashy)
**Status**: -![Build Status](https://img.shields.io/github/actions/workflow/status/Lissy93/dashy/docker-build-publish.yml?label=Build&color=f4a966) +![Build Status](https://img.shields.io/github/actions/workflow/status/Lissy93/dashy/docker.yml?label=Build&color=f4a966) ![Docker Pulls](https://img.shields.io/docker/pulls/lissy93/dashy?color=ecb2f7) ![Docker Stars](https://img.shields.io/docker/stars/lissy93/dashy?color=f7f754&label=Docker%20Stars) ![Docker Image Size](https://img.shields.io/docker/image-size/lissy93/dashy/latest?color=1eea76) ![Docker Latest Version](https://img.shields.io/docker/v/lissy93/dashy/latest?color=a8d8ea&label=Latest%20Version) -Dashy has a built container image hosted on [Docker Hub](https://hub.docker.com/r/lissy93/dashy). You will need [Docker](https://docs.docker.com/get-docker/) installed on your system. +Dashy has a prebuilt container image hosted on [Docker Hub](https://hub.docker.com/r/lissy93/dashy). You will need [Docker](https://docs.docker.com/get-docker/) installed on your system. ```bash docker run -d \ @@ -79,7 +89,7 @@ Explanation of the above options: - `--restart=always` Spin up the container when the daemon starts, or after it has been stopped - `lissy93/dashy:latest` The image to run. Replace `:latest` with a specific version from the [tags](https://hub.docker.com/r/lissy93/dashy/tags) if needed -For all available options, and to learn more, see the [Docker Run Docs](https://docs.docker.com/engine/reference/commandline/run/) +For all available options, and to learn more, see the [Docker Run Docs](https://docs.docker.com/reference/cli/docker/container/run/) Dashy is also available through GHCR: `docker pull ghcr.io/lissy93/dashy:latest` @@ -158,9 +168,24 @@ Alternatively, go to Containers > Add container and use the image `lissy93/dashy --- +## Coolify + +[Coolify](https://coolify.io/) is a self-hostable PaaS (a Heroku/Netlify alternative). Dashy is available as a one-click service template: under **+ New Resource** > **Service**, search "Dashy" and deploy. It runs the full Docker image, so all features work. ([template source](https://github.com/coollabsio/coolify/blob/v4.x/templates/compose/dashy.yaml)) + +--- + +## 1Panel + +[1Panel](https://1panel.pro/) is a web-based Linux server management panel. Dashy is in its official App Store: open **App Store**, search "Dashy", click **Install**, and set the port. ([app page](https://1panel.pro/apps/dashy)) + +--- + ## Kubernetes -@vyrtualsynthese has written a Helm Chart for deploying with Kubernetes, available [here](https://github.com/vyrtualsynthese/selfhosted-helmcharts/tree/main/charts/dashy) +@vyrtualsynthese has written a Helm Chart for deploying with Kubernetes, available [here](https://github.com/vyrtualsynthese/selfhosted-helmcharts/tree/main/charts/dashy). + +> [!NOTE] +> This is a community chart and may lag behind the latest Dashy release โ€” check the image tag before deploying. --- @@ -172,14 +197,34 @@ If you'd prefer to set it up manually, go to Docker > Add Container and use `lis --- +## Proxmox VE + +The community-maintained [Proxmox VE Helper-Scripts](https://community-scripts.github.io/ProxmoxVE/) project has a script that spins up Dashy in its own LXC container. Run this in the Proxmox host shell: + +```bash +bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/dashy.sh)" +``` + +See the [script page](https://community-scripts.github.io/ProxmoxVE/scripts?id=dashy) for options. These scripts are community-run (not affiliated with Proxmox or Dashy), so give it a read before running. + +--- + +## TrueNAS SCALE + +Dashy is in the TrueNAS community apps catalog. Go to **Apps** > **Discover Apps**, search "Dashy", click **Install**, then set the web port and a host-path storage volume for `/app/user-data`. ([catalog entry](https://apps.truenas.com/catalog/dashy/)) + +Older setups may instead find Dashy via [TrueCharts](https://truecharts.org/charts/stable/dashy/), though TrueCharts is no longer integrated with TrueNAS and its chart may be outdated. + +--- + ## Home Server Platforms -Several self-hosting platforms include Dashy in their app stores, giving you a one-click install with a management UI: +Several self-hosting platforms let you install Dashy from an app store, with a management UI on top: -- [CasaOS](https://casaos.io/) - Has Dashy in its built-in app store -- [Cosmos Cloud](https://cosmos-cloud.io/) - Install Dashy from the marketplace -- [Umbrel](https://umbrel.com/) - Available in the Umbrel App Store -- [Runtipi](https://runtipi.io/) - Available in the Runtipi App Store +- [Runtipi](https://runtipi.io/) - In the official Runtipi App Store +- [Cosmos Cloud](https://cosmos-cloud.io/) - In the official Cosmos marketplace +- [CasaOS](https://casaos.io/) - Via the community [BigBear app store](https://github.com/bigbeartechworld/big-bear-casaos) (not the built-in IceWhale store) +- [Umbrel](https://umbrel.com/) - Via a [community app store](https://github.com/dennysubke/dennys-umbrel-app-store) (not the official Umbrel store) These all run Dashy as a Docker container under the hood, so configuration works the same way. You'll find your `conf.yml` in whichever directory the platform maps to `/app/user-data/`. @@ -187,19 +232,14 @@ These all run Dashy as a Docker container under the hood, so configuration works ## Synology NAS -Installing dashy is really simply and fast: - -1. Install Docker via Synology ```Package Center```. -2. Go to ```File Station``` and open the ```docker``` folder. Inside the docker folder, create one new folder and name it ```dashy```. +On DSM 7.2 and later, Docker is provided by the **Container Manager** package: - > Note: Be careful to enter only lowercase, not uppercase letters. +1. Install **Container Manager** from the **Package Center**. +2. In **File Station**, create a folder for Dashy's config (e.g. `docker/dashy`) and put your `conf.yml` (plus any icons/assets) inside it. +3. In Container Manager, open **Registry**, search for `lissy93/dashy`, and download the `latest` tag. +4. Under **Container** > **Create**, pick the image, enable auto-restart, map a host port (e.g. `4000`) to container port `8080`, and mount your `docker/dashy` folder to `/app/user-data`. -3. Go to Control Panel / Task Scheduler / Create / Scheduled Task / User-defined script. -4. Once you click on ```User-defined``` script a new window will open. -5. Follow the instructions below: -6. General: In the Task field type in Install dashy. Uncheck "Enabled" option. Select root User. -7. Schedule: Select Run on the following date then select "Do not repeat". -8. Task Settings: Check "Send run details by email", add your email then copy paste the code below in the Run command area. After that click OK. +Alternatively, use Container Manager's **Project** feature with the [docker-compose.yml](https://github.com/Lissy93/dashy/blob/master/docker-compose.yml) above, or run it over SSH: ```bash docker run -d \ @@ -210,15 +250,25 @@ docker run -d \ lissy93/dashy:latest ``` -(Place your `conf.yml` and any sub-configs / icons / assets inside `/volume1/docker/dashy` on the host.) +Dashy should be reachable on your chosen port within a minute or two. -dashy should be up within 1-2min after you've started the install task procedure +--- + +## Saltbox + +[Saltbox](https://saltbox.dev/) (an Ansible-based server automation project) includes Dashy as a sandbox app. Once Saltbox is set up, install it with: + +```bash +sb install sandbox-dashy +``` + +See the [Saltbox Dashy docs](https://docs.saltbox.dev/sandbox/apps/dashy/) for details. --- ## Build from Source -If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed, and optionally [yarn](https://yarnpkg.com/) +If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and [Node.js](https://nodejs.org/) (v20 or newer) installed, and optionally [yarn](https://yarnpkg.com/) 1. Get Code: `git clone https://github.com/Lissy93/dashy.git` and `cd dashy` 2. Configuration: Fill in your settings in `./user-data/conf.yml` @@ -228,6 +278,18 @@ If you do not want to use Docker, you can run Dashy directly on your host system --- +## Nix / NixOS + +Dashy is packaged in [nixpkgs](https://search.nixos.org/packages?query=dashy-ui) as `dashy-ui`, and NixOS ships a `services.dashy` module. Enable it in your configuration: + +```nix +services.dashy.enable = true; +``` + +See the [module options](https://search.nixos.org/options?query=services.dashy) for setting the port and your config. Or run it ad-hoc with `nix run nixpkgs#dashy-ui`. Note the packaged version can lag behind the latest Dashy release. + +--- + ## Deploy to Cloud Service Dashy can be deployed to most cloud providers. The Docker guides above work on any VPS, but these providers offer quicker setup for static or containerized deployments. @@ -251,14 +313,41 @@ Deploy link: `https://app.netlify.com/start/deploy?repository=https://github.com Deploy link: `https://vercel.com/new/project?template=https://github.com/lissy93/dashy` +### Render + +[![Deploy to Render](https://img.shields.io/badge/Deploy-Render-46E3B7?logo=render&logoColor=white)](https://render.com/deploy?repo=https://github.com/lissy93/dashy) + +[Render](https://render.com/) runs the full Docker image, so status checks and config writing work. It builds from the [`render.yaml`](https://github.com/Lissy93/dashy/blob/master/render.yaml) blueprint at the repo root. + +Deploy link: `https://render.com/deploy?repo=https://github.com/lissy93/dashy` + +### Railway + +[![Deploy on Railway](https://img.shields.io/badge/Deploy-Railway-0B0D0E?logo=railway&logoColor=white)](https://railway.app/template/MtdjAQ?referralCode=app) + +[Railway](https://railway.com/) deploys the Dashy container from a template, with a free starter tier. + +Template: `https://railway.app/template/MtdjAQ` + +### Google Cloud Run + +[![Run on Google Cloud](https://img.shields.io/badge/Deploy-Cloud_Run-4285F4?logo=googlecloud&logoColor=white)](https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git) + +[Cloud Run](https://cloud.google.com/run) runs the container serverlessly. The button opens Google Cloud Shell and builds from the repo's `Dockerfile`. + +Deploy link: `https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git` + ### Easypanel -[![Deploy to Easypanel](https://img.shields.io/badge/Deploy-Easypanel-5765F2?logo=data:image/svg+xml;base64,&logoColor=white)](https://easypanel.io/docs/templates/dashy) +[![Deploy to Easypanel](https://img.shields.io/badge/Deploy-Easypanel-5765F2)](https://easypanel.io/docs/templates/dashy) [Easypanel](https://easypanel.io) is a self-hosted server control panel with a Dashy template. It runs the full Docker image, so all features including the Node server work. Template: `https://easypanel.io/docs/templates/dashy` +> [!NOTE] +> The Easypanel template currently pins an older Dashy version. After deploying, change the image tag to `lissy93/dashy:latest` (or a recent version) to get the newest release. + ### EdgeOne Pages [![Deploy to EdgeOne](https://cdnstatic.tencentcs.com/edgeone/pages/deploy.svg)](https://edgeone.ai/pages/new?repository-url=https://github.com/lissy93/dashy) @@ -269,6 +358,9 @@ Deploy link: `https://edgeone.ai/pages/new?repository-url=https://github.com/lis ### Play-with-Docker +> [!WARNING] +> Play-with-Docker is being retired and now shows a deprecation notice, so it may stop working. Treat it as a throwaway demo only, and use another method for anything real. + [![Try in PWD](https://img.shields.io/badge/Try-Play_with_Docker-0db7ed?logo=docker&logoColor=white)](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml) [Play with Docker](https://labs.play-with-docker.com/) gives you a free, temporary Docker environment in the browser. Good for trying Dashy without installing anything. Sessions last 4 hours. @@ -277,6 +369,15 @@ URL: `https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com --- +## Managed Hosting + +If you'd rather not self-host, a couple of providers will run a Dashy instance for you (paid): + +- [Elestio](https://elest.io/open-source/dashy) - Fully managed Dashy, or bring your own VM +- [PikaPods](https://www.pikapods.com/) - Managed Dashy hosting from a few dollars per month + +--- + ## Hosting with CDN Once Dashy has been built, it is effectively just a static web app. This means that it can be served up with pretty much any static host, CDN or web server. To host Dashy through a CDN, the steps are very similar to building from source: clone the project, cd into it, install dependencies, write your config file and build the app. Once build is complete you will have a `./dist` directory within Dashy's root, and this is the build application which is ready to be served up. @@ -287,26 +388,22 @@ However without Dashy's node server, there are a couple of features that will be ## Requirements -### System Requirements - -Dashy works well on a Raspberry Pi (tested on Pi 3 and later), but should also run well on any system. - -### Docker +### Architecture +The pre-built Docker image runs on `amd64`, `arm64` and `armv7` (`armv6` is not supported). -The initial build causes a spike in resource usage, but once running it's fairly steady. Minimum 1GB memory and 1GB disk space. +### System Resources +- CPU: any single core, x86-64 or ARM +- RAM: Node server idles around ~80โ€“120 MB; 256 MB is comfortable, works in less +- Disk: ~250 MB for the image + whatever your config/icons need +- Runs fine on a Pi 3 and up ### Bare Metal - -Requires [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/). The `engines` field in `package.json` specifies `>=18.0.0`, but the Docker image is built and tested on Node 24, so that's the recommended version for bare-metal too. - -Minimum 512MB memory, 2GB disk space. +Requires [Node.js](https://nodejs.org/) (20+) and [Yarn](https://yarnpkg.com/) ### CDN / Cloud Deploy - No specific requirements. The built app (without the Node server) is very lightweight and can be served by any static host or CDN. If you're using custom icons or other assets, additional disk space will be needed. ### Browser Support - JavaScript is required. Dashy targets browsers with >1% global usage and the last 2 versions of each (via [browserslist](https://browsersl.ist/)). In practice, any modern browser works fine. Internet Explorer is not supported. | Browser | Minimum Version | Status | @@ -314,7 +411,7 @@ JavaScript is required. Dashy targets browsers with >1% global usage and the las | Chrome / Chromium | 90+ | Fully supported | | Firefox | 90+ | Fully supported | | Edge | 90+ | Fully supported | -| Safari | 14+ | Supported | +| Safari | 14+ | Mostly Supported | | Opera | 76+ | Supported | | Samsung Internet | 15+ | Supported | | Firefox ESR | Latest | Supported | diff --git a/docs/developing.md b/docs/developing.md index 70f009b58e..9f3d7a8621 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -2,7 +2,7 @@ # Developing This article outlines how to get Dashy running in a development environment, and outlines the basics of the architecture. -If you're adding new features, you may want to check out the [Development Guides](./docs/development-guides.md) docs, for tutorials covering basic tasks. +If you're adding new features, you may want to check out the [Development Guides](./development-guides.md) docs, for tutorials covering basic tasks. - [Setting up the Development Environment](#setting-up-the-dev-environment) - [Prerequisites](#prerequisites) @@ -83,7 +83,7 @@ You can set variables either in your environment, or using the [`.env`](https:// ### Environment Modes -You can set the environment using the `NODE_ENV` variable. By default, the correct environment should be selected based on the script you run to start the app. The following environments are supported: `production`, `development` and `test`. For more info, see [Vue CLI Environment Modes](https://cli.vuejs.org/guide/mode-and-env.html#modes). +You can set the environment using the `NODE_ENV` variable. By default, the correct environment should be selected based on the script you run to start the app. The following environments are supported: `production`, `development` and `test`. For more info, see [Vite Env Variables and Modes](https://vite.dev/guide/env-and-mode). --- @@ -162,7 +162,7 @@ When you submit your PR, include the required info, by filling out the PR templa New to Web Development? Glad you're here! Dashy is a pretty simple app, so it should make a good candidate for your first PR. Presuming that you already have a basic knowledge of JavaScript, the following articles should point you in the right direction for getting up to speed with the technologies used in this project: - [Open Source for Beginners](https://opensource.guide/how-to-contribute/) -- [Introduction to Vue.js](https://v3.vuejs.org/guide/introduction.html) +- [Introduction to Vue.js](https://vuejs.org/guide/introduction.html) - [Vue.js Walkthrough](https://www.taniarascia.com/getting-started-with-vue/) - [ES6 Features](https://github.com/lukehoban/es6features) - [Definitive guide to SCSS](https://blog.logrocket.com/the-definitive-guide-to-scss/) @@ -198,7 +198,7 @@ The most significant things to note are: Styleguides: -- Vue: [Vue styleguide](https://vuejs.org/v2/style-guide/) +- Vue: [Vue styleguide](https://vuejs.org/style-guide/) - JavaScript: [github.com/airbnb/javascript](https://github.com/airbnb/javascript) --- @@ -213,14 +213,14 @@ Styleguides: โ”œโ”€โ”€ src/ # Project front-end source code โ”œโ”€โ”€ server.js # A Node.js server to serve up the /dist directory โ”œโ”€โ”€ services/ # All server-side endpoints and utilities -โ”œโ”€โ”€ vue.config.js # Vue.js configuration +โ”œโ”€โ”€ vite.config.mjs # Vite (build tool) configuration โ”œโ”€โ”€ Dockerfile # The blueprint for building the Docker container โ”œโ”€โ”€ docker-compose.yml # A Docker run command โ”œโ”€โ”€ .env # Location for any environmental variables โ”œโ”€โ”€ yarn.lock # Auto-generated list of current packages and version numbers โ”œโ”€โ”€ docs/ # Markdown documentation โ”œโ”€โ”€ README.md # Readme, basic info for getting started -โ”œโ”€โ”€ LICENSE.md # License for use +โ”œโ”€โ”€ LICENSE # License for use โ•ฏ ``` @@ -327,7 +327,6 @@ Styleguides: โ”‚ โ”œโ”€โ”€ CloudBackup.js # Functionality for encrypting, processing and network calls โ”‚ โ”œโ”€โ”€ ConfigSchema.json # The schema, used to validate the users conf.yml file โ”‚ โ”œโ”€โ”€ ConfigAccumulator.js # Central place for managing and combining config -โ”‚ โ”œโ”€โ”€ ConfigHelpers.js # Collection of helper functions to process config using accumulator โ”‚ โ”œโ”€โ”€ ConfigValidator.js # A helper script that validates the config file against schema โ”‚ โ”œโ”€โ”€ CoolConsole.js # Prints info, warning and error messages to browser console, with a cool style โ”‚ โ”œโ”€โ”€ defaults.js # Global constants and their default values @@ -368,14 +367,5 @@ The easiest method of checking performance is to use Chromium's build in auditin [BundlePhobia](https://bundlephobia.com/) is a really useful app that lets you analyze the cost of adding any particular dependency to an application ---- - -## Notes - -### Known Warnings - -When running the build command, several warnings appear. These are not errors, and do not affect the security or performance of the application. They will be addressed in a future update - -`WARN A new version of sass-loader is available. Please upgrade for best experience.` - Currently we're using an older version of SASS loader, since the more recent releases do not seem to be compatible with the Vue CLI's webpack configuration. `WARN asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).` - For the PWA to support Windows 10, a splash screen asset is required, and is quite large. This throws a warning, however PWA assets are not loaded until needed, so shouldn't have any impact on application performance. A similar warning is thrown for the Raleway font, and that is looking to be addressed. diff --git a/docs/development-guides.md b/docs/development-guides.md index 7aa7f3be4c..55343bb580 100644 --- a/docs/development-guides.md +++ b/docs/development-guides.md @@ -262,7 +262,7 @@ If add any new variables, ensure that there is always a fallback (define it in [ If this is your first time working on Dashy, then the [Developing Docs](https://github.com/Lissy93/dashy/blob/master/docs/developing.md) instructions for project setup and running. In short, you just need to clone the project, cd into it, install dependencies (`yarn`) and then start the development server (`yarn dev`). -To build a widget, you'll also need some basic knowledge of Vue.js. The [official Vue docs](https://vuejs.org/v2/guide/) provides a good starting point, as does [this guide](https://www.taniarascia.com/getting-started-with-vue/) by Tania Rascia +To build a widget, you'll also need some basic knowledge of Vue.js. The [official Vue docs](https://vuejs.org/guide/) provides a good starting point, as does [this guide](https://www.taniarascia.com/getting-started-with-vue/) by Tania Rascia If you just want to jump straight in, then [here](https://github.com/Lissy93/dashy/commit/3da76ce2999f57f76a97454c0276301e39957b8e) is a complete implementation of a new example widget, or take a look at the [`XkcdComic.vue`](https://github.com/Lissy93/dashy/blob/master/src/components/Widgets/XkcdComic.vue) widget, which is pretty simple. @@ -278,7 +278,6 @@ Firstly, create a new `.vue` file under [`./src/components/Widgets`](https://git