+
+### Restrictions
+
+Only top-level fields supported by sub-pages are `pageInfo` and `sections`. The `appConfig` and `pages` will always be inherited from your main `conf.yml` file. Other than that, sub-pages behave exactly the same as your default view, and can contain sections, items, widgets and page info like nav links, title and logo.
+
+Note that since page paths are required by the router, they are set at build-time, not run-time, and so a rebuild (happens automatically) is required for changes to page paths to take effect (this only applies to changes to the `pages` array, rebuild isn't required for editing page content).
+
+
+## Sub-Items
+
+A normal section will contain zero or more items, for example:
+
+```yaml
+- name: Coding
+ icon: far fa-code
+ items:
+ - title: GitHub
+ url: https://github.com/
+ - title: StackOverflow
+ url: http://stackoverflow.com/
+```
+
+But items can also be grouped together, referred to as sub-items. This is useful for a group of less frequently used items, which you don't want to take up too much space, or for action buttons (_coming soon_).
+
+Item groups may also have an optional title.
+
+```yaml
+- name: Coding
+ icon: far fa-code
+ items:
+ - title: Normal Item 1
+ - title: Normal Item 2
+ - subItems:
+ - title: JavaScript
+ url: https://developer.mozilla.org
+ icon: si-javascript
+ - title: TypeScript
+ url: https://www.typescriptlang.org/docs
+ icon: si-typescript
+ - title: Svelt
+ url: https://svelte.dev/docs
+ icon: si-svelte
+ - title: Go
+ url: https://go.dev/doc
+ icon: si-go
+```
diff --git a/docs/privacy.md b/docs/privacy.md
index db91d8cc..26390acb 100644
--- a/docs/privacy.md
+++ b/docs/privacy.md
@@ -111,6 +111,8 @@ Dashy supports [Widgets](/docs/widgets) for displaying dynamic content. Below is
- [IP-API Privacy Policy](https://ip-api.com/docs/legal)
- **[IP Blacklist](/docs/widgets#ip-blacklist)**: `https://api.blacklistchecker.com`
- [Blacklist Checker Privacy Policy](https://blacklistchecker.com/privacy)
+- **[Domain Monitor](/docs/widgets#domain-monitor)**: `http://api.whoapi.com`
+ - [WhoAPI Privacy Policy](https://whoapi.com/privacy-policy/)
- **[Crypto Watch List](/docs/widgets#crypto-watch-list)** and **[Token Price History](/docs/widgets#crypto-token-price-history)**: `https://api.coingecko.com`
- [CoinGecko Privacy Policy](https://www.coingecko.com/en/privacy)
- **[Wallet Balance](/docs/widgets#wallet-balance)**: `https://api.blockcypher.com/`
@@ -207,7 +209,7 @@ Note that packages listed under `devDependencies` section are only used for buil
## Securing your Environment
Running your self-hosted applications in individual, containerized environments (such as containers or VMs) helps keep them isolated, and prevent an exploit in one service effecting another.
-If you're running Dashy in a container, see [Management Docs --> Container Security](https://github.com/Lissy93/dashy/blob/master/docs/management#container-security) for step-by-step security guide.
+If you're running Dashy in a container, see [Management Docs --> Container Security](https://github.com/Lissy93/dashy/blob/master/docs/management.md#container-security) for step-by-step security guide.
There is very little complexity involved with Dashy, and therefore the attack surface is reasonably small, but it is still important to follow best practices and employ monitoring for all your self-hosted apps. A couple of things that you should look at include:
- Use SSL for securing traffic in transit
diff --git a/docs/release-workflow.md b/docs/release-workflow.md
index 7e87792f..99401c5e 100644
--- a/docs/release-workflow.md
+++ b/docs/release-workflow.md
@@ -12,7 +12,7 @@ We're using [Semantic Versioning](https://semver.org/), to indicate major, minor
Typically there is a new major release every 2 weeks, usually on Sunday, and you can view these under the [Releases Page](https://github.com/Lissy93/dashy/releases). Each new version will also have a corresponding [tag on GitHub](https://github.com/Lissy93/dashy/tags), and each major release will also result in the creation of a new [tag on DockerHub](https://hub.docker.com/r/lissy93/dashy/tags), so that you can fix your container to a certain version.
-For a full breakdown of each change, you can view the [Changelog](https://github.com/Lissy93/dashy/blob/master/.github/CHANGELOG). Each new feature or significant change needs to be submitted through a pull request, which makes it easy to review and track these changes, and roll back if needed.
+For a full breakdown of each change, you can view the [Changelog](https://github.com/Lissy93/dashy/blob/master/.github/CHANGELOG.md). Each new feature or significant change needs to be submitted through a pull request, which makes it easy to review and track these changes, and roll back if needed.
---
@@ -155,4 +155,4 @@ Action | Description
**Generate Credits** [](https://github.com/Lissy93/dashy/actions/workflows/generate-credits.yml) | Generates a report, including contributors, collaborators, sponsors, bots and helpful users. Will then insert a markdown table with thanks to these GitHub users and links to their profiles into the Credits page, as well as a summary of sponsors and top contributors into the main readme
**Wiki Sync** [](https://github.com/Lissy93/dashy/actions/workflows/wiki-sync.yml) | Generates and publishes the repositories wiki page using the markdown files within the docs directory
----
+---
\ No newline at end of file
diff --git a/docs/showcase.md b/docs/showcase.md
index 4021f768..a902a28c 100644
--- a/docs/showcase.md
+++ b/docs/showcase.md
@@ -1,4 +1,4 @@
-# Showcase π
+# *Dashy Showcase* π
| π Got a sweet dashboard? Submit it to the showcase! π [See How](#submitting-your-dashboard) |
|-|
@@ -10,19 +10,74 @@
---
### Ratty222
-> By [@ratty222](https://github.com/ratty222) [#384](https://github.com/Lissy93/dashy/discussions/384)
+> By [@ratty222](https://github.com/ratty222) Re: [#384](https://github.com/Lissy93/dashy/discussions/384)

---
### Hugalafutro Dashy
-> By [@hugalafutro](https://github.com/hugalafutro) [#505](https://github.com/Lissy93/dashy/discussions/505)
+> By [@hugalafutro](https://github.com/hugalafutro) Re: [#505](https://github.com/Lissy93/dashy/discussions/505)
[](https://i.ibb.co/PDpLDKS/hugalafutro-dashy.gif)
---
+### NAS Home Dashboard
+> By [@cerealconyogurt](https://github.com/cerealconyogurt) Re: [#74](https://github.com/Lissy93/dashy/issues/74)
+
+
+
+---
+
+### Brewhack
+
+> By [@brpeterso](https://github.com/brpeterso) Re: [#680](https://github.com/Lissy93/dashy/issues/680)
+
+
+
+---
+
+### The Private Dashboard
+
+> By [@DylanBeMe](https://github.com/DylanBeMe) Re: [#419](https://github.com/Lissy93/dashy/issues/419)
+
+
+
+---
+
+### Homelab & VPS dashboard
+> By [@shadowking001](https://github.com/shadowking001) Re: [#86](https://github.com/Lissy93/dashy/issues/86)
+
+
+
+---
+
+### Raspberry PI Docker Dashboard
+
+> By [@henkiewie](https://github.com/henkiewie) Re: [#622](https://github.com/Lissy93/dashy/issues/622)
+
+> I use this dashboard every day. It now even includes a player for a radio stream which I configured with Logitech media server and icecast. I made an smaller version of the grafana dashboard to fit an iframe in kiosk mode, so it monitors the most important values of my RPI. The PI is in Argon m2 case and used as a NAS. The dashboard is a copy of the adventure theme with some changes saved in `/app/src/styles/user-defined-themes.scss`
+
+
+
+---
+
+### First Week of Self-Hosting
+> By [u//RickyCZ](https://www.reddit.com/user/RickyCZ) via [Reddit](https://www.reddit.com/r/selfhosted/comments/pose15/just_got_started_a_week_ago_selfhosting_is_very/)
+
+
+
+---
+
+### EVO Dashboard
+
+> By [@EVOTk](https://github.com/EVOTk) Re: [#316](https://github.com/Lissy93/dashy/pull/316)
+
+
+
+---
+
### Networking Services
> By [@Lissy93](https://github.com/lissy93)
@@ -30,36 +85,6 @@
---
-### Homelab & VPS dashboard
-> By [@shadowking001](https://github.com/shadowking001)
-
-
-
----
-
-### EVO Dashboard
-
-> By [@EVOTk](https://github.com/EVOTk)
-
-
-
----
-
-### The Private Dashboard
-
-> By [@DylanBeMe](https://github.com/DylanBeMe) [#419](https://github.com/Lissy93/dashy/issues/419)
-
-
-
----
-
-### NAS Home Dashboard
-> By [@cerealconyogurt](https://github.com/cerealconyogurt)
-
-
-
----
-
### Dashy Live
> By [@Lissy93](https://github.com/lissy93)
@@ -108,16 +133,9 @@
---
-### First Week of Self-Hosting
-> By [u//RickyCZ](https://www.reddit.com/user/RickyCZ)
-
-
-
----
-
### HomeLAb 3.0
-> By [@skoogee](https://github.com/skoogee) (http://zhrn.cc)
+> By [@skoogee](https://github.com/skoogee) (http://zhrn.cc) [#279](https://github.com/Lissy93/dashy/issues/279)
> Dashy, is the most complete dashboard I ever tried, has all the features, and it sets itself apart from the rest. It is my default homepage now. I am thankful to the developer @Lissy93 for sharing such a wonderful creation.
@@ -126,19 +144,12 @@
---
### Ground Control
-> By [@dtctek](https://github.com/dtctek)
+> By [@dtctek](https://github.com/dtctek) Re: [#83](https://github.com/Lissy93/dashy/issues/83)

---
-### Morning Dashboard
-> Displayed on my smart screen between 05:00 - 08:00, and includes all the info that I usually check before leaving for work
-
-
-
----
-
### Croco_Grievous
> By [u/Croco_Grievous](https://www.reddit.com/user/Croco_Grievous/) via [reddit](https://www.reddit.com/r/selfhosted/comments/t4xk3z/everything_started_with_pihole_on_a_raspberry_pi/)
@@ -161,12 +172,28 @@
---
+### Morning Dashboard
+> Displayed on my smart screen between 05:00 - 08:00, and includes all the info that I usually check before leaving for work
+
+
+
+---
+
### Yet Another Homelab

---
+### The Dragons Lair
+> By [dr460nf1r3](https://github.com/dr460nf1r3) via [#684](https://github.com/Lissy93/dashy/issues/684)
+
+> My new startpage featuring the stuff I use most. And of course dragons!
+
+
+
+---
+
## Submitting your Dashboard
#### How to Submit
diff --git a/docs/showcase/13-dragons-lair.png b/docs/showcase/13-dragons-lair.png
new file mode 100644
index 00000000..1c0867f7
Binary files /dev/null and b/docs/showcase/13-dragons-lair.png differ
diff --git a/docs/theming.md b/docs/theming.md
index 84dde582..e6bbae60 100644
--- a/docs/theming.md
+++ b/docs/theming.md
@@ -69,6 +69,16 @@ Custom CSS can be developed, tested and applied directly through the UI. Althoug
This can be done from the Config menu (spanner icon in the top-right), under the Custom Styles tab. This is then associated with `appConfig.customCss` in local storage. Styles can also be directly applied to this attribute in the config file, but this may get messy very quickly if you have a lot of CSS.
+### Page-Specific Styles
+
+If you've got multiple pages within your dashboard, you can choose to target certain styles to specific pages. The top-most element within `` will have a class name specific to the current sub-page. This is usually the page's name, all lowercase, with dashes instead of spaces, but you can easily check this yourself within the dev tools.
+
+For example, if the pages name was "CFT Toolbox", and you wanted to target `.item`s, you would do:
+
+```css
+.cft-toolbox .item { border: 4px solid yellow; }
+```
+
### Loading External Stylesheets
The URI of a stylesheet, either local or hosted on a remote CDN can be passed into the config file. The attribute `appConfig.externalStyleSheet` accepts either a string, or an array of strings. You can also pass custom font stylesheets here, they must be in a CSS format (for example, `https://fonts.googleapis.com/css2?family=Cutive+Mono`).
diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
index ad98f01c..4b5c2a69 100644
--- a/docs/troubleshooting.md
+++ b/docs/troubleshooting.md
@@ -7,8 +7,11 @@
### Contents
- [Refused to Connect in Web Content View](#refused-to-connect-in-modal-or-workspace-view)
- [404 On Static Hosting](#404-on-static-hosting)
+- [404 from Mobile Home Screen](#404-after-launch-from-mobile-home-screen)
- [Yarn Build or Run Error](#yarn-error)
- [Remote Config Not Loading](#remote-config-not-loading)
+- [Heap limit Allocation failed](ineffective-mark-compacts-near-heap-limit-allocation-failed)
+- [Command failed with signal "SIGKILL"](#command-failed-with-signal-sigkill)
- [Auth Validation Error: "should be object"](#auth-validation-error-should-be-object)
- [App Not Starting After Update to 2.0.4](#app-not-starting-after-update-to-204)
- [Keycloak Redirect Error](#keycloak-redirect-error)
@@ -26,11 +29,15 @@
- [Status Checks Failing](#status-checks-failing)
- [Diagnosing Widget Errors](#widget-errors)
- [Fixing Widget CORS Errors](#widget-cors-errors)
-- [Keycloak Redirect Error](#keycloak-redirect-error)
+- [Weather Forecast Widget 401](#weather-forecast-widget-401)
+- [Font Awesome Icons not Displaying](#font-awesome-icons-not-displaying)
+- [Copy to Clipboard not Working](#copy-to-clipboard-not-working)
- [How-To Open Browser Console](#how-to-open-browser-console)
- [Git Contributions not Displaying](#git-contributions-not-displaying)
+
---
+
## `Refused to Connect` in Modal or Workspace View
This is not an issue with Dashy, but instead caused by the target app preventing direct access through embedded elements.
@@ -85,6 +92,15 @@ If this works, but you wish to continue using HTML5 history mode, then a bit of
---
+## 404 after Launch from Mobile Home Screen
+
+Similar to the above issue, if you get a 404 after using iOS's βadd to Home Screenβ feature, then this is caused by Vue router.
+It can be fixed by setting `appConfig.routingMode` to `hash`
+
+See also: [#628](https://github.com/Lissy93/dashy/issues/628)
+
+---
+
## Yarn Error
For more info, see [Issue #1](https://github.com/Lissy93/dashy/issues/1)
@@ -118,6 +134,35 @@ If it is a remote service, that you do not have admin access to, then another op
---
+## Ineffective mark-compacts near heap limit Allocation failed
+
+If you see an error message, similar to:
+
+```
+<--- Last few GCs --->
+
+[61:0x74533040] 229060 ms: Mark-sweep (reduce) 127.1 (236.9) -> 127.1 (137.4) MB, 5560.7 / 0.3 ms (average mu = 0.286, current mu = 0.011) allocation failure scavenge might not succeed
+
+<--- JS stacktrace --->
+
+FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
+```
+
+
+This is likely caused by insufficient memory allocation to the container. When the container first starts up, or has to rebuild, the memory usage spikes, and if there isn't enough memory, it may terminate. This can be specified with, for example: `--memory=1024m`. For more info, see [Docker: Runtime options with Memory, CPUs, and GPUs](https://docs.docker.com/config/containers/resource_constraints/).
+
+See also: [#380](https://github.com/Lissy93/dashy/issues/380), [#350](https://github.com/Lissy93/dashy/issues/350), [#297](https://github.com/Lissy93/dashy/issues/297), [#349](https://github.com/Lissy93/dashy/issues/349), [#510](https://github.com/Lissy93/dashy/issues/510) and [#511](https://github.com/Lissy93/dashy/issues/511)
+
+---
+
+## Command failed with signal "SIGKILL"
+
+In Docker, this can be caused by not enough memory. When the container first starts up, or has to rebuild, the memory usage spikes, and so a larger allocation may be required. This can be specified with, for example: `--memory=1024m`. For more info, see [Docker: Runtime options with Memory, CPUs, and GPUs](https://docs.docker.com/config/containers/resource_constraints/)
+
+See also [#624](https://github.com/Lissy93/dashy/issues/624)
+
+---
+
## Auth Validation Error: "should be object"
In V 1.6.5 an update was made that in the future will become a breaking change. You will need to update you config to reflect this before V 2.0.0 is released. In the meantime, your previous config will continue to function normally, but you will see a validation warning. The change means that the structure of the `appConfig.auth` object is now an object, which has a `users` property.
@@ -171,6 +216,13 @@ You should also ensure that Keycloak is correctly configured, with a user, realm
For more details on how to set headers, see the [Example Headers](/docs/management#setting-headers) in the management docs, or reference the documentation for your proxy.
+If you're running in Kubernetes, you will need to enable CORS ingress rules, see [docs](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors), e.g:
+
+```
+nginx.ingress.kubernetes.io/cors-allow-origin: "https://dashy.example.com"
+nginx.ingress.kubernetes.io/enable-cors: "true"
+```
+
See also: #479, #409, #507, #491, #341, #520
---
@@ -349,7 +401,7 @@ For more info on how to set headers, see: [Setting Headers](/docs/management#set
#### Option 3 - Proxying Request
-You can route requests through Dashy's built-in CORS proxy. Instructions and more details can be found [here](/docs/widgets.md#proxying-requests). If you don't have control over the target origin, and you are running Dashy either through Docker, with the Node server or on Netlify, then this solution will work for you.
+You can route requests through Dashy's built-in CORS proxy. Instructions and more details can be found [here](/docs/widgets#proxying-requests). If you don't have control over the target origin, and you are running Dashy either through Docker, with the Node server or on Netlify, then this solution will work for you.
Just add the `useProxy: true` option to the failing widget.
@@ -359,22 +411,40 @@ For testing purposes, you can use an addon, which will disable the CORS checks.
---
-## Keycloak Redirect Error
+## Weather Forecast Widget 401
-Firstly, ensure that in your Keycloak instance you have populated the Valid Redirect URIs field ([screenshot](https://user-images.githubusercontent.com/1862727/148599768-db4ee4f8-72c5-402d-8f00-051d999e6267.png)) with the URL to your Dashy instance.
+[Weather widget](/docs/widgets#weather-forecast) is working fine, but you are getting a `401` for the [Weather Forecast widget](/docs/widgets#weather-forecast), then this is most likely an OWM API key issue.
-You may need to specify CORS headers on your Keycloak instance, to allow requests coming from Dashy, e.g:
+The forecasting API requires an upgraded plan. ULPT: You can get a free, premium API key by filling in [this form](https://home.openweathermap.org/students). It's a student plan, but there's no verification to check that you are still a student.
-```
-Access-Control-Allow-Origin: https://dashy.example.com
-```
+A future update will be pushed out, to use a free weather forecasting API.
-If you're running in Kubernetes, you will need to enable CORS ingress rules, see [docs](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors), e.g:
+---
-```
-nginx.ingress.kubernetes.io/cors-allow-origin: "https://dashy.example.com"
-nginx.ingress.kubernetes.io/enable-cors: "true"
-```
+## Font Awesome Icons not Displaying
+
+Usually, Font Awesome will be automatically enabled if one or more of your icons are using Font-Awesome. If this is not happening, then you can always manually enable (or disable) Font Awesome by setting: [`appConfig`](/docs/configuring#appconfig-optional).`enableFontAwesome` to `true`.
+
+If you are trying to use a premium icon, then you must have a [Pro License](https://fontawesome.com/plans). You'll then need to specify your Pro plan API key under `appConfig.fontAwesomeKey`. You can find this key, by logging into your FA account, navigate to Account β [Kits](https://fontawesome.com/kits) β New Kit β Copy Kit Code. The code is a 10-digit alpha-numeric code, and is also visible within the new kit's URL, for example: `81e48ce079`.
+
+Be sure that you're specifying the icon category and name correctly. You're icon should look be `[category] fa-[icon-name]`. The following categories are supported: `far` _(regular)_, `fas` _(solid)_, `fal`_(light)_, `fad` _(duo-tone)_ and `fab`_(brands)_. With the exception of brands, you'll usually want all your icons to be in from same category, so they look uniform.
+
+Ensure the icon you are trying to use, is available within [FontAwesome Version 5](https://fontawesome.com/v5/search).
+
+Examples: `fab fa-raspberry-pi`, `fas fa-database`, `fas fa-server`, `fas fa-ethernet`
+
+Finally, check the [browser console](#how-to-open-browser-console) for any error messages, and raise a ticket if the issue persists.
+
+---
+
+## Copy to Clipboard not Working
+
+If the copy to clipboard feature (either under Config --> Export, or Item --> Copy URL) isn't functioning as expected, first check the browser console. If you see `TypeError: Cannot read properties of undefined (reading 'writeText')` then this feature is not supported by your browser.
+The most common reason for this, is if you not running the app over HTTPS. Copying to the clipboard requires the app to be running in a secure origin / aka have valid HTTPS cert. You can read more about this [here](https://stackoverflow.com/a/71876238/979052).
+
+As a workaround, you could either:
+- Highlight the text and copy / Ctrl + C
+- Or setup SSL - [here's a guide](https://github.com/Lissy93/dashy/blob/master/docs/management.md#ssl-certificates) on doing so
---
diff --git a/docs/widgets.md b/docs/widgets.md
index efc2f99e..0c7860f4 100644
--- a/docs/widgets.md
+++ b/docs/widgets.md
@@ -2,10 +2,6 @@
Dashy has support for displaying dynamic content in the form of widgets. There are several built-in widgets available out-of-the-box as well as support for custom widgets to display stats from almost any service with an API.
-> βΉοΈ **Note**: Widgets are still in the Alpha-phase of development.
-> If you find a bug, please raise it.
-> Adding / editing widgets through the UI isn't yet supported, you will need to do this in the YAML config file.
-
##### Contents
- **[General Widgets](#general-widgets)**
- [Clock](#clock)
@@ -15,6 +11,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [Image](#image)
- [Public IP Address](#public-ip)
- [IP Blacklist Checker](#ip-blacklist)
+ - [Domain Monitor](#domain-monitor)
- [Crypto Watch List](#crypto-watch-list)
- [Crypto Price History](#crypto-token-price-history)
- [Crypto Wallet Balance](#wallet-balance)
@@ -47,6 +44,10 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [Recent Traffic](#recent-traffic)
- [Stat Ping Statuses](#stat-ping-statuses)
- [Synology Download Station](#synology-download-station)
+ - [AdGuard Home Block Stats](#adguard-home-block-stats)
+ - [AdGuard Home Filters](#adguard-home-filters)
+ - [AdGuard Home DNS Info](#adguard-home-dns-info)
+ - [AdGuard Home Top Domains](#adguard-home-top-domains)
- **[System Resource Monitoring](#system-resource-monitoring)**
- [CPU Usage Current](#current-cpu-usage)
- [CPU Usage Per Core](#cpu-usage-per-core)
@@ -97,6 +98,7 @@ A simple, live-updating time and date widget with time-zone support. All fields
**`format`** | `string` | _Optional_ | A country code for displaying the date and time in local format. Specified as `[ISO-3166]-[ISO-639]`, for example: `en-AU`. See [here](https://www.fincher.org/Utilities/CountryLanguageList.shtml) for a full list of locales. Defaults to the browser / device's region
**`customCityName`** | `string` | _Optional_ | By default the city from the time-zone is shown, but setting this value will override that text
**`hideDate`** | `boolean` | _Optional_ | If set to `true`, the date and city will not be shown. Defaults to `false`
+**`hideSeconds`** | `boolean` | _Optional_ | If set to `true`, seconds will not be shown. Defaults to `false`
##### Example
@@ -319,6 +321,43 @@ Notice certain web pages aren't loading? This widget quickly shows which blackli
---
+### Domain Monitor
+
+Keep an eye on the expiry dates of your domain names, using public whois records fetched from [whoapi.com](https://whoapi.com/). Click the domain name to view additional info, like registrar, name servers and date last updated.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`domain`** | `string` | Required | The domain to check
+**`apiKey`** | `string` | Required | You can get your free API key from [my.whoapi.com](https://my.whoapi.com/user/signup)
+**`showFullInfo`** | `boolean` | _Optional_ | If set to true, the toggle-full-info panel will be open by default
+
+##### Example
+
+```yaml
+ - type: domain-monitor
+ options:
+ domain: example.com
+ apiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+ - type: domain-monitor
+ options:
+ domain: example2.com
+ apiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+```
+
+##### Info
+- **CORS**: π’ Enabled
+- **Auth**: π΄ Required
+- **Price**: π Free Plan (10,000 requests)
+- **Host**: Managed Instance Only
+- **Privacy**: _See [WhoAPI Privacy Policy](https://whoapi.com/privacy-policy/)_
+
+---
+
### Crypto Watch List
Keep track of price changes of your favorite crypto assets. Data is fetched from [CoinGecko](https://www.coingecko.com/). All fields are optional.
@@ -713,6 +752,7 @@ Show recent scores and upcoming matches from your favourite sports team. Data is
**`pastOrFuture`** | `string` | __Optional__ | Set to `past` to show scores for recent games, or `future` to show upcoming games. Defaults to `past`. You can change this within the UI
**`apiKey`** | `string` | __Optional__ | Optionally specify your API key, which you can sign up for at [TheSportsDB.com](https://www.thesportsdb.com/)
**`limit`** | `number` | __Optional__ | To limit output to a certain number of matches, defaults to `15`
+**`hideImage`** | `boolean` | __Optional__ | Set to `true` to not render the team / match banner image, defaults to `false`
##### Example
@@ -1080,6 +1120,8 @@ _No config options._
##### Info
No external data requests made
+Note that this widget is not available if you are running Dashy in a container or VM. Instead you can use the [System Monitoring](#system-resource-monitoring) widgets to display stats from the host system instead.
+
---
### Cron Monitoring (Health Checks)
@@ -1308,6 +1350,9 @@ Displays the current and recent uptime of your running services, via a self-host
**Field** | **Type** | **Required** | **Description**
--- | --- | --- | ---
**`hostname`** | `string` | Required | The URL to your StatPing instance, without a trailing slash
+**`groupId`** | `number` | Optional | If provided, only Services in the given group are displayed. Defaults to `0` in which case all services are displayed.
+**`showChart`** | `boolean`| Optional | If provided and `false` then charts are not displayed. Defaults to `true`.
+**`showInfo`** | `boolean`| Optional | If provided and `false` then information summaries are not displayed. Defaults to `true`.
##### Example
@@ -1316,6 +1361,18 @@ Displays the current and recent uptime of your running services, via a self-host
options:
hostname: http://192.168.130.1:8080
```
+or
+```yaml
+- type: stat-ping
+ options:
+ hostname: http://192.168.130.1:8080
+ groupId: 3
+ showChart: false
+ showInfo: false
+```
+You can use multiple StatPing widgets with different `groupId`s.
+
+Note, the Group Id is not directly visible in SttatPing UI, you can inspect the group select HTML element or the API response to find out.
##### Info
- **CORS**: π Proxied
@@ -1330,7 +1387,7 @@ Displays the current and recent uptime of your running services, via a self-host
Displays the current downloads/torrents tasks of your Synology NAS
-
+
##### Options
@@ -1361,6 +1418,152 @@ Displays the current downloads/torrents tasks of your Synology NAS
---
+### AdGuard Home Block Stats
+
+Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, and
+displays total number of allowed and blocked queries, plus a pie chart showing breakdown by block type.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL to your AdGuard Home instance
+**`username`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your username here
+**`password`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your password here
+
+##### Example
+
+```yaml
+- type: adguard-stats
+ useProxy: true
+ options:
+ hostname: http://127.0.0.1
+ username: admin
+ password: test
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π Optional
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [AdGuard Home](https://adguard.com/en/adguard-home/overview.html))
+- **Privacy**: _See [AdGuard Privacy Policy](https://adguard.com/en/privacy.html)_
+
+
+---
+
+### AdGuard Home Filters
+
+Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, to display the current status of each of your filter lists. Includes filter name, last updated, number of items, and a link to the list.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL to your AdGuard Home instance
+**`username`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your username here
+**`password`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your password here
+**`showOnOffStatusOnly`** | `boolean` | _Optional_ | If set to `true`, will only show aggregated AdGuard filter status (on/off), instead of a list of filters
+
+##### Example
+
+```yaml
+- type: adguard-filter-status
+ useProxy: true
+ options:
+ hostname: http://127.0.0.1
+ username: admin
+ password: test
+ showOnOffStatusOnly: false
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π Optional
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [AdGuard Home](https://adguard.com/en/adguard-home/overview.html))
+- **Privacy**: _See [AdGuard Privacy Policy](https://adguard.com/en/privacy.html)_
+
+---
+
+### AdGuard Home DNS Info
+
+Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, and displays the current status (Enabled / Disabled) of AdGuard DNS. Click show more to view detailed info, including upstream DNS provider, active ports, and the status of DNSSEC, EDNS CS, PTR and IPv6.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL to your AdGuard Home instance
+**`username`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your username here
+**`password`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your password here
+**`showFullInfo`** | `boolean` | _Optional_ | If set to `true`, the full DNS info will be shown by default, without having to click "Show Info"
+
+##### Example
+
+```yaml
+- type: adguard-dns-info
+ useProxy: true
+ options:
+ hostname: http://127.0.0.1
+ username: admin
+ password: test
+ showFullInfo: false
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π Optional
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [AdGuard Home](https://adguard.com/en/adguard-home/overview.html))
+- **Privacy**: _See [AdGuard Privacy Policy](https://adguard.com/en/privacy.html)_
+
+---
+
+### AdGuard Home Top Domains
+
+Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) instance, and displays a list of the most queried, and most blocked domains.
+
+
+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`hostname`** | `string` | Required | The URL to your AdGuard Home instance
+**`username`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your username here
+**`password`** | `string` | _Optional_ | If you've got auth enabled on AdGuard, provide your password here
+**`limit`** | `number` | _Optional_ | Specify the number of results to show, between `1` and `100`, defaults to `10`
+**`hideBlockedDomains`** | `boolean` | _Optional_ | Don't show the blocked domains list (queried domains only)
+**`hideQueriedDomains`** | `boolean` | _Optional_ | Don't show the queried domains list (blocked domains only)
+
+##### Example
+
+```yaml
+- type: adguard-top-domains
+ useProxy: true
+ options:
+ hostname: http://127.0.0.1
+ username: admin
+ password: test
+ limit: 10
+```
+
+##### Info
+- **CORS**: π Proxied
+- **Auth**: π Optional
+- **Price**: π’ Free
+- **Host**: Self-Hosted (see [AdGuard Home](https://adguard.com/en/adguard-home/overview.html))
+- **Privacy**: _See [AdGuard Privacy Policy](https://adguard.com/en/privacy.html)_
+
+---
+
## System Resource Monitoring
The easiest method for displaying system info and resource usage in Dashy is with [Glances](https://nicolargo.github.io/glances/).