Dashy helps you organize your self-hosted services by making them accessible from a single place
User Showcase | Live Demo | Getting Started | Documentation | GitHub
- **Getting Started** - [๐ Features](#features-) - [โกDemo](#demo-) - [๐ Getting Started](#getting-started-) - [๐ง Configuring](#configuring-) - **Feature Overview** - [๐จ Theming](#theming-) - [๐งธ Icons](#icons-) - [๐ฆ Status Indicators](#status-indicators-) - [๐ Widgets](#widgets-) - [๐ Authentication](#authentication-) - [๐ Alternate Views](#alternate-views-) - [๐ฑ๏ธ Opening Methods](#opening-methods-) - [๐ Searching and Shortcuts](#searching-and-shortcuts-) - [โ๏ธ Config Editor](#config-editor-) - [โ Cloud Backup & Sync](#cloud-backup--sync-) - [๐ Language Switching](#language-switching-) - [๐ Multi-Page Support](#multi-page-support-) - **Community** - [๐ System Requirements](#system-requirements-) - [๐โโ๏ธ Support](#support-) - [๐ Supporting Dashy](#supporting-dashy-) - [๐ Credits](#credits-) - [๐งฑ Developing](#developing-) - [๐๏ธ Release Schedule](#release-schedule-) - [๐ Documentation](#documentation-) - [๐ฃ๏ธ Roadmap](#roadmap-) - [๐ Alternatives](#alternatives-) - [๐ License](#license-)
**[โฌ๏ธ Back to Top](#dashy)** --- ## Getting Started ๐ > For full setup instructions, see: [**Deployment**](./docs/deployment.md) ### Deploying from Docker Hub ๐ณ You will need [Docker](https://docs.docker.com/get-docker/) installed on your system ``` docker run -p 8080:80 lissy93/dashy ``` Or ```docker docker run -d \ -p 4000:80 \ -v /root/my-local-conf.yml:/app/public/conf.yml \ --name my-dashboard \ --restart=always \ lissy93/dashy:latest ``` [![Dashy on Docker Hub](https://dockeri.co/image/lissy93/dashy)](https://hub.docker.com/r/lissy93/dashy) See also: [examples with Docker Compose](./docs/deployment.md#using-docker-compose). Dashy is also available via GHCR, and tags for other architectures (`arm32v7`, `arm64v8`, etc.) and set versions are supported > Once you've got Dashy running, see [App Management Docs](./docs/management.md) for info on using health checks, updating, backups, web-server configs, logs, performance, security, and more. ### 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. - Clone the Repo: `git clone https://github.com/Lissy93/dashy.git` and `cd dashy` - Configuration: Fill in your settings in `./public/conf.yml` - Install dependencies: `yarn` - Build: `yarn build` - Run: `yarn start` > See docs: [Full list of Dashy's commands](./docs/management.md#basic-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 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) > For more 1-click cloud deployments, see [Cloud Deployment](./docs/deployment.md#deploy-to-cloud-service) **[โฌ๏ธ Back to Top](#dashy)** --- ## Configuring ๐ง > For full configuration documentation, see: [**Configuring**](./docs/configuring.md) Dashy is configured through a YAML file, located at `./public/conf.yml`. In addition, you can find a complete list of available options in the [Configuring Docs](./docs/configuring.md). The config can also be edited and saved directly through the UI. **[โฌ๏ธ Back to Top](#dashy)** --- ## Theming ๐จ > For full theming documentation, see: [**Theming**](./docs/theming.md) Dashy comes pre-bundled with several built-in themes, which you can preview, apply and edit through the UI. With the theme configurator and support for custom CSS, everything is in place to quickly develop your own unique-looking dashboard. **[โฌ๏ธ Back to Top](#dashy)** --- ## Icons ๐งธ > For full iconography documentation, see: [**Icons**](./docs/icons.md) Both sections and items can have an icon associated with them, defined under the `icon` attribute. With several different icon packs supported, you'll be able to find the perfect thumbnail for any app or service. The following icon types are supported: - **Favicon** - Automatically fetch an apps icon from its Favicon or logo image - **Icon Packs** - Use any icon from [font-awesome], [simple-icons] or [material icons] - **Emoji** - Any valid emoji can be used as an icon - **Generative** - Unique, auto-generated images for easily identifying services - **URL** - Pass the URL of any valid image in to have it fetched and rendered - **Local** - Store custom images locally and reference by filename - **Homelab Icons** - Using [dashboard-icons] for logos of commonly self-hosted services [font-awesome]: https://fontawesome.com/icons [simple-icons]: https://simpleicons.org/ [material icons]: https://github.com/Templarian/MaterialDesign [dashboard-icons]: https://github.com/WalkxCode/dashboard-icons
**[โฌ๏ธ Back to Top](#dashy)** --- ## Status Indicators ๐ฆ > For full monitoring documentation, see: [**Status Indicators**](./docs/status-indicators.md) Dashy has an optional feature to check if each app/ service is up and responding, then display a small status indicator icon. Hovering over it will show additional stats like response time and status code. Status indicators can be globally enabled by setting `appConfig.statusCheck: true` or enabled/ disabled on a per-item basis. Status is checked on page load, but you can allow continuous polling by specifying a time interval between checks, in seconds under `appConfig.statusCheckInterval`. You can also use a different endpoint for status checking, with `statusCheckUrl`, and if needed, pass in custom headers under `statusCheckHeaders`.
**[โฌ๏ธ Back to Top](#dashy)** --- ## Widgets ๐ > For full widget documentation, see: [**Widgets**](./docs/widgets.md) You can display dynamic content from services in the form of widgets. There are several pre-built widgets availible for showing useful info, and integrations with commonly self-hosted services, but you can also easily create your own for almost any app.
**[โฌ๏ธ Back to Top](#dashy)** --- ## Authentication ๐ > For full authentication documentation, see: [**Authentication**](./docs/authentication.md) Dashy has full support for secure single-sign-on using [Keycloak](https://www.keycloak.org/) for secure, easy authentication, see [setup docs](/docs/authentication.md#keycloak) for a full usage guide. There is also a basic auth feature, which doesn't require additional setup. To enable this, add an `auth` attribute under `appConfig`, containing an array of `users`, each with a username, SHA-256 hashed password and optional user type. Basic auth also supports several access control features, including read-only guest access and granular controls. ```yaml appConfig: auth: users: - user: alicia hash: 4D1E58C90B3B94BCAD9848ECCACD6D2A8C9FBC5CA913304BBA5CDEAB36FEEFA3 type: admin ``` Other access control systems are also supported, see the [Alternative Auth Methods](./docs/authentication.md#alternative-authentication-methods) docs. **[โฌ๏ธ Back to Top](#dashy)** --- ## Alternate Views ๐ As well as the default homepage, there is also: - A minimal view, valid for use as a browser start page - A workspace view, useful for visiting many apps simultaneously You can change the view from the UI, using the switch icon in the top-right corner, or select a default view in the config under `appConfig.startingView` attribute.
Example of Workspace View
Example of Minimal View
**[โฌ๏ธ Back to Top](#dashy)** --- ## Cloud Backup & Sync โ > For full backup documentation, see: [**Cloud Backup & Sync**](./docs/backup-restore.md) Dashy has an **optional** built-in feature for securely backing up your config to a hosted cloud service and then restoring it on another instance. This is useful not only for backing up your configuration off-site but also enables Dashy to be used without having to write a YAML config file. All data is fully E2E encrypted before being sent to the backend (done in [`CloudBackup.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/CloudBackup.js) using [crypto.js](https://github.com/brix/crypto-js) 's AES method). The data is then sent to a [Cloudflare worker](https://developers.cloudflare.com/workers/learning/how-workers-works) and stored in a [KV](https://developers.cloudflare.com/workers/learning/how-kv-works) data store. **[โฌ๏ธ Back to Top](#dashy)** --- ## Language Switching ๐ > For full internationalization documentation, see: [**Multi-Language Support**](./docs/multi-language-support.md) Dashy supports multiple languages and locales. When available, your language should be automatically detected and applied on load. But you can also select a language through the UI (under config --> Switch Language) or set `appConfig.language` to your language (specified as a 2-digit [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)). #### Supported Languages - ๐ฌ๐ง **English**: `en` - _Default_ - ๐จ๐ณ **Chinese**: `cn` - Contributed by **[@FormatToday](https://github.com/FormatToday)** - ๐ณ๐ฑ **Dutch**: `nl` - Contributed by **[@evroon](https://github.com/evroon)** - ๐ฒ๐ซ **French**: `fr` - Contributed by **[@EVOTk](https://github.com/EVOTk)** - ๐ฉ๐ช **German**: `de` - Contributed by **[@Niklashere](https://github.com/Niklashere)** - ๐ฎ๐น **Italian**: `it` - Contributed by **[@alexdelprete](https://github.com/alexdelprete)** - ๐ณ๐ด **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)** - ๐ช๐ธ **Spanish**: `es` - Contributed by **[@lu4t](https://github.com/lu4t)** - ๐ธ๐ฎ **Slovenian**: `sl` - Contributed by **[@UrekD](https://github.com/UrekD)** - ๐ธ๐ช **Swedish**: `sv` - Contributed by **[@BOZG](https://github.com/BOZG)** - ๐น๐ผ **Traditional Chinese**: `zh-TW` - Contributed by **[@stanly0726](https://github.com/stanly0726)** - ๐ท๐บ **Russian**: `ru` - ๐ฆ๐ช **Arabic**: `ar` - ๐ฎ๐ณ **Hindi**: `hi` - ๐ฏ๐ต **Japanese**: `ja` - ๐ฐ๐ท **Korean**: `ko` - Contributed by **[@boggy-cs](https://github.com/boggy-cs)** - ๐ธ๐ฐ **Slovak**: `sk` - Contributed by **[@Smexhy](https://github.com/Smexhy)** - ๐ฉ๐ฐ **Danish**: `da` - Contributed by **[@lordpansar](https://github.com/lordpansar)** - ๐จ๐ฟ **Czech**: `cs` - Contributed by **[@Tuzi555](https://github.com/Tuzi555)** #### Add your Language I would love Dashy to be available to everyone without language being a barrier to entry. If you've got a few minutes to spare, consider adding translations for your language. It's a quick task, and all text is in [a single JSON file](https://github.com/Lissy93/dashy/tree/master/src/assets/locales). Since any missing text will fall back to English, you don't need to translate it all. **[โฌ๏ธ Back to Top](#dashy)** --- ## Multi-Page Support ๐ > For full multi-page documentation, see: [**Pages & Sections**](./docs/pages-and-sections.md) Within your dashboard, you can have as many sub-pages as you require. To load additional pages, specify a name, and path to a config file under `pages`. The config file can be either local (stored in `/public`), or remote (located anywhere accessible). ```yaml pages: - name: Networking Services path: 'networking.yml' - name: Work Stuff path: 'work.yml' ``` Or ```yaml pages: - name: Getting Started path: 'https://snippet.host/tvcw/raw' - name: Homelab path: 'https://snippet.host/tetp/raw' - name: Browser Startpage path: 'https://snippet.host/zcom/raw' ``` --- ## System Requirements ๐ If running on bare metal, Dashy requires [Node](https://nodejs.org/en/) V 16.0.0 or later, LTS (16.13.2) is recommended. If running in Docker container, the recommended base image is Alpine (3.15) 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+ โ | **[โฌ๏ธ Back to Top](#dashy)** --- ## Support ๐โโ๏ธ If you're having trouble getting Dashy up and running, or have a question about usage or configuration, feel free to ask. The best place to do this is via [the Discussions](https://github.com/Lissy93/dashy/discussions). If you've found something which isn't working as it should, please raise a bug by [opening a ticket](https://github.com/Lissy93/dashy/issues/new/choose). It's best to check the [docs](./docs), [previous issues](https://github.com/Lissy93/dashy/issues?q=label%3A%22%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question%22+) and [troubleshooting guide](./docs/troubleshooting.md) first. **[โฌ๏ธ Back to Top](#dashy)** --- ## Supporting Dashy ๐ > For full details and other ways you can help out, see: [**Contributing**](./docs/contributing.md) If you're using Dashy and would like to help support its development, then that would be awesome! Contributions of any type, any size, are always very much appreciated, and we will appropriately credit you for your effort. Several areas that we need a bit of help with at the moment are: - Translating - Help make Dashy available to non-native English speakers by [adding your language](./docs/multi-language-support.md#adding-a-new-language) - Donate a small amount by [Sponsoring @Lissy93 on GitHub](https://github.com/sponsors/Lissy93) and receive some extra perks! - Complete a [short survey](https://survey.typeform.com/to/gl0L68ou) to have your say about future features - Share your dashboard in the [Showcase](https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#dashy-showcase-), to inspire others - Spread the word by sharing Dashy or a screenshot of your dashboard to help new users discover it - Submit a PR to add a new feature, fix a bug, update the docs, add a theme, widget or something else - Star Dashy on GitHub/ DockerHub or leave an upvote / review on [these platforms](https://github.com/Lissy93/dashy/blob/master/docs/contributing.md#star-upvote-or-leave-a-review) [![Sponsor Lissy93 on GitHub](./docs/assets/sponsor-button.svg)](https://github.com/sponsors/Lissy93) **[โฌ๏ธ Back to Top](#dashy)** ## Credits ๐ > For a complete list of credits, and attributions to packages used within Dashy, see: [**Credits**](./docs/credits.md) Thank you so much to everyone who has helped with Dashy so far; every contribution is very much appreciated. #### Sponsors Huge thanks to the sponsors helping to support Dashy's development!