Replies: 1 comment
-
Hi @papirov and all other intersted. Thanks for starting this idea, I’ve been thinking along the same lines and just released a small companion tool that does exactly this. What it does
Quick startI’ve packaged this as a Docker image so it can run alongside Dashy. Here’s a minimal docker-compose.yml example: services:
dashy:
image: lissy93/dashy:latest
ports:
- "8080:8080"
volumes:
- ./user-data:/app/user-data
dashy-sync:
image: ghcr.io/jeppestaerk/dashy-docker-sync:latest
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Listens on docker events and updates realtime
- ./config/conf.yml:/config/conf.yml # Dashy conf.yml
environment:
- DASHY_DOCKER_URL_HOST=localhost # Hostname or IP
- DASHY_DOCKER_URL_TEMPLATE=http://{host}:{port} # Port defaults to `dashy.port` or the first port
# To use traefik loadbalancer port:
# - DASHY_DOCKER_PORT_LABEL_REGEX=^traefik\.http\.services\.[a-zA-Z0-9_-]+\.loadbalancer\.server\.port$
# To only include services that are enabled on traefik:
# - DASHY_DOCKER_LABEL_REGEX=^traefik\.enable$
# To add reverse proxy domain:
# - DASHY_DOCKER_URL_HOST=myhomelab.io
# - DASHY_DOCKER_URL_TEMPLATE=https://{name}.{host} # Name defaults to container_name
# To expose all containers by default
# - DASHY_EXPOSED_BY_DEFAULT=true
httpbin:
image: kennethreitz/httpbin
container_name: httpbin # {name} to use in Dashy
restart: unless-stopped
ports:
- "8080:80" # First port is use by default as {port} if `dashy.port` is not set.
labels:
- dashy.enabled=true
- dashy.port=8080 # Overwrites {port} Add this to any container you want surfaced in Dashy: labels:
- dashy.enabled=true # Can be changed with DASHY_DOCKER_LABEL_REGEX
- dashy.port=8080 # Can be changed with DASHY_DOCKER_PORT_LABEL_REGEX This would update the Dashy config file with: sections:
- name: Docker Containers # Can be changed with DASHY_DOCKER_SECTION_NAME
icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/docker.svg
displayData:
color: '#1D63ED'
items:
- title: httpbin # Can be changed with DASHY_DOCKER_TITLE_TEMPLATE
url: http://localhost:8080 # Can be changed with DASHY_DOCKER_URL_TEMPLATE
icon: hl-httpbin # Can be changed with DASHY_DOCKER_ICON_TEMPLATE When you deploy a new container or change those values, the sync tool will automatically regenerate the section in conf.yml and Dashy will pick up the changes without any manual editing 🔧 More env vars & advanced options
Advance start🐳 Full docker compose exsampleservices:
dashy-docker-sync:
image: ghcr.io/jeppestaerk/dashy-docker-sync:latest
container_name: dashy-docker-sync
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
# IMPORTANT: Replace '/path/to/your/dashy/conf.yml' with the actual path
# to your Dashy configuration file on the host machine.
# Example: - /mnt/user/appdata/dashy/user-data/conf.yml:/config/conf.yml
- ./config/conf.yml:/config/conf.yml
environment:
# --- Label Matching for Inclusion/Exclusion/Port ---
# If DASHY_EXPOSED_BY_DEFAULT=false, containers need a label matching this regex to be included.
- DASHY_DOCKER_LABEL_REGEX=^(?:dashy$|dashy\..+)
# If a container has a label matching this regex AND its value is "true", it will be skipped.
- DASHY_DOCKER_IGNORE_LABEL_REGEX=^dashy\.ignore$
# Label key to find the port for the service URL.
- DASHY_DOCKER_PORT_LABEL_REGEX=^dashy\.port$
# --- URL and Item Generation Templates ---
# Hostname/IP used in DASHY_DOCKER_URL_TEMPLATE's {host} placeholder.
# Or set to your domain if services are exposed publicly/via reverse proxy.
- DASHY_DOCKER_URL_HOST=localhost
- DASHY_DOCKER_URL_TEMPLATE=http://{host}:{port}
- DASHY_DOCKER_TITLE_TEMPLATE={name}
- DASHY_DOCKER_ICON_TEMPLATE=hl-{name} # Example: hl-mycontainer for Homarr icons, or mdi-docker, or full URL
dashy:
image: lissy93/dashy
container_name: Dashy
volumes:
- ./config/conf.yml:/app/user-data/conf.yml
ports:
- 4000:8080
environment:
- NODE_ENV=production
- UID=1000
- GID=1000
restart: unless-stopped
healthcheck:
test: ['CMD', 'node', '/app/services/healthcheck']
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
labels:
- dashy.ignore=true # Skip this container in the list
httpbin:
image: kennethreitz/httpbin
container_name: httpbin # Title to use in Dashy
restart: unless-stopped
ports:
- "8080:80"
labels:
- dashy.port=8080 # Include this container and use port in the URL template See more info here: https://github.com/jeppestaerk/dashy-docker-sync/blob/main/README.md |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
First of all, what an amazing platform you've built. I've been using the product for a while and absolutely love it! THANK YOU!
I wanted to make a feature request, or perhaps just open the idea up for discussion. I have nearly 80 apps on my docker swarm cluster and on a daily basis the list grows and changes. I manage the list through Portainer stacks and docker composes.
It would be so awesome if I could build my Dashy dashboard pages by specifying variables in my docker-compose files, for example:
environment:
DASHY_ENABLED:true
DASHY_ICON:hl_pihole
DASHY_URL:https://pihole.mydomain.com/admin
DASHY_PAGE:System
DASHY_SECTION:AdminTools
#etc
Home lab enthusiasts like me could add/remove content from their Dashy pages at the same time we're configuring our docker-compose files... URLs changing, etc.. all flowing at the same time
Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions