What Dashy Actually Does
Dashy is an open-source, self-hosted dashboard that puts all your web services, internal tools, and bookmarks behind a single, customizable start page – no cloud account required, no data leaving your server.

Before You Install: What You Need
Dashy runs well on anything from a Raspberry Pi 4 to a full home server. The minimum requirements are modest: a machine with at least 1GB of RAM, Docker installed, and a stable local IP address or domain name pointing to that host. If you are running multiple self-hosted services already, you probably have everything in place. If you want Dashy accessible outside your home network, consider putting it behind a reverse proxy with authentication – pairing it with a tool like Pangolin as a self-hosted tunnel and auth gateway is one clean way to handle that exposure safely.
Before pulling the Docker image, decide where your configuration file will live. Dashy reads everything – your tiles, sections, themes, and widget settings – from a single YAML file called conf.yml. Creating a dedicated directory for it before the container starts saves you from permission headaches later. Something like /opt/dashy/config/ works fine. Set the ownership of that directory to the user running Docker, or you will find the container cannot write back any changes you make through the UI.
Port planning matters too. Dashy defaults to port 8080 inside the container, and you will map that to whatever external port suits your setup. If you already have something sitting on 8080, pick an unused port now rather than troubleshooting a conflict after the fact. A quick ss -tlnp or netstat -tuln gives you a clear picture of what is already claimed on your host machine.
One more thing worth doing before the install: grab the sample configuration from the official Dashy GitHub repository. There is a conf.yml example in the root of the repo that shows correct YAML structure for sections, items, and icons. Copy it into your config directory and edit it rather than writing from scratch. YAML is whitespace-sensitive, and working from a known-good template cuts down on the most common startup errors by a wide margin.
Installing and Configuring Dashy
Pull the image and spin up the container with a single Docker command. The exact invocation looks like this:
docker run -d -p 4000:8080 -v /opt/dashy/config/conf.yml:/app/user-data/conf.yml --name dashy --restart unless-stopped lissy93/dashy:latest
That command maps port 4000 on the host to the container’s internal 8080, mounts your config file at the expected path, names the container for easy management, and sets it to restart automatically unless you explicitly stop it. Give it thirty seconds after launch, then open a browser and navigate to http://your-server-ip:4000. You should see the default Dashy interface populate with whatever sections and items you defined in conf.yml. If the page loads but your tiles are missing, the most common culprit is a volume mount path mismatch – double-check that the file path on the left side of the -v flag actually exists on your host and contains valid YAML.
The configuration structure is straightforward once you understand the hierarchy. At the top level you have pageInfo (title, nav links, footer), appConfig (theme, layout, auth settings), and sections (the actual grid of tiles). Each section contains an array of items, and each item needs at minimum a title and a url. Icons are optional but make the dashboard far more usable at a glance – Dashy supports favicons fetched automatically, Material Design icons prefixed with mdi-, and self-hosted icons if you mount an additional directory into the container.

Dashy ships with a built-in GUI editor accessible at /edit. It lets you add, reorder, and delete items without touching the YAML directly. Changes made through the editor write back to the mounted conf.yml, so your edits persist across container restarts. That said, the GUI editor works best for small adjustments. When you are building out a full dashboard with ten or more sections and custom widget configurations, editing the YAML file directly in a text editor gives you more control and makes it easier to duplicate blocks cleanly.
Widgets are where Dashy goes beyond a simple bookmarks page. The project includes built-in widgets for weather (via Open-Meteo, no API key needed), system clock, RSS feeds, GitHub stats, Pihole summaries, and a handful of others. Adding a widget to a section looks almost identical to adding a standard tile, except the item entry uses a widget key with a type value. For example, a weather widget pointing at a specific latitude and longitude requires only four lines of YAML and no account registration. The RSS widget accepts any valid feed URL and renders headlines inline on the dashboard, which makes it useful for pulling in monitoring alerts or news without opening another tab.
Authentication is disabled by default. For a dashboard running only on a local network you trust completely, that is fine. For anything reachable over the internet, enable the built-in auth under appConfig by setting auth.users with hashed passwords – Dashy provides a hash generation utility at /login#hash when the container is running. Multi-user support is available, with configurable access levels per user. This is not enterprise-grade access control, but it is more than sufficient for personal or small team use.
After the Container Is Running
Once Dashy is live and populated, the maintenance overhead is essentially zero. Version updates are as simple as pulling the latest image, stopping the current container, and running the same launch command again. Because your entire configuration lives in the mounted conf.yml outside the container, no data is lost during updates – the new container picks up exactly where the old one left off. Backing up the dashboard means backing up one file.

The community around Dashy maintains a growing library of themes, and the project itself is still actively developed on GitHub. Custom themes are loaded by dropping a CSS file into a mounted directory and referencing it in appConfig. If none of the included layouts match what you want, Dashy also supports a workspace view mode that replaces the tile grid with a persistent iframe, so clicking a service opens it in the lower half of the same browser window rather than navigating away. Whether that is more useful than separate tabs comes down entirely to how you actually work – and that is a question worth answering before you spend time tweaking the layout.
Frequently Asked Questions
Does Dashy require an internet connection to work?
No. Dashy runs entirely on your local server. Some widgets like weather pull from external APIs, but the core dashboard functions fully offline.
Can I run Dashy without Docker?
Yes. Dashy can be built and run with Node.js directly, but Docker is the recommended method because it handles dependencies automatically and simplifies updates.





