diff --git a/README.md b/README.md new file mode 100644 index 0000000..6b3289f --- /dev/null +++ b/README.md @@ -0,0 +1,64 @@ +# Get Installer Bootstrap + +Application web qui sert des scripts `.sh` depuis un cache local alimenté par des dépôts Git. + +Exemple : un mapping `mcp/graylog/install.sh` peut servir le fichier `install.sh` du dépôt `https://forge.lclr.dev/AI/graylog-mcp.git`. + +## Fonctionnement + +- `/admin` affiche l’écran de connexion puis l’interface de gestion. +- Un mapping lie un chemin public `.sh` à une URL Git, une référence Git et un chemin de fichier dans le dépôt. +- Le bouton `Synchroniser` clone ou met à jour le dépôt, extrait la référence demandée et copie le fichier dans le cache. +- Les chemins publics hors `/admin` servent uniquement les scripts déjà synchronisés. +- Un token d’accès optionnel peut être renseigné pour les dépôts privés en HTTPS. Il est utilisé via `GIT_ASKPASS` pendant la synchronisation. + +## Développement + +```bash +docker compose -f compose.yaml -f compose.dev.yaml up -d --build +docker compose -f compose.yaml -f compose.dev.yaml exec app php bin/console app:admin:create admin 'change-me' +``` + +L’application est disponible sur `http://localhost:8080`. + +Le fichier `compose.dev.yaml` monte le répertoire local dans `/app`, ce qui permet de tester les changements sans rebuild de l’image. + +## Production / Coolify + +Déployer avec `compose.yaml`. + +Variables utiles : + +```dotenv +APP_SECRET=replace-with-a-long-random-secret +HTTP_PORT=8080 +``` + +Les migrations SQLite sont exécutées au démarrage du conteneur `app`. Les volumes Docker conservent : + +- `app-data` : base SQLite `/app/var/data/app.db` +- `app-cache` : dépôts clonés et scripts servis depuis `/app/var/bootstrap-cache` + +Créer ou mettre à jour un compte admin : + +```bash +docker compose exec app php bin/console app:admin:create admin 'strong-password' +``` + +## Tests + +```bash +docker compose -f compose.yaml -f compose.dev.yaml run --rm -e APP_ENV=test app php vendor/bin/phpunit +``` + +## Servir un script + +1. Se connecter sur `/admin`. +2. Créer un mapping : + - Chemin public : `mcp/graylog/install.sh` + - Dépôt : `https://forge.lclr.dev/AI/graylog-mcp.git` + - Réf. : `main` + - Fichier : `install.sh` + - Token : optionnel, pour dépôt privé +3. Cliquer sur `Synchroniser`. +4. Appeler `http://localhost:8080/mcp/graylog/install.sh`.