feat: add applications management to the agent and backend
All checks were successful
Build and Push Docker Images / docker (push) Successful in 25s

- Updated agent to version 1.4.0 with new endpoints for managing Docker Compose applications.
- Implemented API requests in the backend for listing, creating, editing, and deploying applications.
- Introduced a new AppsModal component in the frontend for user interaction with applications.
- Added YAML editor for editing Docker Compose files with validation.
- Enhanced VpsCard component to include options for managing applications.
- Updated client API functions to support new application management features.
This commit is contained in:
jeanotx32
2026-08-01 02:11:24 -04:00
parent e277e99155
commit 71c17e3dc1
8 changed files with 978 additions and 13 deletions

View File

@@ -141,6 +141,7 @@ Le fichier `.env` supporte les variables suivantes :
| `AGENT_API_KEY` | *(généré)* | Clé secrète partagée avec le backend |
| `AGENT_PORT` | `8001` | Port TCP d'écoute |
| `AGENT_MAX_EXEC_SESSIONS` | `10` | Nombre de terminaux ouverts simultanément (voir ci-dessous) |
| `AGENT_APPS_DIR` | `/home` | Racine des applications compose (voir ci-dessous) |
Pour modifier la configuration sans réinstaller :
@@ -186,6 +187,40 @@ proxy_read_timeout 3600s;
---
## Applications compose (agent 1.4.0+)
L'agent expose les fichiers compose rangés selon la convention
`/home/<application>/compose.yaml` (les noms `compose.yml`, `docker-compose.yml`
et `docker-compose.yaml` sont également reconnus). L'interface web permet de les
lister, les éditer, en créer de nouveaux et déployer.
| Route agent | Effet |
|-------------|-------|
| `GET /apps` | Liste les dossiers de `/home` contenant un fichier compose, avec le nombre de conteneurs actifs |
| `GET /apps/{nom}/compose` | Contenu du fichier |
| `PUT /apps/{nom}/compose` | Écrit le fichier (`deploy: true` enchaîne sur un déploiement) |
| `POST /apps` | Crée `/home/<nom>/` et son fichier compose |
| `POST /apps/{nom}/up` | `docker compose pull` puis `up -d` dans le dossier |
Garde-fous appliqués :
- **Validation avant écriture.** Le contenu est d'abord vérifié par
`docker compose config` sur un fichier temporaire, dans le dossier de
l'application pour que `.env` et chemins relatifs soient résolus comme au
déploiement. Un fichier invalide est refusé et **rien n'est écrit**.
- **Sauvegarde.** L'ancienne version est copiée en `<fichier>.bak` avant chaque
écriture.
- **Périmètre.** Le nom d'application est restreint à
`[A-Za-z0-9][A-Za-z0-9._-]*` et le chemin résolu doit rester directement sous
`AGENT_APPS_DIR` — les `..` et les liens symboliques sortants sont rejetés.
- **Taille** limitée à 512 kB par fichier.
- **Réservé aux administrateurs**, comme le terminal.
Si vos applications ne sont pas sous `/home`, changez `AGENT_APPS_DIR` dans
`/opt/vps-monitor-agent/.env` puis redémarrez le service.
---
## Dépôt source
[https://git.jeanbonapp.com/jeanbon/ScriptVPS](https://git.jeanbonapp.com/jeanbon/ScriptVPS)