Files
..

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.