v0.1.22
Central
Application de supervision du SI Malio. Permet de piloter le mode maintenance de toutes les applications sans se connecter a chaque projet.
Installation
make start
make install
make fixtures
Acces
- Frontend : http://localhost:8084
- API : http://localhost:8084/api
- Dev Nuxt (hot reload) : http://localhost:3003
- Login :
admin/admin
Applications gerees
| Application | Slug | Port prod | Fichier maintenance |
|---|---|---|---|
| SIRH | sirh |
8080 | /var/www/sirh/maintenance.on |
| Lesstime | lesstime |
8081 | /var/www/lesstime/maintenance.on |
| Inventory | inventory |
8082 | /var/www/inventory/maintenance.on |
La configuration est dans config/applications.yaml.
Comment fonctionne la maintenance
Architecture
Central (container Docker, port 8084)
|
| Volumes Docker :
| /var/www/sirh (hote) --> /var/www/maintenance/sirh (container)
| /var/www/lesstime (hote) --> /var/www/maintenance/lesstime (container)
| /var/www/inventory (hote) --> /var/www/maintenance/inventory (container)
|
| Quand l'admin clique "Activer maintenance" sur Lesstime :
|
v
API : POST /api/applications/lesstime/maintenance { "maintenance": true }
|
v
MaintenanceToggleProcessor
--> touch /var/www/maintenance/lesstime/maintenance.on (dans le container)
--> via le volume Docker, cree /var/www/lesstime/maintenance.on sur l'hote
|
v
Nginx de l'hote (reverse proxy de Lesstime) :
if (-f /var/www/lesstime/maintenance.on) --> return 503
--> sert /var/www/lesstime/public/maintenance.html
Cote Central (ce projet)
config/applications.yamldefinit les apps et leurmaintenance_path(variable d'env)- Les variables d'env (
SIRH_MAINTENANCE_PATH, etc.) pointent vers/var/www/maintenance/{slug}/maintenance.on - Le
docker-compose.ymlprod monte les dossiers de deploy des apps vers/var/www/maintenance/ MaintenanceToggleProcessorcree ou supprime le fichiermaintenance.onManagedApplicationProviderlitfile_exists()pour afficher l'etat actuel
Cote application cible (SIRH, Lesstime, Inventory)
Chaque application doit avoir :
- Un
maintenance.htmldans/var/www/{app}/public/sur le serveur (extrait automatiquement pardeploy.sh) - Un nginx reverse proxy sur l'hote qui verifie l'existence du fichier
maintenance.on:
server {
server_name app.malio-dev.fr;
root /var/www/{app}/public;
if (-f /var/www/{app}/maintenance.on) {
return 503;
}
error_page 503 @maintenance;
location @maintenance { rewrite ^(.*)$ /maintenance.html break; }
location = /maintenance.html { internal; }
location / {
proxy_pass http://127.0.0.1:{port};
# headers...
}
}
Ajouter une nouvelle application
- Ajouter l'entree dans
config/applications.yaml - Ajouter la variable d'env
{APP}_MAINTENANCE_PATHdans.envet.envprod - Ajouter le volume dans
docker-compose.ymlprod :/var/www/{app}:/var/www/maintenance/{app} - Configurer le nginx reverse proxy de l'hote pour la nouvelle app (voir ci-dessus)
- S'assurer que
maintenance.htmlexiste dans/var/www/{app}/public/
Stack
- Backend : PHP 8.4, Symfony 8.0, API Platform 4
- Frontend : Nuxt 4 (SPA), Vue 3, Tailwind CSS
- Auth : JWT HTTP-only cookie
- Docker : PHP-FPM + Nginx + Supervisor
Deploiement
Voir doc/deployment-docker.md pour le guide complet.
cd /var/www/central
./deploy.sh # latest
./deploy.sh v0.1.5 # version specifique
Description
Languages
PHP
65%
Vue
21.7%
TypeScript
8%
Dockerfile
2.1%
CSS
1.7%
Other
1.5%