Files
Dashboard/docs/README.md

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.