# Linux Agent Installation & Management

## 📘 Zweck
Dieses Dokument beschreibt die Installation, Aktualisierung und Deinstallation des Linux-Agents über das bereitgestellte `linuxrmm.sh`-Skript.  
Das Skript bindet Linux-Systeme an TacticalRMM / MeshCentral an und automatisiert die gesamte Einrichtung.

---

## 🧩 Voraussetzungen
- Root- oder sudo-Zugriff auf das Zielsystem  
- Unterstützte Distributionen: **Debian / Ubuntu** (getestet)  
- Internetzugang zum TacticalRMM- und MeshCentral-Server  
- Abhängigkeiten: `curl`, `wget`, `tar`, `systemd`  

---

## 🗝️ Parameterquellen in TacticalRMM
Da die Funktion **„Add Linux Agent“** in unserer Umgebung derzeit **nicht aktiv** ist, müssen die Parameter **manuell** eingetragen werden.  
Die folgenden Werte können direkt im TacticalRMM-Dashboard abgelesen werden:

| Parameter | Beschreibung | Wo im TacticalRMM zu finden |
|------------|---------------|------------------------------|
| `<MESH_URL>` | Download-Link des Mesh Agents (Linux Installer) | TacticalRMM → *Settings → Global Settings → MeshCentral* → Abschnitt **Mesh Settings** → Eintrag **"Linux Agent Download URL"** |
| `<API_URL>` | URL zur TacticalRMM API | TacticalRMM → *Settings → Global Settings* → Feld **"Base API URL"** (z. B. `https://rmm.example.com`) |
| `<CLIENT_ID>` | Eindeutige Kunden-ID | TacticalRMM → *Clients* → Kunde auswählen → Browser-Adresszeile (`/clients/3`) oder Tooltip „Client ID“ |
| `<SITE_ID>` | Standort-ID des Kunden | TacticalRMM → *Clients → Sites* → Site auswählen → ID in der Adresszeile (`/sites/1`) |
| `<AUTH_KEY>` | Installationsschlüssel (Authentifizierung) | TacticalRMM → *Settings → API Keys* → Kategorie **Agent Auth Keys** → Neuen Key erstellen oder bestehenden verwenden |
| `<AGENT_TYPE>` | Typ der Installation (`server` / `workstation`) | Nach internem Standard definieren – dient der Unterscheidung im Dashboard |

> ⚠️ **Hinweis:**  
> Auth-Keys und API-URLs sind **sensibel** und dürfen **nicht** in öffentlichen oder gemeinsam genutzten Dokumenten gespeichert werden.  
> Alle Parameter können auch über Administrator-Zugriff direkt aus den TacticalRMM-Einstellungen exportiert werden.

---

## ⚙️ Installation

### 🔧 Syntax
```bash
sudo bash linuxrmm.sh install <MESH_URL> <API_URL> <CLIENT_ID> <SITE_ID> <AUTH_KEY> <AGENT_TYPE>
```

### 💡 Beispiel
```bash
sudo bash linuxrmm.sh install \
"https://mesh.example.com/agent-linux64.sh" \
"https://rmm.example.com" \
3 1 "abcdefgh123456789" "server"
```

Das Skript lädt den passenden Agent (basierend auf der Systemarchitektur) herunter,  
konfiguriert ihn automatisch für den Mandanten und startet den Systemdienst.

---

## 🔁 Update des Linux-Agents
```bash
sudo bash linuxrmm.sh update
```
Der laufende Dienst wird gestoppt, aktualisiert und automatisch neu gestartet.  
Verbindungen zu TacticalRMM und MeshCentral bleiben erhalten.

---

## ❎ Deinstallation

### 🔧 Syntax
```bash
sudo bash linuxrmm.sh uninstall <MESH_FQDN> <MESH_ID>
```

### 💡 Beispiel
```bash
sudo bash linuxrmm.sh uninstall mesh.example.com A1B2C3D4E5
```

Der lokale Dienst und alle Dateien werden entfernt.  
Der Eintrag im TacticalRMM-Dashboard bleibt bestehen und kann dort manuell gelöscht werden.

---

## 🧭 Status- und Fehlerdiagnose

| Befehl | Beschreibung |
|--------|---------------|
| `sudo systemctl status linux-agent` | Zeigt den aktuellen Status des Agent-Dienstes |
| `journalctl -u linux-agent -n 50` | Zeigt die letzten 50 Log-Zeilen |
| `cat /var/log/linuxrmm/install.log` | Zeigt detaillierte Installations- und Laufzeit-Logs |
| `sudo bash linuxrmm.sh update` | Erzwingt eine manuelle Aktualisierung |

---

## 📁 Ordnerstruktur

| Pfad | Inhalt |
|------|--------|
| `/opt/linuxrmm/` | Hauptverzeichnis des Agents |
| `/opt/linuxrmm/conf/` | Konfiguration, Client- und Site-Informationen |
| `/opt/linuxrmm/bin/` | Agent-Binary und Startskripte |
| `/var/log/linuxrmm/` | Installations- und Laufzeit-Logs |

---

## ⚠️ Häufige Probleme

| Fehler | Ursache / Lösung |
|--------|------------------|
| `unsupported arch` | Architektur nicht unterstützt → `uname -m` prüfen |
| Dienst startet nicht automatisch | `sudo systemctl enable --now linux-agent` ausführen |
| Keine Verbindung zum Dashboard | Firewall / Proxy prüfen |
| API-Auth-Fehler | Auth-Key abgelaufen → neuen Key generieren |

---

## 💼 Best Practice
- Skript immer aus **interner Quelle** oder dem **internen Git-Repository** verwenden  
- Keine Auth-Keys oder API-URLs in Klartext speichern  
- Nach Installation prüfen, ob der Agent im Dashboard erscheint  
- Bei Server-Deployments kann das Skript automatisiert