Problem: WebFetch against http://home.cossaboon.net/conf.yml returned a prose
summary of the config rather than the raw YAML. Claude’s content policy prevents verbatim
reproduction of large files fetched from URLs.
Fix: Use curl via Bash instead:
curl -s http://10.10.15.11:8080/conf.yml
This bypasses WebFetch entirely and returns the raw file. Always use the internal IP to
avoid any reverse proxy / auth complications.
Observation: Two sections — “Only @ Home” (19 items) and “Other Stuff” (12 items) —
had become dumping grounds. Neither had a clear theme. Services get added to whatever
section seems “close enough” and are never moved. After a year, the dashboard becomes
unusable.
Fix going forward: Don’t create catch-all sections. If a new service doesn’t fit an
existing section cleanly, create a new purpose-built section for it. It’s cheaper to have
more sections than to untangle a catch-all later.
Found duplicates:
– Prowlarr: in “Only @ Home” AND “Arr” (as “Prowlaar” — different typo)
– Komodo: in “Other Stuff” AND “Git and Docker” (as “Komogo”)
– NAS 2 SyncThing: in “TailScale items” AND “Brandon NAS”
– NAS 4 SyncThing: in “TailScale items” AND “Brandon NAS”
– Bedroom Audio: same IP as RoPieee Bedroom entry
Why it happens: When a section is added for a new theme (e.g., “TailScale items”),
old entries in other sections aren’t cleaned up. Items get added to new sections without
checking if they already exist.
Fix going forward: Before adding an item, grep the conf.yml for the IP or URL:
grep "10.10.40.2" /mnt/user/appdata/dashy/conf.yml
Found: DirSyncPro using a TubeSync icon, NAS units using a UGREEN icon instead of
Synology, Splunk using favicon-allesedv (meant to auto-fetch but usually shows a generic
icon), Console entries using a Google Search Console icon.
Root cause: Icon URLs were copy-pasted from similar items without checking, and icons
that “look OK” in the small icon size are hard to distinguish as wrong without zooming in.
Fix: Always source icons from https://dashboardicons.com — search by service name.
Fallback to FontAwesome (fas fa-*) for anything not in the library.
Dashy serves its own conf.yml over HTTP. The config file is publicly readable at
/conf.yml — no auth. This is by design (Dashy’s config editor works this way), but it
means the config (including internal IPs and service URLs) is visible to anyone on the
network who knows to look. Not a practical concern for a home network, but worth knowing.
allowConfigEdit: true with no users set — the dashboard is fully editable by anyone
who opens it. Since guest access is disabled but no users are defined, the auth system is
effectively inert. If you ever want to lock down the config editor, you need to add at least
one user entry to the auth.users list.
Dashy hot-reloads without a restart. Writing a new conf.yml takes effect within
a few seconds — no docker restart needed. This made iterating fast.
bash
curl -s http://10.10.15.11:8080/conf.yml > ~/Documents/Coding/Container\ Managment/dashy-conf.yml
bash
# Find duplicates by IP
grep -oP 'url: http://\K[^/]+' dashy-conf.yml | sort | uniq -d
# Find items with no icon
grep -B2 'url:' dashy-conf.yml | grep -v icon
bash
python3 -c "import yaml, sys; yaml.safe_load(open(sys.argv[1]))" dashy-conf.yml && echo "Valid"
bash
ssh root@10.10.15.1 "cp /mnt/user/appdata/dashy/conf.yml /mnt/user/appdata/dashy/conf.yml.bak.$(date +%Y%m%d_%H%M%S)"
bash
scp "/Users/kcossabo/Documents/Coding/Container Managment/dashy-conf.yml" \
root@10.10.15.1:/mnt/user/appdata/dashy/conf.yml
bash
ssh root@10.10.15.1 "cp /mnt/user/appdata/dashy/conf.yml.bak.<timestamp> /mnt/user/appdata/dashy/conf.yml"
https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/<name>.png~/Documents/Coding/Container Managment/dashy-conf.yml