mblanke ed125f613d feat: GB10 GPU panels + enhanced UniFi widget with health data
- Added GB10 Fabric row: GPU Utilization A/B + Network Throughput
- UniFi widget now shows WAN/WLAN/LAN/Internet health subsystems
- Displays ISP name, bandwidth rates, latency, client counts per subsystem
- Status dots (green/yellow) for each subsystem
2026-02-17 09:16:30 -05:00

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

# 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

Configuration

Create .env.local with your environment variables:

# 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 for all available options.

Docker Deployment

Using Docker Compose

docker-compose up -d

Using Docker CLI

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

npm install
npm run dev

Open http://localhost:3000

Build

npm run build
npm start

Linting

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

Troubleshooting

Containers not loading?

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

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
  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.

Description
No description provided
Readme 319 KiB
Languages
TypeScript 62.4%
HTML 25.2%
PowerShell 6.7%
Batchfile 3.2%
Shell 1.2%
Other 1.3%