On Debian 13:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now docker
On RHEL 10:
sudo dnf install -y docker docker-compose
sudo systemctl enable --now docker
docker run -d \
--name dashdot \
--restart unless-stopped \
-p 3001:3001 \
-v /:/mnt/host:ro \
--privileged \
mauricenino/dashdot
Create docker-compose.yml:
version: '3'
services:
dashdot:
image: mauricenino/dashdot
container_name: dashdot
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- /:/mnt/host:ro
privileged: true
environment:
- LOG_LEVEL=info
- SERVER_PORT=3001
Start with:
docker-compose up -d
On Debian 13:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
On RHEL 10:
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo -E bash -
sudo dnf install -y nodejs
cd /opt
git clone https://github.com/MauriceNino/dashdot.git
cd dashdot
npm install
npm run build
sudo tee /etc/systemd/system/dashdot.service >/dev/null <<'EOF'
[Unit]
Description=Dashdot Server Dashboard
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/dashdot
ExecStart=/usr/bin/node server.js
Restart=on-failure
Environment=NODE_ENV=production
Environment=SERVER_PORT=3001
[Install]
WantedBy=multi-user.target
EOF
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable --now dashdot
Create configuration file:
sudo mkdir -p /etc/dashdot
sudo tee /etc/dashdot/config.json >/dev/null <<'EOF'
{
"server": {
"port": 3001,
"host": "0.0.0.0"
},
"paths": {
"root": "/mnt/host"
},
"features": {
"cpu": true,
"memory": true,
"network": true,
"storage": true,
"system": true
}
}
EOF
On UFW:
sudo ufw allow 3001/tcp
On firewalld:
sudo firewall-cmd --permanent --add-port=3001/tcp
sudo firewall-cmd --reload
Open http://SERVER_IP:3001 to access the Dashdot dashboard.
The dashboard displays:
Configure via environment variables:
| Variable | Default | Description |
|---|---|---|
SERVER_PORT |
3001 | Port to listen on |
SERVER_HOST |
0.0.0.0 | Host to bind to |
LOG_LEVEL |
info | Logging level |
PATH_ROOT |
/mnt/host | Root path for monitoring |
Example:
docker run -d \
--name dashdot \
-p 3001:3001 \
-v /:/mnt/host:ro \
-e SERVER_PORT=3001 \
-e LOG_LEVEL=debug \
--privileged \
mauricenino/dashdot
Dashdot is designed for single-server monitoring. For multiple servers:
# Docker
docker logs dashdot
# Systemd
sudo journalctl -u dashdot -f
See Dashdot Hardening.
Setting up monitoring systems can be complex. We offer consulting services for:
Contact us at office@linux-server-admin.com or visit our contact page.
Prefer automation? See Dashdot Ansible Setup for an example playbook.
Prefer containers? See Dashdot Docker Setup.
See Dashdot Configuration for configuration guidance.
See Dashdot Security for hardening guidance.