# VPS Monitor Agent — Guide d'installation

L'agent est un service léger à déployer sur chaque VPS à superviser.  
Il expose une API REST locale que le backend central interroge pour lire l'état des conteneurs Docker et exécuter des actions.

---

## Prérequis

| Dépendance | Version minimale | Installation |
|------------|-----------------|--------------|
| Python 3   | 3.10+           | `apt install python3 python3-venv` |
| Docker     | 24+             | [docs.docker.com](https://docs.docker.com/engine/install/) |
| curl       | —               | `apt install curl` |
| systemd    | —               | Inclus sur Debian/Ubuntu/Rocky |

---

## Installation rapide (one-liner)

```bash
curl -fsSL https://git.jeanbonapp.com/jeanbon/ScriptVPS/raw/branch/main/vps-monitor/agent/install.sh \
  | sudo bash
```

La clé API et le port sont générés/affichés automatiquement à la fin.

---

## Options disponibles

```
sudo bash install.sh [OPTIONS]

Options :
  --key   <clé>     Clé API à utiliser (générée aléatoirement si omise)
  --port  <port>    Port d'écoute de l'agent (défaut : 8001)
  --branch <nom>    Branche du dépôt à utiliser (défaut : main)
  --update          Met à jour l'agent sans changer la configuration
  --uninstall       Supprime complètement l'agent et le service
```

### Exemples

```bash
# Installation avec une clé et un port personnalisés
sudo bash install.sh --key "ma-super-cle-secrete" --port 8002

# Installer depuis une branche de développement
sudo bash install.sh --branch develop

# Mettre à jour vers la dernière version
sudo bash install.sh --update

# Désinstaller
sudo bash install.sh --uninstall
```

---

## Ce que fait le script

1. **Télécharge** `agent.py` et `requirements.txt` depuis le dépôt Gitea (branche configurable).
2. **Crée** `/opt/vps-monitor-agent/` avec un environnement virtuel Python isolé.
3. **Installe** les dépendances Python (`fastapi`, `uvicorn`, `docker`).
4. **Génère** `/opt/vps-monitor-agent/.env` avec la clé API et le port (permissions `600`).
5. **Configure** et **démarre** le service systemd `vps-monitor-agent`.
6. **Affiche** l'adresse IP publique et la clé API à copier dans le backend.

---

## Arborescence installée

```
/opt/vps-monitor-agent/
├── agent.py          # Code de l'agent
├── requirements.txt  # Dépendances Python
├── .env              # Clé API et port (chmod 600)
└── venv/             # Environnement virtuel Python
```

---

## Gestion du service

```bash
# État
systemctl status vps-monitor-agent

# Logs en direct
journalctl -u vps-monitor-agent -f

# Redémarrer
systemctl restart vps-monitor-agent

# Arrêter
systemctl stop vps-monitor-agent
```

---

## Mise à jour

```bash
sudo bash install.sh --update
```

Le script `--update` :
- Retélécharge `agent.py` et `requirements.txt` depuis le dépôt.
- Met à jour les dépendances Python si besoin.
- Redémarre le service.
- **Conserve** la clé API et le port existants.

Pour mettre à jour le script lui-même avant de lancer `--update` :

```bash
curl -fsSL https://git.jeanbonapp.com/jeanbon/ScriptVPS/raw/branch/main/vps-monitor/agent/install.sh \
  -o install.sh && sudo bash install.sh --update
```

---

## Configuration du backend central

Après l'installation, renseignez les informations de l'agent dans l'interface web :

| Champ | Valeur |
|-------|--------|
| Hôte  | IP publique du VPS |
| Port  | Port choisi (défaut `8001`) |
| Clé API | Affichée à la fin de l'installation |

---

## Variables d'environnement

Le fichier `.env` supporte les variables suivantes :

| Variable | Défaut | Description |
|----------|--------|-------------|
| `AGENT_API_KEY` | *(généré)* | Clé secrète partagée avec le backend |
| `AGENT_PORT` | `8001` | Port TCP d'écoute |

Pour modifier la configuration sans réinstaller :

```bash
sudo nano /opt/vps-monitor-agent/.env
sudo systemctl restart vps-monitor-agent
```

---

## Dépôt source

[https://git.jeanbonapp.com/jeanbon/ScriptVPS](https://git.jeanbonapp.com/jeanbon/ScriptVPS)
