What Dasherr Actually Is
Dasherr is a lightweight, single-file browser startpage you can self-host in minutes. No database, no backend services, no login system – just a clean HTML/JavaScript interface that sits on your server and replaces the default new tab experience with something you actually control.

Why a Self-Hosted Startpage Makes Sense
Every browser ships with a default new tab page that serves the browser vendor’s interests, not yours. Chrome shows Google Discover. Firefox shows sponsored shortcuts. Edge has a news feed nobody asked for. Swapping that out for a self-hosted startpage means your browser opens to exactly what you want – your bookmarks, your shortcuts, your layout – without telemetry attached.
Dasherr’s appeal sits in its simplicity. The entire application is a single index.html file paired with a config.yml. There’s no Node.js runtime to maintain, no Python environment to manage, and no PostgreSQL instance to back up. If you already run a small home server or a cheap VPS, Dasherr adds almost no overhead. The Docker image is under 10MB.
The configuration model is worth understanding before you set anything up. Dasherr reads a YAML file to generate your dashboard, which means your entire setup is version-controllable. Put your config.yml in a Git repository, and you have a full backup of your startpage that can be restored to any server in seconds. That’s a more durable approach than browser sync, which ties you to an account and a vendor.
Compared to heavier self-hosted dashboard options like Heimdall or Homer, Dasherr strips everything down. There’s no user management, no plugin ecosystem, no theme marketplace. What it trades in features it gains in reliability – a static file server can’t crash the same way an application server can. For users who want a quick-launch page rather than a full server monitoring suite, that tradeoff is exactly right.
Setting Up Dasherr with Docker
Docker is the fastest path to a running Dasherr instance. Pull the image with docker pull dasherr/dasherr, then create a directory on your host machine to store your configuration – something like /opt/dasherr/config. That directory will be mounted into the container so your settings persist across container restarts and image updates.
Run the container with a volume mount and port binding: docker run -d –name dasherr -p 4000:80 -v /opt/dasherr/config:/config dasherr/dasherr. The application listens on port 80 inside the container, and you’re mapping it to port 4000 on the host in this example – change that to whatever fits your setup. Visit http://your-server-ip:4000 in a browser and you’ll see the default Dasherr interface immediately.

The real work happens in config.yml. Dasherr generates your dashboard from this file, so open it in any text editor and start building your layout. The structure is straightforward: you define groups, and each group contains a list of apps. Each app entry needs a name, a url, and optionally an icon. Dasherr supports icon packs including Material Design Icons and Simple Icons, so you reference them by name rather than uploading image files. A basic group entry looks like this:
- name: the label displayed under the icon
- url: where the link points, including protocol
- icon: icon pack prefix plus icon name, such as mdi-home
- target: set to _blank to open links in a new tab
Color theming is handled through CSS variables exposed in the config. You can set a primary background color, accent color, and text color directly in config.yml without touching any stylesheet. Dasherr ships with a handful of preset themes, but overriding individual color values gives you full control. Dark backgrounds with low-saturation accent colors tend to read cleanly at the small icon sizes Dasherr uses – high contrast works better here than vibrant palettes.
Once your container is running, point a reverse proxy at it to serve Dasherr over HTTPS on a clean domain or subdomain. Nginx Proxy Manager and Caddy both handle this with minimal configuration. Caddy’s automatic TLS is particularly useful if you’re running Dasherr on a public-facing server rather than a local network – set up a subdomain with an A record pointing to your server, add a two-line Caddyfile entry, and HTTPS is handled automatically. After that, you can set the subdomain as your browser’s new tab URL using a browser extension like New Tab Redirect, and the whole setup becomes genuinely seamless from a daily use perspective.
Keeping It Maintained
Dasherr updates are straightforward with Docker. Run docker pull dasherr/dasherr to fetch the latest image, stop and remove the current container, then start a new one with the same run command. Because your configuration lives in a mounted host directory rather than inside the container, nothing is lost during that process. Set a calendar reminder to check for updates monthly – it takes less than two minutes.

The one ongoing decision Dasherr forces is curation. Because the config file is manual, your startpage only reflects what you actively put there. Links you add and forget will sit in the layout indefinitely unless you audit the file. That friction is actually useful – a startpage with forty icons and three groups is a distraction, not a tool. The constraint of editing YAML by hand tends to keep the link count honest, and a dashboard with twelve well-chosen shortcuts loads faster and reads cleaner than one that mirrors your entire bookmark bar.
Frequently Asked Questions
Does Dasherr require a database or backend service?
No. Dasherr is a static single-file application. It runs on any basic web server or in a small Docker container with no database required.
Can I use Dasherr as my browser’s default new tab page?
Yes. After hosting Dasherr, use a browser extension like New Tab Redirect to point your new tab URL to your Dasherr instance.





