Rootless User konfigurierbar + Doku
This commit is contained in:
189
README.md
189
README.md
@@ -12,66 +12,16 @@
|
||||
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 mit konfigurierbaren Alarmschwellen
|
||||
- **Zentrale Monitoring-Software**: Web-basiertes Dashboard zur Visualisierung und Verwaltung der gesammelten Daten
|
||||
|
||||
## ✨ Hauptfunktionen
|
||||
|
||||
### Server-Management
|
||||
- Hinzufügen, bearbeiten und löschen von Servern
|
||||
- Hardware-Spezifikationen erfassen (CPU, GPU, RAM, Festplatte)
|
||||
- Server-Verifikationssystem
|
||||
- Online/Offline-Status-Tracking via Heartbeat
|
||||
- Konfigurierbare Alarmschwellen pro Server
|
||||
|
||||
### Monitoring & Metriken
|
||||
- Echtzeit-Metrikerfassung: CPU, GPU, RAM, Festplatte, Netzwerk
|
||||
- Automatische Datenaufbewahrung mit konfigurierbarer Retention (Standard: 30 Tage)
|
||||
- Historische Datenspeicherung mit Zeitstempel
|
||||
- REST API-Endpunkte für Metrik-Submission
|
||||
- Swagger/OpenAPI-Dokumentation unter `/api/v1/swagger`
|
||||
|
||||
### Container-Management
|
||||
- Docker-Container-Tracking pro Server
|
||||
- Container-Image-Registry
|
||||
- Container-Status-Überwachung
|
||||
- Service Discovery für Docker-Container
|
||||
|
||||
### Sicherheit & Authentifizierung
|
||||
- Lokale Benutzerauthentifizierung mit BCrypt-Hashing
|
||||
- Cookie-basierte Session-Verwaltung
|
||||
- Rollenbasierte Zugriffskontrolle
|
||||
- Standard-Admin-Benutzer (Username: `admin`, Passwort: `changeme` - bitte ändern!)
|
||||
|
||||
### Logging & Diagnostik
|
||||
- Strukturiertes Logging mit Serilog
|
||||
- Tägliche Log-Dateien: `logs/watcher-<datum>.log`
|
||||
- Health-Check-Endpunkte
|
||||
- Datenbank-Export-Funktionalität (SQL-Dumps)
|
||||
|
||||
## 🛠️ Technologie-Stack
|
||||
|
||||
**Backend:**
|
||||
- ASP.NET Core 8.0 (C#)
|
||||
- Entity Framework Core 8.0
|
||||
- Serilog 9.0 für Logging
|
||||
|
||||
**Datenbank:**
|
||||
- SQLite (Standard, dateibasiert)
|
||||
- MySQL-Unterstützung (konfigurierbar)
|
||||
|
||||
**Frontend:**
|
||||
- Razor Views (CSHTML)
|
||||
- Bootstrap / CSS
|
||||
- jQuery, jQuery Validation
|
||||
|
||||
**API & Dokumentation:**
|
||||
- Swagger/Swashbuckle 9.0.6
|
||||
- REST API
|
||||
|
||||
**Container & Deployment:**
|
||||
- Docker (Multi-Arch: AMD64, ARM64)
|
||||
- Docker Compose
|
||||
- Gitea CI/CD
|
||||
### 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
|
||||
|
||||
@@ -81,111 +31,70 @@ Die Software besteht aus zwei Hauptkomponenten:
|
||||
|
||||
### Schnellstart
|
||||
|
||||
1. **docker-compose.yaml erstellen** oder die bereitgestellte verwenden:
|
||||
1. **Repository klonen oder docker-compose.yaml herunterladen**
|
||||
```bash
|
||||
git clone https://git.triggermeelmo.com/Watcher/watcher.git
|
||||
cd watcher
|
||||
```
|
||||
|
||||
```yaml
|
||||
services:
|
||||
watcher:
|
||||
image: git.triggermeelmo.com/watcher/watcher-server:latest
|
||||
container_name: watcher
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 200M
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- WATCHER_VERSION=latest
|
||||
- UPDATE_CHECK_ENABLED=true
|
||||
- UPDATE_CHECK_INTERVAL_HOURS=24
|
||||
- METRIC_RETENTION_DAYS=30
|
||||
- METRIC_CLEANUP_ENABLED=true
|
||||
- METRIC_CLEANUP_INTERVAL_HOURS=24
|
||||
ports:
|
||||
- "5000:5000"
|
||||
volumes:
|
||||
- ./watcher-volumes/data:/app/persistence
|
||||
- ./watcher-volumes/dumps:/app/wwwroot/downloads/sqlite
|
||||
- ./watcher-volumes/logs:/app/logs
|
||||
```
|
||||
2. **Umgebungsvariablen konfigurieren (optional)**
|
||||
```bash
|
||||
# .env Datei erstellen
|
||||
cp .env.example .env
|
||||
|
||||
2. **Container starten:**
|
||||
# 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
|
||||
```
|
||||
|
||||
3. **Dashboard aufrufen:**
|
||||
5. **Dashboard aufrufen**
|
||||
```
|
||||
http://localhost:5000
|
||||
```
|
||||
|
||||
4. **Standardanmeldung:**
|
||||
6. **Standardanmeldung**
|
||||
- Benutzername: `admin`
|
||||
- Passwort: `changeme`
|
||||
- ⚠️ **Wichtig:** Bitte Passwort nach dem ersten Login ändern!
|
||||
- ⚠️ **Wichtig:** Passwort nach dem ersten Login ändern!
|
||||
|
||||
## ⚙️ Konfiguration
|
||||
### Konfiguration
|
||||
|
||||
### Umgebungsvariablen
|
||||
#### Wichtige Umgebungsvariablen
|
||||
|
||||
| Variable | Beschreibung | Standard |
|
||||
|----------|--------------|----------|
|
||||
| `WATCHER_VERSION` | Anwendungsversion | `latest` |
|
||||
| `UPDATE_CHECK_ENABLED` | Update-Prüfung aktivieren | `true` |
|
||||
| `UPDATE_CHECK_INTERVAL_HOURS` | Update-Prüfungs-Intervall | `24` |
|
||||
| `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` |
|
||||
| `METRIC_CLEANUP_INTERVAL_HOURS` | Bereinigungs-Intervall | `24` |
|
||||
| `DATABASE:CONNECTIONSTRINGS:SQLITE` | Benutzerdefinierter SQLite-Pfad | - |
|
||||
| `FRONTEND_REFRESH_INTERVAL_SECONDS` | Dashboard Aktualisierungsrate | `30` |
|
||||
|
||||
### Volumes
|
||||
Vollständige Liste: siehe `docker-compose.yaml`
|
||||
|
||||
- `/app/persistence` - SQLite-Datenbank
|
||||
- `/app/wwwroot/downloads/sqlite` - Datenbank-Exports
|
||||
- `/app/logs` - Anwendungslogs
|
||||
#### Volumes
|
||||
|
||||
## 🔧 Entwicklung
|
||||
- `./data/db` → `/app/persistence` - SQLite-Datenbank
|
||||
- `./data/dumps` → `/app/wwwroot/downloads/sqlite` - Datenbank-Exports
|
||||
- `./data/logs` → `/app/logs` - Anwendungslogs
|
||||
|
||||
### Lokales Build
|
||||
#### Sicherheit
|
||||
|
||||
```bash
|
||||
# Dependencies wiederherstellen
|
||||
dotnet restore
|
||||
|
||||
# Build
|
||||
dotnet build --configuration Release
|
||||
|
||||
# Tests ausführen
|
||||
dotnet test
|
||||
|
||||
# Anwendung starten
|
||||
dotnet run --project Watcher
|
||||
```
|
||||
|
||||
### Docker-Build
|
||||
|
||||
```bash
|
||||
# Multi-Arch Build
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
-t watcher-server:latest \
|
||||
--push .
|
||||
```
|
||||
|
||||
## 📁 Projektstruktur
|
||||
|
||||
```
|
||||
/Watcher
|
||||
├── Controllers/ # MVC & API Controllers
|
||||
├── Models/ # Entity-Modelle
|
||||
├── Views/ # Razor-Templates
|
||||
├── Services/ # Background-Services & Stores
|
||||
├── Data/ # Entity Framework Context
|
||||
├── Migrations/ # EF Core Migrations
|
||||
├── ViewModels/ # View Models
|
||||
├── wwwroot/ # Statische Assets
|
||||
├── persistence/ # SQLite-Datenbank
|
||||
└── logs/ # Anwendungslogs
|
||||
```
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user