# Watcher - Server Monitoring Solution

[![Build Status](https://git.triggermeelmo.com/Watcher/watcher/badges/workflows/build.yml/badge.svg)](https://git.triggermeelmo.com/Watcher/watcher/actions)
[![.NET Version](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/)
[![Docker Image](https://img.shields.io/badge/docker-multi--arch-2496ED?logo=docker)](https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server)
[![Platform](https://img.shields.io/badge/platform-linux%2Famd64%20%7C%20linux%2Farm64-lightgrey)](https://git.triggermeelmo.com/watcher/watcher-server)

**Watcher** ist eine umfassende Server- und Host-Monitoring-Lösung mit verteilter Architektur, die Echtzeit-Hardware-Metriken erfasst und über ein zentrales Web-Dashboard visualisiert.

## 📋 Überblick

Die Software besteht aus zwei Hauptkomponenten:

- **Host Agent**: Sammelt Hardware-Metriken (CPU, GPU, RAM, Festplatte, Netzwerk) von den überwachten Servern
- **Zentrale Monitoring-Software**: Web-basiertes Dashboard zur Visualisierung und Verwaltung der gesammelten Daten

### Hauptfunktionen
- Echtzeit-Hardware-Monitoring (CPU, GPU, RAM, Festplatte, Netzwerk)
- Docker-Container-Überwachung mit Service Discovery
- Web-basiertes Dashboard mit historischen Daten
- Konfigurierbare Alarmschwellen
- REST API mit Swagger-Dokumentation
- Automatische Datenaufbewahrung (konfigurierbar)
- Rootless Container-Betrieb für erhöhte Sicherheit

## 🚀 Installation & Start

### Voraussetzungen
- [Docker](https://www.docker.com/)
- [Docker Compose](https://docs.docker.com/compose/)

### Schnellstart

1. **Repository klonen oder docker-compose.yaml herunterladen**
   ```bash
   git clone https://git.triggermeelmo.com/Watcher/watcher.git
   cd watcher
   ```

2. **Umgebungsvariablen konfigurieren (optional)**
   ```bash
   # .env Datei erstellen
   cp .env.example .env

   # Eigene UID/GID eintragen (für korrekte Dateiberechtigungen)
   echo "USER_UID=$(id -u)" >> .env
   echo "USER_GID=$(id -g)" >> .env
   ```

3. **Verzeichnisse mit korrekten Rechten erstellen**
   ```bash
   mkdir -p data/db data/dumps data/logs
   chown -R $(id -u):$(id -g) data/
   ```

4. **Container starten**
   ```bash
   docker compose up -d
   ```

5. **Dashboard aufrufen**
   ```
   http://localhost:5000
   ```

6. **Standardanmeldung**
   - Benutzername: `admin`
   - Passwort: `changeme`
   - ⚠️ **Wichtig:** Passwort nach dem ersten Login ändern!

### Konfiguration

#### Wichtige Umgebungsvariablen

| Variable | Beschreibung | Standard |
|----------|--------------|----------|
| `USER_UID` | User-ID für Container (Dateiberechtigungen) | `1000` |
| `USER_GID` | Gruppen-ID für Container | `1000` |
| `IMAGE_VERSION` | Docker Image Version | `latest` |
| `METRIC_RETENTION_DAYS` | Datenspeicherdauer (Tage) | `30` |
| `METRIC_CLEANUP_ENABLED` | Automatische Datenbereinigung | `true` |
| `FRONTEND_REFRESH_INTERVAL_SECONDS` | Dashboard Aktualisierungsrate | `30` |

Vollständige Liste: siehe `docker-compose.yaml`

#### Volumes

- `./data/db` → `/app/persistence` - SQLite-Datenbank
- `./data/dumps` → `/app/wwwroot/downloads/sqlite` - Datenbank-Exports
- `./data/logs` → `/app/logs` - Anwendungslogs

#### Sicherheit

Der Container läuft als **non-root user** mit konfigurierbarer UID/GID:
- Standard: `1000:1000`
- Anpassbar über `USER_UID` und `USER_GID` in `.env`
- Empfehlung: Eigene UID/GID verwenden für korrekte Dateiberechtigungen

## 📝 Lizenz

Dieses Projekt ist unter einer proprietären Lizenz lizenziert.

## 🔗 Links

- **Repository:** [https://git.triggermeelmo.com/Watcher/watcher](https://git.triggermeelmo.com/Watcher/watcher)
- **Container Registry:** [https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server](https://git.triggermeelmo.com/watcher/-/packages/container/watcher-server)
- **Issue Tracker:** [https://git.triggermeelmo.com/Watcher/watcher/issues](https://git.triggermeelmo.com/Watcher/watcher/issues)

---

**Entwickelt mit ❤️ unter Verwendung von .NET 8.0**