mirror of
https://github.com/mblanke/Dashboard.git
synced 2026-03-01 12:10:20 -05:00
Initial commit: ATLAS Dashboard (Next.js)
This commit is contained in:
215
README.md
Normal file
215
README.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user