Dashmark finds Docker containers with dashmark.* labels and displays them as cards. It is a self-hosted Node.js service built with Astro.
View the live demo | Read the documentation
Excellent self-hosted dashboards already exist, including Homepage, Heimdall, Homarr, and Flame. Dashmark takes inspiration from Heimdall's simplicity, then removes the setup friction: configure cards beside their services in docker-compose.yml, let Docker labels supply the details, and rely on automatic icon matching when an explicit icon is not worth the effort.
Dashmark is links first. It is built for fast, low-fuss navigation across a large collection of services: searchable, easy to scan, and polished by default with shadcn/ui, without turning the dashboard itself into another project to maintain.
- Discover opt-in containers on one or more Docker hosts.
- Create cards from Docker labels or YAML.
- Reuse Traefik host rules for card links.
- Organise cards with categories, aliases, and custom ordering.
- Show container state, health, and resource metrics.
- Limit cards and metrics by groups from an authentication proxy.
- Use automatic, selfh.st, remote, local, or placeholder icons.
Dashmark shows Docker resource usage by default. Browse the available metric library for ready-made metrics from supported services. The library will continue to grow as new metrics are developed, and contributions are welcome.
-
Create a
docker-compose.ymlwith Dashmark and labels for the services you want to show:services: dashmark: image: ghcr.io/edmogeor/dashmark:latest ports: - '127.0.0.1:4321:4321' volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./data:/data environment: - TZ=Etc/UTC # Set an IANA timezone, for example Europe/London. restart: unless-stopped plex: image: plexinc/pms-docker labels: dashmark.url: https://plex.example.com dashmark.title: Plex dashmark.category: Media
-
Start Dashmark and your labeled services:
docker compose up -d
This example uses Dashmark's default local Docker socket. For a production-ready setup with a restricted Docker socket proxy and its required DOCKER_HOSTS setting, use the example docker-compose.yml. For Docker CLI setup, reverse-proxy deployment, and detailed configuration, use the documentation.
Read the documentation for quick-start guidance, Docker and YAML card configuration, dashboard settings, metrics, access control, and secure deployment.
npm install
npm run dev
npm run lint
npm test
npm run typecheck
npm run buildnpm run dev uses two mock Docker APIs, a deterministic local metric API, and a local reverse proxy that injects sample authentication headers for both HTTP requests and WebSocket upgrades. It does not need Docker and supports hot reload. The fixtures exercise resource and custom metrics, uptime observations with periodic transient failures, access-controlled cards, and changing container states. It simulates the admins, media, and family groups. For example, run MOCK_USER_GROUPS=media STATUS_BADGE_ACCESS=admins npm run dev to test a different user. Set DASHMARK_DEV_PORT to expose the local proxy on a different port.
Contributions are welcome. Open an issue or pull request with a clear description of the change.
If Dashmark is useful to you, you can support its development.
- selfh.st/icons for the bundled icon index under CC-BY-4.0.
- Homepage for reference implementations of provider metrics and API response shapes.
See THIRD_PARTY_NOTICES.md for shipped attribution details.
AI tools assist development. The maintainer reviews and remains responsible for every change.

