Aller au contenu

kamctrl — Interface Admin Réservations

kamctrl.levell.cloud est l’interface d’administration back-office de Keur Adja Maye. Elle permet de gérer les réservations, clients, unités, paiements et factures.

/docker/kamctrl/
├── Dockerfile
├── docker-compose.yml
├── .env ← Configuration (secrets, non versionné)
├── docker/
│ ├── nginx.conf ← Config Nginx interne
│ ├── supervisord.conf ← Gère PHP-FPM + Nginx
│ └── entrypoint.sh ← Script de démarrage
├── app/ ← Code Laravel (Controllers, Models, etc.)
├── routes/ ← Routes web et API
├── resources/views/ ← Templates Blade
├── database/
│ └── database.sqlite ← Base de données (dans le volume kamctrl_db)
└── public/build/ ← Assets compilés
TechnologieUsage
LaravelFramework PHP
PHPRuntime
SQLiteBase de données (dans un volume Docker)
Vite + Alpine.jsFrontend
NginxServeur web interne
PHP-FPMProcess manager PHP
SupervisorGère Nginx + PHP-FPM dans un seul container

Un seul container fait tourner deux processus supervisés par Supervisor :

  • nginx — sert les fichiers statiques et proxifie vers PHP-FPM
  • php-fpm — exécute le code PHP Laravel
Requête HTTP
Nginx (port 80)
├── /build/* → fichiers statiques directement
└── *.php / routes → PHP-FPM
Laravel

À chaque démarrage, docker/entrypoint.sh :

  1. Crée les dossiers storage/framework/ nécessaires
  2. Règle les permissions
  3. Lance php artisan migrate --force (applique les migrations)
  4. Met en cache la config et les routes (config:cache, route:cache)
  5. Démarre Supervisor

SQLite — le fichier database.sqlite est dans le volume Docker kamctrl_db (persistant entre les redémarrages).

Fenêtre de terminal
# Accéder à la BDD depuis le serveur hôte (commande à récupérer dans context.md)
sudo sqlite3 <chemin_volume>/database.sqlite
# Requête rapide
sudo sqlite3 <chemin_volume>/database.sqlite "SELECT COUNT(*) FROM reservations;"
VariableDescription
APP_KEYClé de chiffrement Laravel (ne jamais changer en prod)
APP_URLURL publique de l’application
DB_CONNECTIONsqlite
MAIL_HOSTServeur mail SMTP
OPENROUTER_API_KEYClé OpenRouter pour les fonctionnalités IA

Les valeurs exactes sont dans .lab_tracking/context.md sur le serveur.

Laravel doit savoir qu’il est derrière un proxy HTTPS. La configuration dans bootstrap/app.php :

$middleware->trustProxies(at: '*', headers:
\Illuminate\Http\Request::HEADER_X_FORWARDED_FOR |
\Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO
);

Sans ça, toutes les URLs générées seraient en http:// au lieu de https://.

Fenêtre de terminal
cd /docker/kamctrl
# 1. Modifier le code
# 2. Commiter
git add -A && git commit -m "feat: description"
# 3. Rebuilder le container
docker compose up -d --build
# 4. Vérifier
docker logs kamctrl --tail 20
curl -sI https://kamctrl.levell.cloud | head -3
Fenêtre de terminal
# Logs du container (Supervisor + Nginx + PHP-FPM)
docker logs kamctrl --tail 50
# Logs Laravel (dans le container)
docker exec kamctrl tail -30 storage/logs/laravel.log

L’interface est protégée par un système d’authentification Laravel. Le compte admin initial a été importé lors de la migration depuis l’ancienne base de données.