挂载的 /app/user-data 目录必须至少包含 conf.yml,否则无法正常配置;从源码部署需要 Node LTS、git 和 yarn;默认容器内监听 8080 端口,映射到宿主机的端口需自行指定。

dashy
lissy93MIT活跃维护自托管的个人仪表盘,把常用服务和书签集中到一个页面,带状态检测、小组件、主题和可视化编辑器,适合家庭实验室和团队首页。
🚀 A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more!
docker run -p 4000:8080 lissy93/dashyREADME 未说明具体硬件要求;提供 amd64 和 arm64 多架构 Docker 镜像,可部署在 Docker、裸机或云平台。
自托管个人仪表盘,把家庭实验室的应用、链接和状态集中到一个可定制的首页
自托管的个人仪表盘,把常用服务和书签集中到一个页面,带状态检测、小组件、主题和可视化编辑器,适合家庭实验室和团队首页。
核心能力
- 用 YAML 单文件配置页面、分组和条目,也可在 UI 中直接编辑保存
- 通过 HTTP 状态码和 ICMP ping 实时监控各应用与主机
- 内置多种主题、图标包和自定义 CSS,支持 UI 配色编辑
- 支持多页面、工作区视图和极简启动页等多种浏览方式
- 可选多用户认证、SSO 和加密云端备份恢复
容易踩的坑
- 4.9.0Release 4.9.0最新正式版2026-10-23 · 2026-10-23 13:13 UTC
What's Changed
✨ New Features
- Add option to open workspace sidebar items in new tab by @sebastianruff in https://github.com/lissy93/dashy/pull/2363
- Shiny new workspace view by @lissy93 in https://github.com/lissy93/dashy/pull/2404
🦋 Bug Fixes
- Fix config files being readable without login via encoded URLs by @lissy93 in https://github.com/lissy93/dashy/pull/2387
- Fix Firefix col counting, and rss in sample config by @lissy93 in https://github.com/lissy93/dashy/pull/2405
🎨 Themes and Styling
- feat(theme): add liquid-glass built-in theme by @KeuqS in https://github.com/lissy93/dashy/pull/2385
🌐 Localization
- Complete Arabic translation and fix broken Hindi placeholders by @Mohamed-Almarag in https://github.com/lissy93/dashy/pull/2394
- Complete and polish Chinese (zh-CN) translations by @zcq100 in https://github.com/lissy93/dashy/pull/2399
📕 Documentation
- Add warning guest access http auth by @lissy93 in https://github.com/lissy93/dashy/pull/2389
- Updates troubleshooting guide by @lissy93 in https://github.com/lissy93/dashy/pull/2392
- Adds translation credits to the readme by @lissy93 in https://github.com/lissy93/dashy/pull/2395
- Update sponsors in readme by @lissy93 in https://github.com/lissy93/dashy/pull/2406
📦 Dependencies
- Bump vitest from 5.0.3 to 5.0.4 in the vitest group by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2396
- Bump happy-dom from 20.14.5 to 21.0.1 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2398
- Bump the minor-and-patch group across 1 directory with 15 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2397
- Bump vitest from 5.0.4 to 5.0.5 in the vitest group by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2402
- Bump the minor-and-patch group with 11 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2403
New Contributors
- @Mohamed-Almarag made their first contribution in https://github.com/lissy93/dashy/pull/2394
- @sebastianruff made their first contribution in https://github.com/lissy93/dashy/pull/2363
Full Changelog: https://github.com/lissy93/dashy/compare/4.8.0...4.9.0
- 4.8.0Release 4.8.02026-10-09 · 2026-10-09 16:53 UTC
查看更新说明
What's Changed
✨ New Features
- Item aliases for quick launching by @lissy93 in https://github.com/lissy93/dashy/pull/2362
🦋 Bug Fixes
- Fixes stock price history widget by @lissy93 in https://github.com/lissy93/dashy/pull/2352
- Rebuilt Pi-Hole v6 widget to account for new pi-hole API by @lissy93 in https://github.com/lissy93/dashy/pull/2356
- Fixes APOD widget for video days, missing fields and proxy by @lissy93 in https://github.com/lissy93/dashy/pull/2365
- Fixes Sports Scores widget's dead default API key by @NotAFlightRisk in https://github.com/lissy93/dashy/pull/2367
🌐 Localization
- Adds missing Turkish (tr) translations by @qwist1233-cpu in https://github.com/lissy93/dashy/pull/2346
- Fix {brukernavn} placeholder in Norwegian sign-in welcome by @Na5co in https://github.com/lissy93/dashy/pull/2353
- Adds Indonesian (id) translation by @Yoruxyv in https://github.com/lissy93/dashy/pull/2359
- Completes German and Italian translations by @Juice-de-Orange in https://github.com/lissy93/dashy/pull/2375
- Add Kiswahili (sw) translation by @Daniel-wambua in https://github.com/lissy93/dashy/pull/2380
- fix(i18n): complete Turkish APOD translation by @KeuqS in https://github.com/lissy93/dashy/pull/2384
📕 Documentation
- Adds Hostinger as deployment option by @lissy93 in https://github.com/lissy93/dashy/pull/2350
- Dockerfile UID changing docs by @lissy93 in https://github.com/lissy93/dashy/pull/2355
📦 Dependencies
- Bump the minor-and-patch group with 9 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2347
- Updates Vitest and Node versions by @lissy93 in https://github.com/lissy93/dashy/pull/2349
- Bump the minor-and-patch group with 11 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2361
- Bump dompurify from 3.4.15 to 3.4.16 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2368
- Bump fast-uri from 3.1.7 to 3.1.8 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2366
- Bump the github-actions group with 3 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2369
- Bump vitest from 5.0.1 to 5.0.2 in the vitest group by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2370
- Bump @sentry/vue from 10.75.1 to 11.1.0 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2372
- Bump the minor-and-patch group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2371
- Bump source-map-js from 1.2.1 to 1.2.2 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2378
- Bump proxy-addr from 2.0.7 to 2.0.8 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2377
- Bump postcss-selector-parser from 7.1.4 to 7.1.6 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2379
- Bump vitest from 5.0.2 to 5.0.3 in the vitest group by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2381
- Bump the minor-and-patch group with 11 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2382
- Bump vite-plugin-pwa from 1.3.0 to 2.0.0 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2383
New Contributors
- @qwist1233-cpu made their first contribution in https://github.com/lissy93/dashy/pull/2346
- @Na5co made their first contribution in https://github.com/lissy93/dashy/pull/2353
- @Yoruxyv made their first contribution in https://github.com/lissy93/dashy/pull/2359
- @NotAFlightRisk made their first contribution in https://github.com/lissy93/dashy/pull/2367
- @Juice-de-Orange made their first contribution in https://github.com/lissy93/dashy/pull/2375
- @Daniel-wambua made their first contribution in https://github.com/lissy93/dashy/pull/2380
- @KeuqS made their first contribution in https://github.com/lissy93/dashy/pull/2384
Full Changelog: https://github.com/lissy93/dashy/compare/4.7.0..
- 4.7.0Release 4.7.02026-09-17 · 2026-09-17 16:14 UTC
查看更新说明
Dashy 4.7.0... Just a few small fixes, features, updates and incremental improvements :)
What's Changed
✨ New Features
- Adds support for status txt overrides in uptime widgets by @lissy93 in https://github.com/lissy93/dashy/pull/2323
- Adds optional allowInsecure prop for widgets to skip cert verification by @lissy93 in https://github.com/lissy93/dashy/pull/2328
- Adds calendar widget by @lissy93 in https://github.com/lissy93/dashy/pull/2331
- Adds htmlSrc option to embed widget by @lissy93 in https://github.com/lissy93/dashy/pull/2318
- Better Uptime Kuma widget by @lissy93 in https://github.com/lissy93/dashy/pull/2316
🦋 Bug Fixes
- Performance improvment for status check, and saftey of ping check by @lissy93 in https://github.com/lissy93/dashy/pull/2340
- SABnzbd widget mb/s to MB/s by @lissy93 in https://github.com/lissy93/dashy/pull/2344
- Fix weather widget details not showing until manually toggled by @jamalkamaladdin in https://github.com/lissy93/dashy/pull/2335
🛠️ Build, CI and Refactors
- Docker tag from package.json version by @lissy93 in https://github.com/lissy93/dashy/pull/2325
- Label PRs for the changelog generation by @lissy93 in https://github.com/lissy93/dashy/pull/2322
🌐 Translations
- Adds Azerbaijani (az) translation by @jamalkamaladdin in https://github.com/lissy93/dashy/pull/2334
📝 Docs
- docs: fix typo independantly -> independently by @vaibhav8a in https://github.com/lissy93/dashy/pull/2317
- Adds @alexNMD's NMDashboard to showcase by @lissy93 in https://github.com/lissy93/dashy/pull/2320
📦 Dependencies
- Bump nanoid from 3.3.17 to 3.3.18 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2297
- Bump vitest from 4.1.10 to 4.1.11 in the vitest group by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2314
- Bump the minor-and-patch group across 1 directory with 11 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2315
- Bump the github-actions group with 4 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2326
- Bump fast-uri from 3.1.5 to 3.1.7 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2329
- Bump qs from 6.15.3 to 6.16.0 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2330
- Bump the minor-and-patch group with 13 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2333
- Bump the minor-and-patch group with 13 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2338
Full Changelog: https://github.com/lissy93/dashy/compare/4.6.0...4.7.0
- 4.6.0Release 4.6.02026-08-21 · 2026-08-21 12:36 UTC
查看更新说明
Happy Friday everyone! 4.6.0 is out, nothing major here just a few QoL features, fixes, bumps and docs :)
What's Changed
✨ Features
- Added ability to sort items by Provider and by Item ID by @hypermagicmountain in https://github.com/lissy93/dashy/pull/2243
- Adds OIDC post-logout redirect URI support by @lissy93 in https://github.com/lissy93/dashy/pull/2280
- Advanced schema support by @lissy93 in https://github.com/lissy93/dashy/pull/2304
- Adds option to skip auto-guest-login for OIDC by @lissy93 in https://github.com/lissy93/dashy/pull/2306
🐛 Bug Fixes
- Fixes OOM crash from unclosed secureConnect listeners by @lissy93 in https://github.com/lissy93/dashy/pull/2283
- Fixes search not updating on mobile by @lissy93 in https://github.com/lissy93/dashy/pull/2299
🌐 Internationalization
- Extracts some hard-coded strings by @lissy93 in https://github.com/lissy93/dashy/pull/2296
- add missing DE translations by @vmario89 in https://github.com/lissy93/dashy/pull/2285
- Complete missing Traditional Chinese UI translations by @nrps9909 in https://github.com/lissy93/dashy/pull/2292
- Adds missing DE translations for edit item by @lissy93 in https://github.com/lissy93/dashy/pull/2298
📝 Docs
- Update pricing information in widgets documentation for WhoApi by @rsb-developer in https://github.com/lissy93/dashy/pull/2064
- Adds config not loading troubleshooting by @lissy93 in https://github.com/lissy93/dashy/pull/2301
⬆️ Dependencies
- Bump the minor-and-patch group with 2 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2281
- Bump the github-actions group with 5 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2284
- Bump fast-uri from 3.1.4 to 3.1.5 by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2288
- Bump the minor-and-patch group with 9 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2289
- Bump the minor-and-patch group with 7 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2300
- Bump the minor-and-patch group with 6 updates by @dependabot[bot] in https://github.com/lissy93/dashy/pull/2305
New Contributors
- @hypermagicmountain made their first contribution in https://github.com/lissy93/dashy/pull/2243
- @vmario89 made their first contribution in https://github.com/lissy93/dashy/pull/2285
- @nrps9909 made their first contribution in https://github.com/lissy93/dashy/pull/2292
Full Changelog: https://github.com/lissy93/dashy/compare/4.5.0...4.6.0
- 4.5.0Release 4.5.02026-07-26 · 2026-07-26 15:17 UTC
查看更新说明
Dashy 4.5.0 is out!
For full details, see discussion #2277 - any questions or feedback, drop them there :)
✨ New features
- Drag and drop editing. Grab any section, item or widget and drag it around to reorder or move it.
- A new Live Tennis widget. Live scores from the ATP and WTA tours, updating as you watch.
- The GitHub stats widget is rebuilt. It now uses GitHub's own API, so it's more reliable, and you can add a token to raise the rate limit.
- Nicer numbers in the custom-api widget. New formats for bytes, bitrate and duration, plus scaling, prefixes, suffixes and swapping raw values for your own labels.
- Long item titles look better. They scroll when you hover and show the full text in a tooltip, instead of getting cut off.
- A logout redirect option. Send people to a page of your choice after they log out, handy when you're behind an auth proxy.
- You can turn off the proxy endpoints. Set the
DISABLE_PROXY_ENDPOINTSenv var if you don't need Dashy's built-in CORS proxy. - Client-side only OIDC. A new option to skip the server-side token checks, for setups that want OIDC purely in the browser.
🐛 Bug fixes
- Edits save to the right place. Fixed section and widget edits sometimes being saved to the wrong section.
- The left-click menu is back. The left-click context menu on items works again.
- The config editor opens reliably. Fixed the Edit App Config menu occasionally failing to open.
- Expired sessions now log you out. No more looking logged in when your session has actually expired.
- Netlify status checks work again. Fixed the serverless functions that had broken on newer Node versions.
- Steadier status checks. Fixed a rounding glitch on short check intervals, plus some general reliability tweaks.
- Saved config shows up straight away. Changes saved on the server now apply right away, without needing a refresh.
- Friendlier OIDC handling. Dashy warns instead of breaking if your login provider fails to hand back a token.
💥 Changes which might impact you (but probably won't)
Node version updated to 24
We've upgraded to the lates Node version. So Dashy now expects Node 24 LTS or newer (24.11.0+). Node 22 LTS versions above 22.18.0 are still supported. If you get an "" error, I've explained the solution here (TL;DR: Switch node version with nvm, or just pass the
--ignore-enginesflag to ignore).Dropped arm/v7 support
Our main/official Docker image no longer builds nativity for 32-bit ARM/v7 architectures. This will only affect you if you're on a 32-bit Raspberry Pi 2 or similar board. We did this because the latest Alpine images have dropped arm/v7 support, and also, emulating arm/v7 with QEMU in our docker build workflow was slow, heavy and flaky. Without it, a full docker build is now down to ~2 mins, reliable and with minimal resource usage.
Browser support
Dashy now officially only supports Chrome 111+, Firefox 114+, Safari 16.4+. So basically any browser released in 2023 or later. That limitation came from upgrading to Vite 8, which was necessary for performance and security.
Updated key names for show/hide sections and items for OIDC users/groups
I've simplified the config to controlling which users or groups can see which sections and items. Under
sectionanditemthere's adisplayDataobject. This now has options for:showForGroups,showForRoles,hideForGroupsandhideForRoles. Each of these accept an array. For an update example, see here. The docs and schema have been updated accordingly. Note that the old way of doing this will continue to work, but will be dropped in the next major version.Section names must be present and uni
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
-
Getting Started
-
Feature Overview
-
Community
Features 🌈
- 📃 Support for multiple pages
- 🚦 Real-time status monitoring for each of your apps/links/hosts
- 📊 Use widgets to display info and dynamic content from self-hosted services
- 🔎 Instant search by name, domain, or tags + customizable hotkeys & keyboard shortcuts
- 🎨 Many built-in color themes, with UI color editor and support for custom CSS
- 🧸 Many icon options - Font-Awesome, homelab icons, auto-fetching Favicon, images, emojis, etc.
- 💂 Optional authentication with multi-user access, configurable privileges, and SSO support
- 🌎 Multi-language support, with 30+ human-translated languages, and more on the way
- ☁ Optional, encrypted, free off-site cloud backup and restore feature available
- 💼 A workspace view, for easily switching between multiple apps simultaneously
- 🛩️ A minimal view, for use as a fast-loading browser Startpage
- 🖱️ Choose app launch methods: new tab, same tab, clipboard, pop-up modal, or open in workspace view
- 📏 Customizable layout, sizes, text, component visibility, sort order, behavior, etc.
- 🖼️ Options for a full-screen background image, custom nav-bar links, HTML footer, title, etc.
- 🚀 Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
- ⚙️ Easy single-file YAML-based configuration, and option to configure app through the UI
- ✨ Under active development with improvements and new features added regularly
- 🤏 Small bundle size, fully responsive UI, and PWA for basic offline access
- 🆓 100% free and open-source
- 🔐 Strong focus on privacy
- 🌈 And loads more...
Demo ⚡
Live Instances: Demo (Live Demo) ┆ Dev Preview (Dev Preview)
Screenshots: Checkout the Showcase, to see example dashboards from the community
Try it yourself: docker run -p 8080:8080 lissy93/dashy
Getting Started 🚀
For full setup instructions, see: Deployment
Deploying from Docker Hub 🐳
You will need Docker installed on your system
docker run -p 4000:8080 lissy93/dashy
Or
docker run -d \
-p 4000:8080 \
-v /path/to/your/user-data:/app/user-data \
--name my-dashboard \
--restart=always \
lissy93/dashy:latest
To use with compose, see our sample 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 distributed both on DockerHub (lissy93/dashy) and GHCR (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 and arm64).
Once you've got Dashy running, see the docs for configuration references and usage guides.
Deploying from Source 🔨
You'll need up-to-date Node LTS installed, as well as git and yarn enabled.
- Clone the Repo:
git clone https://github.com/Lissy93/dashy.gitandcd dashy - Configuration: Fill in your settings in
./user-data/conf.yml - Install dependencies:
yarn - Build:
yarn build - Run:
yarn start
See docs: Full list of Dashy's 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 Hostinger
- Deploy to Netlify
- Deploy to Vercel
- Deploy to Render
- Deploy to Railway
- Deploy to GCP
- Deploy to Easypanel
- Deploy to EdgeOne
For more 1-click cloud deployments, see Cloud Deployment
Configuring 🔧
For full configuration documentation, see: Configuring
Dashy is configured through a YAML file, located at ./user-data/conf.yml. In addition, you can find a complete list of available options in the Configuring Docs. The config can also be edited and saved directly through the UI.
Theming 🎨
For full theming documentation, see: Theming
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.
Icons 🧸
For full iconography documentation, see: Icons
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, selfh.st/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
Status Indicators 🚦
For full monitoring documentation, see: Status Indicators
Dashy has two optional features to check if each app/service or host is up and responding, then display a small status indicator icon. Hovering over it will show additional stats like response time and status code.
App/Service status is checked by calling an URL and analyzing its HTTP response code. Host status is checked by sending a real ping ICMP request to the host. Both checks can be done at the same time on the same item. In this case, two status indicators will show up and behave independently according to the global and item settings for each feature.
Status indicators can be globally enabled by setting appConfig.statusCheck: true for app/service and appConfig.pingCheckEnabled: true for hosts or enabled/disabled on a per-item basis. Statuses are checked on page load, but you can allow continuous polling by specifying a time interval between checks, in seconds under appConfig.statusCheckInterval and appConfig.pingCheckInterval. You can also use a different endpoint for app/service status checking, with statusCheckUrl, and if needed, pass in custom headers under statusCheckHeaders.
Widgets 📊
For full widget documentation, see: Widgets
You can display dynamic content from services in the form of widgets. There are several pre-built widgets available for showing useful info, and integrations with commonly self-hosted services, but you can also easily create your own for almost any app.
Authentication 🔐
For full authentication documentation, see: Authentication
Dashy has full support for secure single-sign-on using Keycloak or any OIDC provider for secure, easy authentication, see setup docs 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.
appConfig:
auth:
users:
- user: alicia
hash: 4D1E58C90B3B94BCAD9848ECCACD6D2A8C9FBC5CA913304BBA5CDEAB36FEEFA3
type: admin
Other access control systems are also supported, see the Alternative Auth Methods docs.
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.
Opening Methods 🖱️
For full documentation on views and opening methods, see: Alternate Views
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 tabnewtab- The app will be launched in a new tab (or use Ctrl + Click)newwindow- The app will be launched in a new browser windowmodal- Launch app in a resizable/ movable popup modal on the current page (or use Alt + Click)workspace- Changes to Workspace view and launches appclipboard- Copy the app's URL to your system clipboardparent- Opens in the parent browsing context, if Dashy is nested in an iframetop- Opens in the top-most browsing context, useful if you're accessing Dashy through an iframe
Searching and Shortcuts 🔎
For full documentation on searching, see: Searching & Shortcuts
Quickly finding and launching applications is the primary aim of Dashy. To that end, instant search and customizable keyboard shortcuts are built-in.
To start filtering, start typing—no need to select the search bar or use any special key. Then use either the tab key or arrow keys to select and move between results, and hit enter to launch the currently selected application.
For apps that you use regularly, you can set a custom keybinding. Use the hotkey parameter on a certain item to specify a numeric key between 0 - 9. You can then launch that app by just pressing that key.
You can also add custom tags to a given item to make finding them based on keywords easier. For example, in the following example, searching for 'Movies' will show 'Plex'
items:
- title: Plex
hotkey: 8
icon: favicon
description: Media library
url: https://plex.lab.local
tags: [ movies, videos, music ]
To search the web directly through Dashy, just press enter after typing your query. Options for web search are set under appConfig.webSearch. There is built-in support for 10+ search engines, or use your own custom provider or self-hosted instance. With the web search, you can also define your bangs to redirect results to any given app, website, or search engine, when the query is preceded with a certain character sequence (usually beginning in /, ! or :).
webSearch:
searchEngine: duckduckgo
openingMethod: newtab
searchBangs:
/r: reddit
/w: wikipedia
/s: https://whoogle.local/search?q=
':wolf': wolframalpha
':so': stackoverflow
':git': github
Hit Esc at any time to close any open apps, clear the search field, or hide any modals.
Config Editor ⚙️
For full config documentation, see: Configuring
As well as passing in a YAML config file, you can also configure the app directly through the UI and preview changes live.
To edit any section or item, right-click on it, and select "Edit", or enter the Edit Mode (using the Pen icon in the top-right), then click any part of the page to edit. Changes will be visible immediately but will not be saved until clicking "Save to Disk" or "Save Locally".
Under the config menu, you can export, view, backup, or reset app config and edit the raw config file in a text editor with built-in schema validation. It's recommended to keep a backup of your config.
Cloud Backup & Sync ☁
For full backup documentation, see: Cloud Backup & Sync
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 using crypto.js 's AES method). The data is then sent to a Cloudflare worker and stored in a KV data store.
Language Switching 🌎
For full internationalization documentation, see: Multi-Language Support
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), as seen below, e.g. language: de.
Supported Languages
- 🇬🇧 English:
en- Default - 🇬🇧 English (British):
en-GB - 🇦🇪 Arabic:
ar- Contributed by @kayedspace and @Mohamed-Almarag - 🇦🇿 Azerbaijani:
az- Contributed by @jamalkamaladdin - 🇧🇩 Bengali:
bn- Contributed by @soaibsafi - 🇧🇬 Bulgarian:
bg- Contributed by @asenov - 🇨🇳 Chinese:
zh-CN- Contributed by @FormatToday - 🇨🇿 Czech:
cs- Contributed by @Tuzi555 - 🇩🇰 Danish:
da- Contributed by @lordpansar - 🇳🇱 Dutch:
nl- Contributed by @evroon - 🇫🇷 French:
fr- Contributed by @EVOTk - 🇩🇪 German:
de- Contributed by @Niklashere - 🇬🇷 Greek:
el- Contributed by @aviolaris - 🇮🇳 Hindi:
hi- Auto-generated (needs human review!) - 🇭🇺 Hungarian:
hu- Contributed by @apgyorfi - 🇮🇩 Indonesian:
id- Contributed by @Yoruxyv - 🇮🇹 Italian:
it- Contributed by @alexdelprete - 🇯🇵 Japanese:
ja- Contributed by @oka4shi - 🇰🇷 Korean:
ko- Contributed by @Bogyie - 🇰🇬 Kyrgyz:
ky- Contributed by @nulpek - 🇳🇴 Norwegian Bokmål:
nb- Contributed by @rubjo - 🇵🇱 Polish:
pl- Contributed by @skaarj1989 - 🇵🇹 Portuguese:
pt- Contributed by @LeoColman - 🇷🇴 Romanian:
ro- Contributed by @z3r0l1nk - 🛰️ Galician:
gl- Contributed by @pvillaverde - 🇷🇺 Russian:
ru- Contributed by @sasetz - 🇸🇰 Slovak:
sk- Contributed by @Smexhy - 🇸🇮 Slovenian:
sl- Contributed by @UrekD - 🇪🇸 Spanish:
es- Contributed by @lu4t - 🇸🇪 Swedish:
sv- Contributed by @BOZG - 🇰🇪 Kiswahili:
sw- Contributed by @Daniel-wambua - 🇹🇼 Traditional Chinese:
zh-TW- Contributed by @stanly0726 - 🇹🇷 Turkish:
tr- Contributed by @imsakg - 🇺🇦 Ukrainian:
uk- Contributed by @allozavrr - 🏴☠️ Pirate:
pirate- Contributed by @Lissy93
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. Since any missing text will fall back to English, you don't need to translate it all.
Multi-Page Support 📃
For full multi-page documentation, see: Pages & Sections
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 /app/user-data), or remote (located anywhere accessible).
pages:
- name: Networking Services
path: 'networking.yml'
- name: Work Stuff
path: 'work.yml'
Or
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 LTS (22.22+, 24.15+ or 26+).
If running in Docker, the image supports amd64 and arm64 (32-bit ARM is not supported).
The hardware requirements vary depending on where and how you are running Dashy. Generally speaking, on a bare-metal system or Docker container, 256MB of memory should be more than enough, and around 250MB of disk space, plus whatever your own assets need.
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 runs well on low-powered ARM-based single board computers, such as a Raspberry Pi (tested on Pi 3)
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. If you've found something which isn't working as it should, please raise a bug by opening a ticket.
It's best to check the docs, prior issues and our dedicated troubleshooting guide first.
Supporting Dashy 💖
For full details and other ways you can help out, see: Contributing
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
- Donate a small amount by Sponsoring @Lissy93 on GitHub and receive some extra perks!
- Share your dashboard in the 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
Credits 🏆
For a complete list of credits, and attributions to packages used within Dashy, see: Credits
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!
Contributors
Developing 🧱
For full development documentation, see: Developing
Before getting started, you'll need Git, Node and optionally Yarn (run npm i -g yarn) installed.
To set up the development environment:
- Get Code:
git clone https://github.com/Lissy93/dashy.gitandcd dashy - Install dependencies:
yarn - Start dev server:
yarn dev - Open the browser:
http://localhost:8080
When you're ready, you can build the production app with yarn build, and then run it with yarn start
If you're new to web development, I've put together a short list of resources to help beginners get started
Documentation 📘
For full docs, see: Documentation Contents
Running Dashy
- 💨 Quick Start - TDLR guide on getting Dashy up and running in under 5 minutes
- 🚀 Deployment - Full guide on setting up Dashy on various different environments
- 🔧 Configuring - Complete list of all available options in the config file
- 💻 Management - Managing your app, updating, security, web server configuration, etc
- 🚒 Troubleshooting - Common errors and problems, and how to fix them
Feature Docs
- 🛡️ Authentication - Guide to setting up authentication to protect your dashboard
- 🌈 Alternate Views - Outline of available pages / views and item opening methods
- 💾 Backup & Restore - Guide to backing up config with Dashy's cloud sync feature
- 🧸 Icons - Outline of all available icon types for sections and items, with examples
- 🌐 Multi-Language Support - Switching languages, and adding a new locales
- 🚦 Status Indicators - Using Dashy to monitor uptime and status of your apps, services and hosts
- 🔍 Searching & Shortcuts - Searching, launching methods + keyboard shortcuts
- 🎨 Theming - Complete guide to applying, writing and modifying themes + styles
- 📊 Widgets - List of all dynamic content widgets, with usage guides and examples
Development and Contributing
- 🧱 Developing - Running Dashy development server locally, and general workflow
- 🛎️ Development Guides - Common development tasks, to help new contributors
- 💖 Contributing - How to contribute to Dashy
- 🌟 Showcase - See how others are using Dashy, and share your dashboard
- 🏆 Credits - Shout out to the amazing people who have contributed so far
- 🗞️ Release Workflow - Info about releases, CI and automated tasks
Misc
- 🔐 Privacy - List of all network requests and data storage
- 🛡️ Security - Security features, threat model, and hardening resources
- 📄 License - Copy of the MIT License
- 📏 Code of Conduct - Contributor Covenant Code of Conduct
Alternatives 🙌
A few self-hosted web apps serve a similar purpose to Dashy. If you're looking for a dashboard, and Dashy doesn't meet your needs, I highly recommend you check these projects out!
- Flame by @pawelmalak (
MIT) - HomeDash2
- Homer (
Apache License 2.0) - Organizr (
GPL-3.0 License) - Heimdall (
MIT) - Smashing (
MIT) - See more 👉 Awesome Self-Hosted
License 📜
Dashy is Licensed under MIT X11
Copyright © Alicia Sykes <https://aliciasykes.com>
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
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, Dashy shall not be used in advertising or otherwise
to promote the sale, use, or other dealings in this Software without prior written
authorization from the repo owner.
TDLR; You can do whatever you like with Dashy: use it in private or commercial settings, redistribute and modify it. But you must display this license and credit the author. There is no warranty that this app will work as expected, and the author cannot be held liable for anything that goes wrong. For more info, see TLDR Legal's Explanation of MIT