App web qui bootstrap des installer bash, liés à des repos git paramétrables via une page admin
| bin | ||
| config | ||
| docker | ||
| docs/superpowers | ||
| migrations | ||
| public | ||
| src | ||
| templates | ||
| tests | ||
| .dockerignore | ||
| .editorconfig | ||
| .env | ||
| .env.test | ||
| .gitignore | ||
| compose.dev.yaml | ||
| compose.yaml | ||
| composer.json | ||
| composer.lock | ||
| crontab | ||
| phpunit.xml.dist | ||
| README.md | ||
| symfony.lock | ||
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
/adminaffiche l’écran de connexion puis l’interface de gestion./redirige vers l’URL configurée dans/admin/settings, ou vers/adminsi aucune URL n’est configurée.- 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
Synchroniserclone ou met à jour le dépôt, extrait la référence demandée et copie le fichier dans le cache. - En production, un cron embarqué dans l’image relance
app:mappings:synctoutes les 5 minutes. - Les chemins publics hors
/adminservent 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_ASKPASSpendant la synchronisation.
Développement
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 :
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.dbapp-cache: dépôts clonés et scripts servis depuis/app/var/bootstrap-cache
Le fichier crontab à la racine du projet est copié dans l’image app. Le cron démarre uniquement quand APP_ENV=prod et que le conteneur lance php-fpm.
Créer ou mettre à jour un compte admin :
docker compose exec app php bin/console app:admin:create admin 'strong-password'
Tests
docker compose -f compose.yaml -f compose.dev.yaml run --rm -e APP_ENV=test app php vendor/bin/phpunit
Servir un script
- Se connecter sur
/admin. - Optionnel : configurer l’URL de redirection de
/viaConfiguration. - 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é
- Chemin public :
- Cliquer sur
Synchroniser. - Appeler
http://localhost:8080/mcp/graylog/install.sh.