210 lines
5.1 KiB
Markdown
210 lines
5.1 KiB
Markdown
# Homelab Dashboard
|
|
|
|
Ein modernes, responsives Dashboard für die Verwaltung von Homelab-Diensten, gebaut mit **Next.js 15**, **TypeScript** und **Tailwind CSS**.
|
|
|
|
## Features
|
|
|
|
✨ **Moderne Benutzeroberfläche**
|
|
- Elegantes Dark/Light Mode Design
|
|
- Responsive Grid-Layout für alle Bildschirmgrößen
|
|
- Smooth Animations und Übergänge
|
|
|
|
🎯 **Service-Management**
|
|
- Service-Karten mit Name, Beschreibung und Status
|
|
- Farbcodierter Status-Indikator (Online, Warnung, Offline)
|
|
- Direkte Links zu Services
|
|
- Pulsierender Status-Punkt für visuelle Rückmeldung
|
|
|
|
📱 **Mobile-First Design**
|
|
- Optimiert für Smartphones, Tablets und Desktop
|
|
- Touch-freundliche Buttons
|
|
- Flexibles Grid-System
|
|
|
|
## Installation & Setup
|
|
|
|
### Voraussetzungen
|
|
- Node.js 18+ installiert
|
|
- npm oder yarn
|
|
|
|
### Schritt 1: Dependencies installieren
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### Schritt 2: Entwicklungsserver starten
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Der Server läuft dann unter `http://localhost:3000`
|
|
|
|
## Projekt-Struktur
|
|
|
|
```
|
|
homelab-dashboard/
|
|
├── app/
|
|
│ ├── components/
|
|
│ │ ├── Header.tsx # Header-Komponente
|
|
│ │ └── ServiceCard.tsx # Service-Karten-Komponente
|
|
│ ├── globals.css # Globale Tailwind Styles
|
|
│ ├── layout.tsx # Root Layout
|
|
│ └── page.tsx # Startseite
|
|
├── lib/
|
|
│ └── data.ts # Mock-Daten und Service-Typen
|
|
├── tailwind.config.ts # Tailwind Konfiguration
|
|
├── postcss.config.js # PostCSS Konfiguration
|
|
├── next.config.js # Next.js Konfiguration
|
|
├── tsconfig.json # TypeScript Konfiguration
|
|
└── package.json # Abhängigkeiten
|
|
```
|
|
|
|
## Dienste hinzufügen/bearbeiten
|
|
|
|
Bearbeite die Datei [src/data/services.ts](src/data/services.ts):
|
|
|
|
```typescript
|
|
export const services: Service[] = [
|
|
{
|
|
id: 'unique-id',
|
|
name: 'Dein Service',
|
|
description: 'Was macht dieser Service?',
|
|
category: 'Infrastruktur', // oder Smart Home, Medien, Dokumente
|
|
status: 'online', // online | warning | offline
|
|
url: 'http://localhost:8000',
|
|
icon: '🖥️', // Optional - ein Emoji für visuelles Feedback
|
|
},
|
|
// ... weitere Services
|
|
];
|
|
```
|
|
|
|
### Verfügbare Kategorien
|
|
|
|
- **Infrastruktur**: Server, Netzwerk, Monitoring
|
|
- **Smart Home**: Home Automation und IoT
|
|
- **Medien**: Medienserver und Downloading
|
|
- **Dokumente**: Dateispeicher und Code-Repositories
|
|
|
|
## Verfügbare Commands
|
|
|
|
- `npm run dev` - Entwicklungsserver starten
|
|
- `npm run build` - Produktions-Build erstellen
|
|
- `npm start` - Produktions-Server starten
|
|
- `npm run lint` - Linter ausführen
|
|
|
|
## Status-Indikatoren
|
|
|
|
| Status | Farbe | Beschreibung |
|
|
|--------|-------|-------------|
|
|
| Online | 🟢 Grün | Service läuft einwandfrei |
|
|
| Warnung | 🟡 Gelb | Service läuft, aber mit Performance-Problemen |
|
|
| Offline | 🔴 Rot | Service ist nicht erreichbar |
|
|
|
|
## Docker Deployment
|
|
|
|
### Lokaler Start ohne Docker
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### Lokaler Start mit Docker
|
|
|
|
```bash
|
|
# Build und starte mit docker-compose
|
|
docker-compose up --build
|
|
|
|
# Oder manuell:
|
|
docker build -t homelab-dashboard .
|
|
docker run -p 3000:3000 homelab-dashboard
|
|
```
|
|
|
|
### Build-Befehl
|
|
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
### Run-Befehl
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
### Docker Compose Nutzung
|
|
|
|
```bash
|
|
# Start im Hintergrund
|
|
docker-compose up -d
|
|
|
|
# Stoppen
|
|
docker-compose down
|
|
|
|
# Logs anzeigen
|
|
docker-compose logs -f homelab-dashboard
|
|
```
|
|
|
|
### Unraid Volume-Mappings
|
|
|
|
Für Unraid empfiehlt es sich, die Konfigurationsdateien als Volumes zu mounten:
|
|
|
|
- **config.json**: `/mnt/user/appdata/homelab-dashboard/config.json` → `/app/config.json`
|
|
- **services.json**: `/mnt/user/appdata/homelab-dashboard/services.json` → `/app/src/data/services.json`
|
|
|
|
Dadurch können Konfigurationen außerhalb des Containers verwaltet werden.
|
|
|
|
## Konfiguration
|
|
|
|
### Services bearbeiten
|
|
|
|
Bearbeite `src/data/services.json` für JSON-basierte Konfiguration oder `src/data/services.ts` für TypeScript-basierte Konfiguration.
|
|
|
|
### App-Konfiguration
|
|
|
|
Bearbeite `config.json` im Projektroot, um Titel, Beschreibung und andere Einstellungen anzupassen:
|
|
|
|
```json
|
|
{
|
|
"title": "Mein Homelab Dashboard",
|
|
"subtitle": "Live-Status aller verwalteten Dienste",
|
|
"description": "Live-Monitoring-Dashboard für mein Homelab",
|
|
"servicesFile": "src/data/services.json",
|
|
"refreshInterval": 30000,
|
|
"categories": [
|
|
"Infrastruktur",
|
|
"Smart Home",
|
|
"Medien",
|
|
"Dokumente"
|
|
]
|
|
}
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
Kopiere `.env.example` zu `.env` und passe die Werte an:
|
|
|
|
- `PORT`: Port für den Server (Standard: 3000)
|
|
- `HOSTNAME`: Hostname binding (Standard: 0.0.0.0)
|
|
|
|
## Ports
|
|
|
|
- **3000**: Haupt-HTTP-Port der Anwendung
|
|
| Warning | 🟡 Orange | Service hat Probleme, läuft aber |
|
|
| Offline | 🔴 Rot | Service ist nicht erreichbar |
|
|
|
|
## Styling & Anpassungen
|
|
|
|
Das Projekt nutzt **Tailwind CSS** für Styling. Eigene Farben und Konfiguration können in [tailwind.config.ts](tailwind.config.ts) angepasst werden.
|
|
|
|
## Browser-Unterstützung
|
|
|
|
Das Dashboard funktioniert auf modernen Browsern:
|
|
- Chrome/Edge 90+
|
|
- Firefox 88+
|
|
- Safari 14+
|
|
|
|
## Lizenz
|
|
|
|
MIT
|