# Debian Server Setup - HAT Sensoren InfluxDB Daemon

Kurzanleitung für die Einrichtung auf einem Debian Server.

## Voraussetzungen

- Debian Server (9+)
- PHP 8.1+ installiert
- Composer installiert
- Projekt bereits eingerichtet
- InfluxDB 1.x läuft und ist erreichbar

## Schnellstart

### 1. Projekt-Verzeichnis prüfen

```bash
cd /var/www/projekt_fleet_monitoring  # oder Ihr Projekt-Pfad
pwd
```

### 2. Service-Datei installieren

```bash
# Service-Datei kopieren
sudo cp hats-influx-daemon.service /etc/systemd/system/

# Service-Datei anpassen (Pfade prüfen!)
sudo nano /etc/systemd/system/hats-influx-daemon.service
```

**Wichtig:** Passen Sie folgende Zeilen an:

```ini
WorkingDirectory=/var/www/projekt_fleet_monitoring  # Ihr Projekt-Pfad
User=www-data                                      # Ihr Webserver-User
ExecStart=/usr/bin/php bin/console app:hats-influx-daemon --only-changes
ReadWritePaths=/var/www/projekt_fleet_monitoring/var
```

### 3. PHP-Pfad prüfen

```bash
which php
# Sollte z.B. /usr/bin/php ausgeben
```

Falls PHP nicht in `/usr/bin/php` ist, passen Sie `ExecStart` in der Service-Datei an.

### 4. Berechtigungen setzen

```bash
# Service-Datei
sudo chmod 644 /etc/systemd/system/hats-influx-daemon.service

# Projekt-Verzeichnis (falls nötig)
sudo chown -R www-data:www-data /var/www/projekt_fleet_monitoring
sudo chmod -R 755 /var/www/projekt_fleet_monitoring
sudo chmod -R 775 /var/www/projekt_fleet_monitoring/var
```

### 5. Service aktivieren

```bash
# Systemd neu laden
sudo systemctl daemon-reload

# Service aktivieren (startet beim Boot)
sudo systemctl enable hats-influx-daemon

# Service starten
sudo systemctl start hats-influx-daemon

# Status prüfen
sudo systemctl status hats-influx-daemon
```

### 6. Testen

```bash
# Logs in Echtzeit anzeigen
sudo journalctl -u hats-influx-daemon -f

# Sie sollten sehen:
# - "HAT-Sensoren InfluxDB Daemon"
# - "[Datalogger-Name] Daten geschrieben"
```

## Service verwalten

```bash
# Status
sudo systemctl status hats-influx-daemon

# Stoppen
sudo systemctl stop hats-influx-daemon

# Starten
sudo systemctl start hats-influx-daemon

# Neustart
sudo systemctl restart hats-influx-daemon

# Deaktivieren (startet nicht mehr beim Boot)
sudo systemctl disable hats-influx-daemon

# Logs
sudo journalctl -u hats-influx-daemon -f
```

## Fehlerbehebung

### Service startet nicht

1. **Status prüfen:**
   ```bash
   sudo systemctl status hats-influx-daemon
   ```

2. **Logs prüfen:**
   ```bash
   sudo journalctl -u hats-influx-daemon -n 50
   ```

3. **Manuell testen:**
   ```bash
   cd /var/www/projekt_fleet_monitoring
   sudo -u www-data /usr/bin/php bin/console app:hats-influx-daemon --only-changes
   ```

4. **Pfade prüfen:**
   ```bash
   # PHP-Pfad
   which php
   
   # Projekt-Verzeichnis
   ls -la /var/www/projekt_fleet_monitoring/bin/console
   
   # Berechtigungen
   ls -la /var/www/projekt_fleet_monitoring/var
   ```

### Permission Denied Fehler

```bash
# var-Verzeichnis Berechtigungen
sudo chown -R www-data:www-data /var/www/projekt_fleet_monitoring/var
sudo chmod -R 775 /var/www/projekt_fleet_monitoring/var
```

### InfluxDB Verbindungsfehler

1. **InfluxDB erreichbar?**
   ```bash
   curl http://localhost:8086/ping
   ```

2. **Konfiguration prüfen:**
   ```bash
   cat /var/www/projekt_fleet_monitoring/.env.local | grep INFLUXDB
   ```

3. **Manuell testen:**
   ```bash
   cd /var/www/projekt_fleet_monitoring
   php bin/console app:write-hats-to-influx
   ```

### Service läuft, aber schreibt keine Daten

1. **API-Verfügbarkeit prüfen:**
   - Prüfen Sie ob die Datalogger-APIs erreichbar sind
   - Testen Sie: `php bin/console app:write-hats-to-influx`

2. **Logs prüfen:**
   ```bash
   sudo journalctl -u hats-influx-daemon -f
   ```

3. **Datalogger aktiv?**
   - Prüfen Sie die Datenbank ob Datalogger als `active=true` markiert sind

## Automatischer Neustart

Der Service ist so konfiguriert, dass er:
- ✅ Automatisch beim System-Start startet
- ✅ Automatisch neu startet bei Absturz (nach 10 Sekunden)
- ✅ Bei Fehlern weiterläuft (robuste Fehlerbehandlung)

## Performance

Standard-Konfiguration:
- **Intervall:** 10 Sekunden
- **Modus:** Nur bei Änderungen (`--only-changes`)
- **Ressourcen:** Minimal (nur bei Änderungen wird geschrieben)

Anpassen des Intervalls:
```bash
sudo nano /etc/systemd/system/hats-influx-daemon.service
# ExecStart-Zeile ändern:
ExecStart=/usr/bin/php bin/console app:hats-influx-daemon --interval=5 --only-changes
sudo systemctl daemon-reload
sudo systemctl restart hats-influx-daemon
```

## Monitoring

### Logs rotieren

Systemd-Journal rotiert automatisch. Sie können die Größe begrenzen:

```bash
sudo nano /etc/systemd/journald.conf
```

```ini
[Journal]
SystemMaxUse=100M
SystemKeepFree=200M
```

Dann:
```bash
sudo systemctl restart systemd-journald
```

### Externes Monitoring

Sie können den Service-Status in Monitoring-Tools integrieren:

```bash
# Status als Exit-Code
systemctl is-active hats-influx-daemon && echo "OK" || echo "FAILED"

# Für Nagios/Icinga/etc.
```
