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
- Live Tennis
- 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
- 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
- Ntfy stream
- 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 |
cityId | number | Optional | An OpenWeatherMap numeric city ID, used to disambiguate cities that share a name. You can find the ID in the URL of the city's page on openweathermap.org (e.g. 2643743 for London, GB). If provided, this will override the city option |
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 and cityId options |
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 and cityId options |
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 |
cityId | number | Optional | An OpenWeatherMap numeric city ID, used to disambiguate cities that share a name. You can find the ID in the URL of the city's page on openweathermap.org (e.g. 2643743 for London, GB). If provided, this will override the city option |
lat | number | Optional | Latitude for a specific location. If provided alongside lon, this will override the city and cityId options |
lon | number | Optional | Longitude for a specific location. If provided alongside lat, this will override the city and cityId options |
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β
Displays your public IP address, ISP and approximate location.
Optionsβ
| Field | Type | Required | Description |
|---|---|---|---|
provider | string | Optional | One of ipinfo (default), freeipapi, ipquery, ip-api, or ipgeolocation. See the table below |
apiKey | string | Optional | Required for ipgeolocation. Optional for ipinfo (a free token raises the rate limit from ~1k/day to ~50k/month) |
hideLocation | boolean | Optional | Set to true to hide the flag, ISP name and city/region β only the IP address is shown. Defaults to false |
Exampleβ
Default (no options needed)
- type: public-ip
Using ip-api via the proxy (gets server IP, because of useProxy)
- type: public-ip
useProxy: true
options:
provider: ip-api
Using ipgeolocation with a key:
- type: public-ip
options:
provider: ipgeolocation
apiKey: xxxxxxxxxxxxxxx
Setting useProxy: true makes the lookup happen from Dashy's server instead of your browser, so the upstream API returns the public IP of the machine running Dashy, whereas without useProxy it will show your public IP.
Supported providersβ
| Provider | Key | Proxy | Notes |
|---|---|---|---|
ipinfo (default) | π’ Not needed / π Optional | π’ Not needed | Service from ipinfo.io. Keyless gives ~1k/day; a free token raises this to ~50k/month. Sometimes blocked by adblockers. |
freeipapi | π’ Not needed | π’ Not needed | Keyless, 60 req/min via freeipapi.com. |
ipquery | π’ Not needed | π’ Not needed | Modern keyless API from ipquery.io. Includes VPN/Tor/datacenter risk flags in the raw response. |
ip-api | π’ Not needed | π΄ Required | ip-api.com is HTTP-only on the free tier, so the proxy is needed to avoid mixed-content errors. |
ipgeolocation | π΄ Required | π’ Not needed | Get a free key from ipgeolocation.io. |
Infoβ
- CORS: π’ Enabled (only
provider: ip-apineeds the proxy) - Auth: π Optional (only
ipgeolocationrequires a key, andipinfois optional) - Price: π’ Free
- Host: Managed Instance Only
- Privacy: See the policy for whichever provider you choose: freeipapi.com, ipinfo.io, ipquery.io, ip-api.com, IPGeoLocation.
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 | Get your API key from my.whoapi.com, requires a paid plan |
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: π΄ Paid only, no free plan
- 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 |