69 lines
2.7 KiB
Markdown
69 lines
2.7 KiB
Markdown
# 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.
|
||
- `/` redirige vers l’URL configurée dans `/admin/settings`, ou vers `/admin` si 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 `Synchroniser` clone 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:sync` toutes les 5 minutes.
|
||
- 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`
|
||
|
||
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 :
|
||
|
||
```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. Optionnel : configurer l’URL de redirection de `/` via `Configuration`.
|
||
3. 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é
|
||
4. Cliquer sur `Synchroniser`.
|
||
5. Appeler `http://localhost:8080/mcp/graylog/install.sh`.
|