mirror of
https://github.com/mblanke/Dashboard.git
synced 2026-03-01 12:10:20 -05:00
216 lines
5.4 KiB
Markdown
216 lines
5.4 KiB
Markdown
# Atlas Dashboard
|
|
|
|
A modern, self-hosted dashboard for monitoring and managing your entire infrastructure. Displays Docker containers, UniFi network devices, Synology storage, and Grafana dashboards in one beautiful interface.
|
|
|
|
## Features
|
|
|
|
✨ **Core Capabilities:**
|
|
- 🐳 **Docker Container Management** - Real-time container status grouped by category
|
|
- 🌐 **UniFi Network Monitoring** - Connected devices, clients, and status
|
|
- 💾 **Synology Storage** - Volume usage and capacity monitoring
|
|
- 📊 **Grafana Integration** - Embedded dashboard panels for detailed metrics
|
|
- 🔍 **Search & Filter** - Quickly find containers by name
|
|
- 🔄 **Auto-Refresh** - Updates every 10 seconds
|
|
- 📱 **Responsive Design** - Works on desktop and mobile
|
|
- 🎨 **Dark Theme** - Easy on the eyes
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
- Docker & Docker Compose
|
|
- Access to:
|
|
- Docker daemon (API)
|
|
- UniFi Controller
|
|
- Synology NAS
|
|
- Grafana instance
|
|
|
|
### Deploy in 5 Minutes
|
|
|
|
```bash
|
|
# 1. SSH into your Atlas server
|
|
ssh soadmin@100.104.196.38
|
|
|
|
# 2. Clone and configure
|
|
mkdir -p /opt/dashboard && cd /opt/dashboard
|
|
git clone https://github.com/mblanke/Dashboard.git .
|
|
cp .env.example .env.local
|
|
nano .env.local # Edit with your credentials
|
|
|
|
# 3. Deploy
|
|
docker-compose build
|
|
docker-compose up -d
|
|
|
|
# 4. Access
|
|
# Open: http://100.104.196.38:3001
|
|
```
|
|
|
|
**For detailed instructions, see [QUICKSTART.md](QUICKSTART.md)**
|
|
|
|
## Configuration
|
|
|
|
Create `.env.local` with your environment variables:
|
|
|
|
```env
|
|
# Docker API
|
|
DOCKER_HOST=http://100.104.196.38:2375
|
|
|
|
# UniFi Controller
|
|
UNIFI_HOST=100.104.196.38
|
|
UNIFI_PORT=8443
|
|
UNIFI_USERNAME=admin
|
|
UNIFI_PASSWORD=your_password
|
|
|
|
# Synology NAS
|
|
SYNOLOGY_HOST=100.104.196.38
|
|
SYNOLOGY_PORT=5001
|
|
SYNOLOGY_USERNAME=admin
|
|
SYNOLOGY_PASSWORD=your_password
|
|
|
|
# Grafana
|
|
NEXT_PUBLIC_GRAFANA_HOST=http://100.104.196.38:3000
|
|
GRAFANA_API_KEY=your_api_key
|
|
|
|
# API
|
|
NEXT_PUBLIC_API_BASE_URL=http://100.104.196.38:3001
|
|
```
|
|
|
|
See [.env.example](.env.example) for all available options.
|
|
|
|
## Docker Deployment
|
|
|
|
### Using Docker Compose
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Using Docker CLI
|
|
|
|
```bash
|
|
docker build -t atlas-dashboard .
|
|
docker run -d \
|
|
--name atlas-dashboard \
|
|
-p 3001:3000 \
|
|
-e DOCKER_HOST=http://100.104.196.38:2375 \
|
|
-e UNIFI_HOST=100.104.196.38 \
|
|
-e UNIFI_USERNAME=admin \
|
|
-e UNIFI_PASSWORD=your_password \
|
|
-e SYNOLOGY_HOST=100.104.196.38 \
|
|
-e SYNOLOGY_USERNAME=admin \
|
|
-e SYNOLOGY_PASSWORD=your_password \
|
|
atlas-dashboard
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
src/
|
|
├── app/
|
|
│ ├── api/
|
|
│ │ ├── containers/ # Docker containers endpoint
|
|
│ │ ├── synology/ # Synology storage endpoint
|
|
│ │ └── unifi/ # UniFi devices endpoint
|
|
│ ├── layout.tsx # Root layout
|
|
│ ├── page.tsx # Main dashboard page
|
|
│ └── globals.css # Global styles
|
|
├── components/
|
|
│ ├── ContainerGroup.tsx # Container display component
|
|
│ ├── GrafanaWidget.tsx # Grafana panel embedding
|
|
│ ├── SearchBar.tsx # Search functionality
|
|
│ ├── SynologyWidget.tsx # Storage display
|
|
│ └── UnifiWidget.tsx # Network device display
|
|
└── types/
|
|
└── index.ts # TypeScript type definitions
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
| Endpoint | Purpose | Returns |
|
|
|----------|---------|---------|
|
|
| `GET /api/containers` | Docker containers | Array of running containers |
|
|
| `GET /api/unifi` | UniFi devices | Array of network devices |
|
|
| `GET /api/synology` | Synology storage | Array of volumes |
|
|
|
|
## Development
|
|
|
|
### Local Development
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
Open http://localhost:3000
|
|
|
|
### Build
|
|
|
|
```bash
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
### Linting
|
|
|
|
```bash
|
|
npm run lint
|
|
```
|
|
|
|
## Tech Stack
|
|
|
|
- **Frontend**: Next.js 14, React 18, TypeScript
|
|
- **Styling**: Tailwind CSS, Framer Motion
|
|
- **API**: Next.js API Routes, Axios
|
|
- **Icons**: Lucide React
|
|
- **Containerization**: Docker, Docker Compose
|
|
- **Runtime**: Node.js 20
|
|
|
|
## Documentation
|
|
|
|
- [QUICKSTART.md](QUICKSTART.md) - Get up and running in minutes
|
|
- [DEPLOYMENT.md](DEPLOYMENT.md) - Detailed deployment guide
|
|
- [CHECKLIST.md](CHECKLIST.md) - Pre-deployment verification checklist
|
|
|
|
## Troubleshooting
|
|
|
|
### Containers not loading?
|
|
```bash
|
|
curl http://100.104.196.38:2375/containers/json
|
|
```
|
|
|
|
### UniFi widget showing error?
|
|
- Verify credentials in `.env.local`
|
|
- Check UniFi Controller is accessible on port 8443
|
|
|
|
### Synology not connecting?
|
|
- Verify NAS is accessible
|
|
- Check credentials have proper permissions
|
|
- Note: Uses HTTPS with self-signed certificates
|
|
|
|
### View logs
|
|
```bash
|
|
docker-compose logs -f dashboard
|
|
```
|
|
|
|
## Security Notes
|
|
|
|
⚠️ **Important:**
|
|
- `.env.local` contains sensitive credentials - never commit to git
|
|
- UniFi and Synology credentials are transmitted in environment variables
|
|
- Ensure Docker API is only accessible from trusted networks
|
|
- Consider using reverse proxy with authentication in production
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Support
|
|
|
|
For issues and questions:
|
|
1. Check the [troubleshooting section](#troubleshooting)
|
|
2. Review deployment logs: `docker-compose logs`
|
|
3. Verify all external services are accessible
|
|
|
|
## Contributing
|
|
|
|
Pull requests welcome! Please ensure code follows the existing style and all features work properly before submitting.
|