From fdc6d83bdf657106f31fa34cd800a5a2f57136e3 Mon Sep 17 00:00:00 2001 From: yacine Date: Sat, 20 Jun 2026 20:36:35 +0000 Subject: [PATCH] docs: complete README with recent patches, build/push and upgrade instructions --- README.md | 48 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 08ec883..4950470 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ avec le reverse proxy dynamique d'EduBox. ## Pourquoi une image patchée ? -PrestaShop 9 (Apache 2.4 + PHP 8.5) a deux problèmes majeurs derrière EduBox : +PrestaShop 9 (Apache 2.4 + PHP 8.5) a plusieurs problèmes majeurs derrière EduBox : 1. Les headers `X-Forwarded-*` sont corrompus par Apache/PHP : `$_SERVER` les reçoit sous forme d'arrays au lieu de strings. On contourne ce bug via @@ -15,33 +15,53 @@ PrestaShop 9 (Apache 2.4 + PHP 8.5) a deux problèmes majeurs derrière EduBox : chaque instance (`.alfrednobel.edudeploy.com`) et toutes les requêtes publiques arrivent en HTTPS. Les patches forcent l'utilisation de l'hôte et du protocole de la requête courante. +3. Les agents étudiants peuvent être hors ligne. Le pack de langue français est + donc embarqué dans l'image pour éviter tout téléchargement pendant + l'installation. -## Build +## Build local ```bash cd /opt/edubox/prestashop-image docker build -t edubox-prestashop:9 . ``` +## Push sur le registry Gitea + +```bash +docker tag edubox-prestashop:9 \ + 151.80.60.98:3001/yacine/edubox/edubox-prestashop:9-edubox-7 +docker push \ + 151.80.60.98:3001/yacine/edubox/edubox-prestashop:9-edubox-7 +``` + ## Patches appliqués | Patch | Fichier modifié | Objectif | |-------|-----------------|----------| -| `edubox-tools.patch` | `classes/Tools.php` | `getShopDomain()` / `getShopDomainSsl()` utilisent `getHttpHost()` dynamiquement. | -| `edubox-link.patch` | `classes/Link.php` | `getBaseLink()` utilise `usingSecureMode()` et `getHttpHost()`. | +| `edubox-tools.patch` | `classes/Tools.php` | `getShopDomain()` / `getShopDomainSsl()` utilisent `getHttpHost()` dynamiquement ; `.htaccess` généré sans condition `HTTP_HOST` (images/catégories). | +| `edubox-link.patch` | `classes/Link.php` | `getBaseLink()` et `getAdminBaseLink()` utilisent `usingSecureMode()` et `getHttpHost()`. | | `edubox-frontcontroller.patch` | `classes/controller/FrontController.php` | Désactive `sslRedirection()` pour éviter les boucles HTTP/HTTPS. | | `edubox-shop.patch` | `classes/shop/Shop.php` | `Shop::initialize()` utilise le shop par défaut sans redirection forcée. | +| `edubox-shopurl.patch` | `classes/shop/ShopUrl.php` | `getMainShopDomain()` / `getMainShopDomainSSL()` retournent le domaine de la requête. | | `edubox-shopcontext.patch` | `src/Core/Context/ShopContext.php` | `getBaseURL()` du BO est reconstruit à partir de la requête courante. | | `edubox-asseturl.patch` | `src/Adapter/Assets/AssetUrlGeneratorTrait.php` | Les assets CCC utilisent le protocole de la requête, pas `PS_SSL_ENABLED`. | | `edubox-install.patch` | `src/PrestaShopBundle/Install/Install.php` | `finalize()` respecte `PS_FOLDER_ADMIN` (évite le bug overlayfs `admin` → `admin-edubox`). | +| `edubox-install-language.patch` | `src/PrestaShopBundle/Install/Install.php` | Évite le téléchargement du pack legacy `fr.gzip` quand le pack Symfony est embarqué. | +| `edubox-language.patch` | `classes/Language.php` | Utilise `_PS_TRANSLATIONS_DIR_` au runtime pour le cache langue ; évite le téléchargement réseau si le pack est présent. | +| `edubox-docker-run.patch` | `/tmp/docker_run.sh` | Supprime un `install.lock` résiduel si une installation précédente a échoué. | ## Fichiers injectés - `proxy.conf` : Apache truste `X-Forwarded-Proto: https` pour positionner - `HTTPS=on` dans l'environnement PHP. + `HTTPS=on` dans l'environnement PHP. Active aussi `AllowOverride All` pour + que le `.htaccess` de PrestaShop fonctionne. - `config/defines_custom.inc.php` : normalise `HTTP_X_FORWARDED_HOST`, `HTTP_X_FORWARDED_PROTO` et `HTTP_HOST` corrompus ; définit `PS_TRUSTED_PROXIES` pour Symfony. +- `translations-symfony-fr-FR.zip` → copié sous `sf-fr-FR.zip` dans + `/var/www/html/translations/` : pack de langue Symfony français embarqué + ( PrestaShop attend le préfixe `sf-` ). ## Utilisation dans EduBox @@ -49,15 +69,25 @@ Le template PrestaShop 9 dans `server/prisma/seed.ts` utilise cette image : ```yaml app: - image: edubox-prestashop:9 + image: 151.80.60.98:3001/yacine/edubox/edubox-prestashop:9-edubox-7 ``` +## Mise à jour vers une nouvelle version de PrestaShop + +Si PrestaShop sort une version `9.x.y` : + +1. Modifier le `FROM` du Dockerfile : `FROM prestashop/prestashop:9.x.y` +2. Relancer le build. Les patches qui échouent doivent être adaptés aux + nouvelles lignes/code de PrestaShop. +3. Re-tagger et pousser : `9.x.y-edubox-1`. +4. Mettre à jour `server/prisma/seed.ts` avec le nouveau tag. + ## Déploiement sur les agents L'image doit être accessible depuis chaque agent étudiant. Deux options : 1. **Registry privé** (recommandé) : tagger et pousser l'image sur un registry (Docker Hub, registry Gitea, GHCR, etc.) puis mettre à jour - `server/prisma/seed.ts` avec le nom complet (`monregistry/edubox-prestashop:9`). -2. **Build manuel sur chaque agent** : copier le dossier `prestashop-image` sur - l'agent et lancer `docker build` avant le premier déploiement. + `server/prisma/seed.ts` avec le nom complet. +2. **Build manuel sur chaque agent** : copier ce dossier sur l'agent et lancer + `docker build` avant le premier déploiement.