Widgets
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.
Contentsβ
- General Widgets
- Clock
- Weather
- Weather Forecast
- RSS Feed
- Image
- Public IP Address
- IP Blacklist Checker
- Domain Monitor
- Crypto Watch List
- Crypto Price History
- Crypto Wallet Balance
- Code Stats
- Mullvad Status
- Email Aliases (addy.io)
- Vulnerability Feed
- Exchange Rates
- Public Holidays
- Covid-19 Status
- Sports Scores
- News Headlines
- TFL Status
- Stock Price History
- ETH Gas Prices
- Joke of the Day
- Chuck Norris quotes
- XKCD Comics
- Flight Data
- NASA APOD
- GitHub Trending
- GitHub Profile Stats
- Healthchecks Status
- Hackernews Trending
- Mvg Departure
- Mvg Connection
- Custom search
- Rescuetime overview
- Minecraft Server
- Self-Hosted Services Widgets
- System Info
- Cron Monitoring
- CPU History
- Memory History
- System Load History
- Pi-Hole Stats
- Pi-Hole Stats v6
- Pi-Hole Queries
- Pi-Hole Queries v6
- Pi-Hole Recent Traffic
- Pi-Hole Recent Traffic v6
- Stat Ping Statuses
- Synology Download Station
- AdGuard Home Block Stats
- AdGuard Home Filters
- AdGuard Home DNS Info
- AdGuard Home Top Domains
- Nextcloud User
- Nextcloud User Statuses
- Nextcloud Notifications
- Nextcloud System
- Nextcloud Stats
- Nextcloud PHP OPcache
- Proxmox lists
- Sabnzbd
- Gluetun VPN Info
- Drone CI Build
- Filebrowser
- Linkding
- Uptime Kuma
- Uptime Kuma Status Page
- Tactical RMM
- System Resource Monitoring
- Dynamic Widgets
- Usage & Customizations
General Widgetsβ
Clockβ
A simple, live-updating time and date widget with time-zone support. All fields are optional.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
timeZone | string | Optional | The time zone to display date and time in. Specified as Region/City, for example: Australia/Melbourne. See the Time Zone DB for a full list of supported TZs. Defaults to the browser / device's local time |
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 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 |
use12Hour | boolean | Optional | If set to true, 12 hour time will be displayed. Defaults to the settings suggested by the current format and timeZone |
Exampleβ
- type: clock
options:
timeZone: Europe/London
format: en-GB
hideDate: false
Infoβ
No external data requests.
Weatherβ
A simple, live-updating local weather component, showing temperature, conditions and more info.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
apiKey | string | Required | Your OpenWeatherMap API key. You can get one for free at openweathermap.org |
city | string | Required | A city name to use for fetching weather. This can also be a state code or country code, following the ISO-3166 format |
units | string | Optional | The units to use for displaying data, can be either metric or imperial. Defaults to metric |
hideDetails | boolean | Optional | If set to true, the additional details (wind, humidity, pressure, etc) will not be shown. Defaults to false |
lat | number | Optional | To show weather for a specific location, you can provide the latitude and longitude coordinates. If provided, this will override the city option |
lon | number | Optional | To show weather for a specific location, you can provide the latitude and longitude coordinates. If provided, this will override the city option |
Exampleβ
- type: weather
options:
apiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
city: London
units: metric
hideDetails: true
Infoβ
- CORS: π’ Enabled
- Auth: π΄ Required
- Price: π Free plan
- Privacy: See OWM Privacy Policy
Weather Forecastβ
Displays the weather (temperature and conditions) for the next few days for a given location. Note that this requires either the free OpenWeatherMap Student Plan, or the Premium Plan.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
apiKey | string | Required | Your OpenWeatherMap API key. You can get one at openweathermap.org or for free via the OWM Student Plan |
city | string | Required | A city name to use for fetching weather. This can also be a state code or country code, following the ISO-3166 format |
numDays | number | Optional | The number of days to display of forecast info to display. Defaults to 4, max 16 days |
units | string | Optional | The units to use for displaying data, can be either metric or imperial. Defaults to metric |
hideDetails | boolean | Optional | If set to true, the additional details (wind, humidity, pressure, etc) will not be shown. Defaults to false |
Exampleβ
- type: weather-forecast
options:
city: California
numDays: 6
apiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
units: imperial
Infoβ
- CORS: π’ Enabled
- Auth: π΄ Required
- Price: π΄ Premium (free for personal use only)
- Privacy: See OWM Privacy Policy
RSS Feedβ
Display news and updates from any RSS-enabled service.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
rssUrl | string | Required | The URL location of your RSS feed |
apiKey | string | Optional | An API key for rss2json. It's free, and will allow you to make 10,000 requests per day, you can sign up here |
limit | number | Optional | The number of posts to return. If you haven't specified an API key, this will be limited to 10 |
orderBy | string | Optional | How results should be sorted. Can be either pubDate, author or title. Defaults to pubDate |
orderDirection | string | Optional | Order direction of feed items to return. Can be either asc or desc. Defaults to desc |
parseLocally | boolean | Optional | If true parse the rss feed locally instead of using the rss2json API. |
Exampleβ
- type: rss-feed
options:
rssUrl: https://www.schneier.com/blog/atom.xml
apiKey: xxxx
Infoβ
- CORS: π’ Enabled
- Auth: π Optional
- Price: π Free Plan (up to 10,000 requests / day)
- Privacy: See Rss2Json Privacy Policy
Imageβ
Displays an image.
This may be useful if you have a service (such as Grafana - see example), which periodically exports charts or other data as an image.
You can also store images within Dashy's public directory (using a Docker volume), and reference them directly. E.g. -v ./path/to/my-homelab-logo.png:/app/public/logo.png, then in the widget imagePath: /logo.png.
Similarly, any web service that serves up widgets as image can be used. E.g. you could show current star chart for a GitHub repo, with: imagePath: https://starchart.cc/Lissy93/dashy.svg.
If you'd like to embed a live screenshot, of all or just part of a website, then this can be done using API Flash.
Or what about showing a photo of the day? Try https://source.unsplash.com/random/400x300 or https://picsum.photos/400/300
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
imagePath | string | Required | The path (local or remote) of the image to display |
imageWidth | string | Optional | Specify a fixed width for rendered image. Accepts either integer value in px, or any string value with units (e.g. 420, 100px, 6.9rem) (defaults to auto) |
imageHeight | string | Optional | Specify a fixed height for rendered image. Accepts either integer value in px, or any string value with units (e.g. 420, 100px, 6.9rem) (defaults to auto) |
Exampleβ
- type: image
options:
imagePath: https://i.ibb.co/yhbt6CY/dashy.png
Infoβ
Unless image fetched from remote source, no external data request is made.
Public IPβ
Often find yourself searching "What's my IP", just so you can check your VPN is still connected? This widget displays your public IP address, along with ISP name and approx location. Data can be fetched from either IpApi.co, IP-API.com, IpGeolocation.io or IP2Location.io.
Optionsβ
All fields are optional.
| Field | Type | Required | Description |
|---|---|---|---|
provider | string | Optional | The name of the service to fetch IP address from. Can be either ipapi.co, ip-api, ipgeolocation or ip2location.io. Defaults to ipapi.co. Note, ip-api doesn't work on HTTPS, and if you set to ipgeolocation or ip2location.io then you must also provide an API key |
apiKey | string | Optional | Only required if provider is set to ipgeolocation or ip2location.io. You can get a free IPGeolocation API key here or a free IP2Location.io API key here |
Exampleβ
- type: public-ip
Or
- type: public-ip
options:
provider: ipgeolocation
apiKey: xxxxxxxxxxxxxxx
Infoβ
- CORS: π’ Enabled
- Auth: π Optional
- Price: π’ Free
- Host: Managed Instance Only
- Privacy: _See IPGeoLocation Privacy Policy or IP-API Privacy Policy or IP2Location.io Privacy Policy
IP Blacklistβ
Notice certain web pages aren't loading? This widget quickly shows which blacklists your IP address (or host, or email) appears on, using data from blacklistchecker.com.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
ipAddress | string | Optional | The IP to check. This can also be a domain/ host name or even an email address. If left blank, Dashy will use your current public IP address. |
apiKey | string | Required | You can get your free API key from blacklistchecker.com |
Exampleβ
- type: blacklist-check
options:
apiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ipAddress: 1.1.1.1
Infoβ
- CORS: π’ Enabled
- Auth: π΄ Required
- Price: π Free Plan
- Host: Managed Instance Only
- Privacy: See BlacklistChecker Privacy Policy
Domain Monitorβ
Keep an eye on the expiry dates of your domain names, using public whois records fetched from 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 |
showFullInfo | boolean | Optional | If set to true, the toggle-full-info panel will be open by default |
Exampleβ
- 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
Crypto Watch Listβ
Keep track of price changes of your favorite crypto assets. Data is fetched from CoinGecko. All fields are optional.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
assets | string | Optional | An array of cryptocurrencies, coins and tokens. See list of supported assets. If none are specified, then the top coins by sortBy (defaults to market cap) will be returned |
currency | string | Optional | The fiat currency to display price in, expressed as an ISO-4217 alpha code (see list of currencies). Defaults to USD |
sortBy | string | Optional | The method of sorting results. Can be marketCap, volume or alphabetical. Defaults to marketCap. |
limit | number | Optional | Number of results to return, useful when no assets are specified. Defaults to either all or 100 |
Exampleβ
- type: crypto-watch-list
options:
limit: 10
Or
- type: crypto-watch-list
options:
currency: GBP
sortBy: marketCap
assets:
- bitcoin
- ethereum
- monero
- cosmos
- polkadot
- dogecoin
Infoβ
- CORS: π’ Enabled
- Auth: π’ Not Required
- Price: π’ Free
- Privacy: See CoinGecko Privacy Policy
Crypto Token Price Historyβ
Shows recent price history for a given crypto asset, using price data fetched from CoinGecko
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
asset | string | Required | Name of a crypto asset, coin or token to fetch price data for, see list of supported assets |
currency | string | Optional | The fiat currency to display results in, expressed as an ISO-4217 alpha code (see list of currencies). Defaults to USD |
numDays | number | Optional | The number of days of price history to render. Defaults to 7, min: 1, max: 30 days |
chartColor | string | Optional | Color of the chart value. Defaults to --widget-text-color which inherits dashboard primary color |
chartHeight | number | Optional | The height of rendered chart in px. Defaults to 300 |
Exampleβ
- type: crypto-price-chart
options:
asset: bitcoin
currency: GBP
numDays: 7
Infoβ
- CORS: π’ Enabled
- Auth: π’ Not Required
- Price: π’ Free
- Privacy: See CoinGecko Privacy Policy
Wallet Balanceβ
Keep track of your crypto balances and see recent transactions. Data is fetched from BlockCypher
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
coin | string | Required | Symbol of coin or asset, e.g. btc, eth or doge |
address | string | Required | Address to monitor. This is your wallet's public / receiving address |
network | string | Optional | To use a different network, other than mainnet. Defaults to main |
limit | number | Optional | Limit the number of transactions to display. Defaults to 10, set to large number to show all |
Exampleβ
- type: wallet-balance
options:
coin: btc
address: 3853bSxupMjvxEYfwGDGAaLZhTKxB2vEVC
Infoβ
- CORS: π’ Enabled
- Auth: π’ Not Required
- Price: π’ Free
- Privacy: See BlockCypher Privacy Policy
Code Statsβ
Display your coding summary. Code::Stats is a free and open source app that aggregates statistics about your programming activity. Dashy supports both the public instance, as well as self-hosted versions.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
username | string | Required | Your CodeStats username |
hostname | string | Optional | If your self-hosting CodeStats, then supply the host name. By default it will use the public hosted instance |
monthsToShow | number | Optional | Specify the number of months to render in the historical data chart. Defaults to 6 |
hideMeta | boolean | Optional | Optionally hide the meta section (username, level, all-time and recent XP) |
hideHistory | boolean | Optional | Optionally hide the historical calendar heat map |
hideLanguages | boolean | Optional | Optionally hide the programming languages pie chart |
hideMachines | boolean | Optional | Optionally hide the machines percentage chart |
Exampleβ
- type: code-stats
options:
username: alicia
Infoβ
- CORS: π’ Enabled
- Auth: π’ Not Required
- Price: π’ Free
- Host: Self-Hosted or Managed
- Privacy: See Code::Stats Privacy Policy
Mullvad Statusβ
Shows your Mullvad VPN connection status, as well as server info. Fetched from am.i.mullvad.net
Optionsβ
No Options.
Exampleβ
- type: mullvad-status
Infoβ
- CORS: π’ Enabled
- Auth: π’ Not Required
- Price: π’ Free
- Host: Managed
- Privacy: See Mullvad Privacy Policy
addy.ioβ
addy.io is a free and open source mail forwarding service. Use it to protect your real email address, by using a different alias for each of your online accounts, and have all emails land in your normal inbox(es). Supports custom domains, email replies, PGP-encryption, multiple recipients and more
This widget display email addresses / aliases from addy.io. Click an email address to copy to clipboard, or use the toggle switch to enable/ disable it. Shows usage stats (bandwidth, used aliases etc), as well as total messages received, blocked and sent. Works with both self-hosted and managed instances of addy.io.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
apiKey | string | Required | Your addy.io API Key / Personal Access Token. You can generate this under Account Settings |
hostname | string | Optional | If your self-hosting addy.io, then supply the host name. By default it will use the public hosted instance |
apiVersion | string | Optional | If you're using an API version that is not version v1, then specify it here |
limit | number | Optional | Limit the number of emails shown per page. Defaults to 10 |
sortBy | string | Optional | Specify the sort order for email addresses. Defaults to updated_at. Can be either: local_part, domain, email, emails_forwarded, emails_blocked, emails_replied, emails_sent, created_at, updated_at or deleted_at. Precede with a - character to reverse order. |
searchTerm | string | Optional | A search term to filter results by, will search the email, description and domain |
disableControls | boolean | Optional | Prevent any changes being made to account through the widget. User will not be able to enable or disable aliases through UI when this option is set |
hideMeta | boolean | Optional | Don't show account meta info (forward/ block count, quota usage etc) |
hideAliases | boolean | Optional | Don't show email address / alias list. Will only show account meta info |
Exampleβ
- type: anonaddy
options:
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxx\
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
limit: 5
sortBy: created_at
disableControls: true
Infoβ
- CORS: π’ Enabled
- Auth: π΄ Required
- Price: π Free for Self-Hosted / Free Plan available on managed instance or $1/month for premium
- Host: Self-Hosted or Managed
- Privacy: See addy.io Privacy Policy
Vulnerability Feedβ
Keep track of recent security advisories and vulnerabilities, with optional filtering by score, exploits, vendor and product. All fields are optional.
Sources from: https://services.nvd.nist.gov/rest/json/cves/2.0 Docs: https://nvd.nist.gov/developers/vulnerabilities
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
cveTag | string | Optional | This parameter returns only the CVE records that include the provided cveTag. Options are disputed, unsupported-when-assigned or exclusively-hosted-service |
limit | number | Optional | The number of results to fetch. Can be between 5 and 30, defaults to 5 |
cvssV2Severity | string | Optional | This parameter returns only the CVEs that match the provided CVSSv2 qualitative severity rating. Options are LOW, MEDIUM, HIGH or CRITICAL |
cvssV3Severity | string | Optional | This parameter returns only the CVEs that match the provided CVSSv3 qualitative severity rating. Options are LOW, MEDIUM, HIGH or CRITICAL |
cvssV4Severity | string | Optional | This parameter returns only the CVEs that match the provided CVSSv4 qualitative severity rating. Options are LOW, MEDIUM, HIGH or CRITICAL |
keywordSearch | string | Optional | This parameter returns only the CVEs where a word or phrase is found in the current description |
Exampleβ
- type: cve-vulnerabilities
or
- type: cve-vulnerabilities
options:
cveTag: disputed
cvssV2Severity: CRITICAL
limit: 30
Infoβ
- CORS: π Proxied
- Auth: π’ Not Required
- Price: π’ Free
- Host: Managed
- Privacy: See CVE Details Privacy Policy