mirror of
https://github.com/mblanke/Dashboard.git
synced 2026-03-01 12:10:20 -05:00
225 lines
5.4 KiB
Markdown
225 lines
5.4 KiB
Markdown
# Dashboard
|
|
|
|
A fun and flashy replacement dashboard for Heimdall and Homarr. Monitor all your Docker containers, Synology NAS, and Unifi network devices in one beautiful interface.
|
|
|
|

|
|
|
|
## ✨ Features
|
|
|
|
- 🐳 **Docker Container Monitoring** - Real-time monitoring of all containers with CPU, memory, and network stats
|
|
- 💾 **Synology NAS Integration** - Monitor your Synology NAS health and storage
|
|
- 📡 **Unifi Network Integration** - Track all your Unifi network devices and clients
|
|
- 🎨 **Beautiful UI** - Modern, animated interface with gradient backgrounds and smooth transitions
|
|
- ⚡ **Real-time Updates** - Auto-refresh every 5 seconds to keep data current
|
|
- 🎮 **Container Controls** - Start, stop, restart, pause containers with one click
|
|
- 📊 **System Monitoring** - View host system resources and stats
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18+
|
|
- Docker (with socket access)
|
|
- Optional: Synology NAS, Unifi Controller
|
|
|
|
### Installation
|
|
|
|
1. **Clone the repository**
|
|
```bash
|
|
git clone https://github.com/mblanke/Dashboard.git
|
|
cd Dashboard
|
|
```
|
|
|
|
2. **Install dependencies**
|
|
```bash
|
|
npm install
|
|
cd frontend && npm install && cd ..
|
|
```
|
|
|
|
3. **Configure integrations** (optional)
|
|
```bash
|
|
cp config.example.json config.json
|
|
# Edit config.json with your credentials
|
|
```
|
|
|
|
4. **Build the frontend**
|
|
```bash
|
|
npm run build:frontend
|
|
```
|
|
|
|
5. **Start the server**
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
6. **Access the dashboard**
|
|
- Frontend: http://localhost:3000
|
|
- API: http://localhost:3001
|
|
|
|
## 🐳 Docker Deployment
|
|
|
|
The easiest way to run the dashboard is with Docker Compose:
|
|
|
|
```bash
|
|
# Create config file
|
|
cp config.example.json config.json
|
|
# Edit with your credentials
|
|
|
|
# Start with Docker Compose
|
|
docker-compose up -d
|
|
```
|
|
|
|
Access at http://localhost:3000
|
|
|
|
## ⚙️ Configuration
|
|
|
|
Create a `config.json` file in the root directory:
|
|
|
|
```json
|
|
{
|
|
"synology": {
|
|
"host": "192.168.1.100",
|
|
"port": 5000,
|
|
"username": "your-username",
|
|
"password": "your-password",
|
|
"useHttps": false
|
|
},
|
|
"unifi": {
|
|
"host": "192.168.1.1",
|
|
"port": 443,
|
|
"username": "your-username",
|
|
"password": "your-password",
|
|
"verifySsl": false
|
|
}
|
|
}
|
|
```
|
|
|
|
**Configuration Options:**
|
|
|
|
- **Synology**
|
|
- `useHttps`: Set to `true` to use HTTPS (recommended for production). Default: `false`
|
|
|
|
- **Unifi**
|
|
- `verifySsl`: Set to `true` if you have valid SSL certificates. Default: `false` (allows self-signed certificates)
|
|
|
|
**Note:** Both Synology and Unifi are optional. The dashboard will work with just Docker if you don't configure them.
|
|
|
|
## 🎨 Features in Detail
|
|
|
|
### Docker Container Monitoring
|
|
|
|
- View all containers (running, stopped, paused)
|
|
- Real-time CPU and memory usage with animated progress bars
|
|
- Network traffic monitoring (RX/TX)
|
|
- Container controls: Start, Stop, Restart, Pause, Unpause
|
|
- Port mappings and status information
|
|
- Beautiful state indicators with glowing effects
|
|
|
|
### Synology NAS Integration
|
|
|
|
- System information (model, firmware)
|
|
- CPU and memory utilization
|
|
- Storage capacity and usage
|
|
- Real-time health monitoring
|
|
|
|
### Unifi Network Integration
|
|
|
|
- All network devices overview
|
|
- Device status and uptime
|
|
- Connected clients count
|
|
- Network health status
|
|
- IP addresses and device models
|
|
|
|
## 🛠️ Development
|
|
|
|
### Development Mode
|
|
|
|
Run the frontend and backend separately for development:
|
|
|
|
```bash
|
|
# Terminal 1: Start backend
|
|
npm run dev
|
|
|
|
# Terminal 2: Start frontend dev server
|
|
npm run dev:frontend
|
|
```
|
|
|
|
The frontend dev server runs on http://localhost:5173 with hot reload.
|
|
|
|
### Tech Stack
|
|
|
|
**Frontend:**
|
|
- React 18
|
|
- Vite
|
|
- Tailwind CSS
|
|
- Framer Motion (animations)
|
|
- Lucide React (icons)
|
|
- Axios
|
|
|
|
**Backend:**
|
|
- Node.js
|
|
- Express
|
|
- Dockerode (Docker API)
|
|
- Axios (HTTP client)
|
|
|
|
## 📋 API Endpoints
|
|
|
|
### Docker
|
|
- `GET /api/docker/containers` - List all containers with stats
|
|
- `POST /api/docker/container/:id/:action` - Control container (start/stop/restart/pause/unpause)
|
|
|
|
### Synology
|
|
- `GET /api/synology/info` - Get NAS information and stats
|
|
|
|
### Unifi
|
|
- `GET /api/unifi/devices` - Get network devices and health status
|
|
|
|
### System
|
|
- `GET /api/system/info` - Get host system information
|
|
- `GET /api/config` - Get configuration status
|
|
|
|
## 🔒 Security Notes
|
|
|
|
- The dashboard requires access to the Docker socket (`/var/run/docker.sock`)
|
|
- Store credentials in `config.json` (never commit this file)
|
|
- For production use, consider:
|
|
- Using environment variables for credentials
|
|
- Running behind a reverse proxy with authentication
|
|
- Using HTTPS for Synology and Unifi connections
|
|
- Limiting Docker socket permissions
|
|
|
|
## 🎯 Roadmap
|
|
|
|
- [ ] Custom service bookmarks
|
|
- [ ] Dashboard themes
|
|
- [ ] Webhook notifications
|
|
- [ ] Multiple server support
|
|
- [ ] Mobile responsive improvements
|
|
- [ ] Search and filter containers
|
|
- [ ] Container logs viewer
|
|
- [ ] System notifications
|
|
|
|
## 🤝 Contributing
|
|
|
|
Contributions are welcome! Feel free to:
|
|
- Report bugs
|
|
- Suggest features
|
|
- Submit pull requests
|
|
|
|
## 📝 License
|
|
|
|
MIT License - feel free to use this project for personal or commercial purposes.
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
Created as a replacement for Heimdall and Homarr with a focus on:
|
|
- Beautiful, modern UI
|
|
- Easy setup and configuration
|
|
- Comprehensive monitoring capabilities
|
|
- Fun and flashy design
|
|
|
|
---
|
|
|
|
**Built with ❤️ for the self-hosted community**
|
|
|