131 lines
3.9 KiB
Markdown
131 lines
3.9 KiB
Markdown
# Docker Dashboard (Netbox Integration)
|
|
|
|
Ein modernes Dashboard zur Visualisierung von Docker-Containern und Inventar-Daten, integriert mit Netbox. Entwickelt mit Next.js, React und Tailwind CSS.
|
|
|
|
## 🚀 Features
|
|
|
|
- **Inventar-Übersicht**: Automatische Erkennung und Darstellung von Containern basierend auf Netbox-Daten.
|
|
- **Netbox Integration**: Nahtlose Anbindung an die Netbox API zur Zentralisierung der Dokumentation.
|
|
- **Modernes UI**: Responsives Design dank Tailwind CSS v4.
|
|
- **Dockerized**: Saubere Trennung von Infrastruktur und Code.
|
|
|
|
## 🛠️ Technologien
|
|
|
|
- **Frontend**: [Next.js 16](https://nextjs.org/), [React 19](https://react.dev/)
|
|
- **Styling**: [Tailwind CSS 4](https://tailwindcss.com/), Lucide React Icons
|
|
- **Deployment**: Docker & Docker Compose
|
|
|
|
---
|
|
|
|
## 🔌 Netbox Integration
|
|
|
|
Das Dashboard dient als Frontend für deine Dokumentation in Netbox. Es "scannt" Netbox nach virtuellen Maschinen, die als Docker-Container gekennzeichnet sind.
|
|
|
|
### Voraussetzungen in Netbox
|
|
|
|
Damit Container im Dashboard erscheinen, müssen sie in Netbox korrekt angelegt sein:
|
|
|
|
1. **Rolle (Role):**
|
|
* Erstelle eine Rolle für Virtual Machines mit dem Namen `Docker Container` und dem Slug `docker-container`.
|
|
* Jede VM, die im Dashboard erscheinen soll, muss diese Rolle haben.
|
|
|
|
2. **Custom Fields:**
|
|
* Das Dashboard liest spezifische Custom Fields aus, um Details anzuzeigen. Lege diese in Netbox an (für Objekte vom Typ `Virtualization > Virtual Machine`):
|
|
* **Name:** `docker_run_command` | **Type:** Text (oder Long Text)
|
|
* *Inhalt:* Der komplette `docker run` Befehl.
|
|
* **Name:** `docker_volumes` | **Type:** Text (oder Long Text)
|
|
* *Inhalt:* Volume-Mappings (z.B. `-v /host/path:/container/path`), am besten eins pro Zeile.
|
|
|
|
### Funktionsweise
|
|
|
|
1. Das Dashboard fragt die Netbox API unter `/api/virtualization/virtual-machines/` ab.
|
|
2. Es filtert automatisch nach `?role=docker-container`.
|
|
3. Die Ergebnisse werden nach dem zugewiesenen **Device (Host)** gruppiert.
|
|
4. IP-Adressen, Status und die oben genannten Custom Fields werden visualisiert.
|
|
|
|
---
|
|
|
|
## 📦 Deployment & Betrieb
|
|
|
|
Die Infrastruktur-Konfiguration (`Dockerfile`, `docker-compose.yml`) liegt im Hauptverzeichnis, der Anwendungscode im Unterordner `frontend/`.
|
|
|
|
### 1. Docker Build & Run (Manuell)
|
|
|
|
**Image bauen:**
|
|
(Aus dem Hauptverzeichnis)
|
|
```bash
|
|
docker build -t docker-dashboard-frontend .
|
|
```
|
|
|
|
**Container starten:**
|
|
(Ersetze die Platzhalter durch deine Netbox-Daten)
|
|
|
|
```bash
|
|
docker run -d \
|
|
-p 3000:3000 \
|
|
-e NETBOX_API_URL="https://deine-netbox-url.com" \
|
|
-e NETBOX_API_TOKEN="dein_api_token" \
|
|
-e APP_TITLE="Mein Docker Dashboard" \
|
|
--name docker-dashboard \
|
|
docker-dashboard-frontend
|
|
```
|
|
|
|
Das Dashboard ist anschließend unter `http://localhost:3000` erreichbar.
|
|
|
|
---
|
|
|
|
### 2. Updates einspielen (Workflow)
|
|
|
|
Wenn sich am Code im Git etwas geändert hat:
|
|
|
|
**1. Code aktualisieren:**
|
|
```bash
|
|
git pull origin main
|
|
```
|
|
|
|
**2. Container neu bauen und starten (mit Docker Compose):**
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
**ODER Manuell:**
|
|
```bash
|
|
docker stop docker-dashboard
|
|
docker rm docker-dashboard
|
|
docker build -t docker-dashboard-frontend .
|
|
# (Dann docker run Befehl von oben)
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Git-Verwaltung
|
|
|
|
Dieses Projekt wird unter `https://git.klenzel.net/Klenzel/docker_dashboard` verwaltet.
|
|
|
|
**Initiales Setup:**
|
|
```bash
|
|
git init
|
|
git remote add origin https://git.klenzel.net/Klenzel/docker_dashboard
|
|
git add .
|
|
git commit -m "Initial commit"
|
|
git push -u origin main
|
|
```
|
|
|
|
**Änderungen hochladen:**
|
|
```bash
|
|
git add .
|
|
git commit -m "Beschreibung der Änderung"
|
|
git push origin main
|
|
```
|
|
|
|
---
|
|
|
|
## 📂 Projektstruktur
|
|
|
|
- `Dockerfile`: Bauanleitung für das Image (im Root).
|
|
- `docker-compose.yml`: Orchestrierung (im Root).
|
|
- `frontend/`: Quellcode der Next.js Anwendung.
|
|
- `src/app/`: Pages & Routing.
|
|
- `src/lib/`: API-Logik (Netbox Fetching).
|
|
- `src/components/`: UI-Bausteine.
|