Do you have so many self-hosted services running in your homelab that it’s hard to keep track of them all? Do you hate typing the IP/port for each one? You could use DNS, but a nice dashboard would make it easier too! Today I’m setting that up with Dashy, a beautiful and easy to edit homelab dashboard tool. It’s not the lightest weight tool in the world, but the look is worth it for me.
Start with a Debian 11 (Bullseye) LXC container, and run this all as root. Feel free to go section by section if you want, or copy and paste the whole thing and yolo it.
#NodeJS 16 wget -O - https://deb.nodesource.com/setup_16.x | bash - #apt update apt update #apt install stuff (nodejs version should track Nodesource now) apt install -y nodejs git #NPM install stuff (need a newer version of yarn than in apt) npm install --global yarn #Move to dashy dir, clone the git repo cd /opt git clone https://github.com/Lissy93/dashy.git cd dashy #Do the yarn yarn yarn build #Create systemd service for Dashy cat > /etc/systemd/system/dashy.service << EOF [Unit] Description=Dashy homelab dashboard After=network-online.target [Service] Environment="PORT=80" Environment="HOST=::" ExecStart=/usr/bin/yarn --cwd=/opt/dashy start Restart=always [Install] WantedBy=multi-user.target EOF #Create systemd service to rebuild dashy on config change cat > /etc/systemd/system/dashy-rebuild.service << EOF [Unit] Description=Rebuild Dashy on Config Changes [Service] Type=oneshot ExecStart=/usr/bin/yarn --cwd=/opt/dashy build EOF #Create systemd path to call service on config file change cat > /etc/systemd/system/dashy-rebuild.path << EOF [Unit] Description=Monitor Dashy Config for Changes [Path] PathChanged=/opt/dashy/public/conf.yml [Install] WantedBy=multi-user.target EOF #Make systemd aware that we just changed stuff systemctl daemon-reload #And start our services! systemctl enable --now dashy systemctl enable --now dashy-rebuild.path