From ca177d3e7bbe55e4957379e6c8182278747e18b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Sun, 20 Sep 2026 10:16:21 +0200 Subject: [PATCH] Ancrer le relais sur le VirtualHost 443, pas sur certbot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'installateur cherchait la ligne Include des options SSL de Let's Encrypt pour savoir où poser le ProxyPass. Elle n'existe que dans les vhosts écrits par certbot : celui qu'ISPConfig génère porte ses propres directives SSLCertificate*, et le patch échouait sur sites-available. L'ancrage devient l'ouverture du bloc *:443, que les deux ont. Deux autres choses au passage : un vhost récalcitrant n'interrompt plus le script avant le rechargement d'Apache — il est signalé à la fin — et le fichier est réécrit en place plutôt que remplacé par un `mv`, qui lui aurait donné des droits neufs et lui aurait retiré son ACL. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01CTvii1CYBLjD14uvuD7Kos --- deploiement/installer.sh | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/deploiement/installer.sh b/deploiement/installer.sh index 982f8d7..2135c62 100755 --- a/deploiement/installer.sh +++ b/deploiement/installer.sh @@ -61,23 +61,31 @@ patcher_vhost() { return 0 fi cp -a "$fichier" "$fichier.bak-$(date +%Y%m%d%H%M)" - # Inséré juste avant le premier Include letsencrypt, donc dans le VirtualHost *:443. + # Inséré en tête du VirtualHost *:443. L'ancrage précédent — la ligne Include des + # options SSL de Let's Encrypt — n'existe que dans les vhosts écrits par certbot : + # celui qu'ISPConfig génère porte ses propres directives SSLCertificate*. awk ' - !fait && /Include \/etc\/letsencrypt\/options-ssl-apache\.conf/ { + { print } + !fait && /^[[:space:]]*]*:443>/ { print "\t\tProxyPass /deploy http://127.0.0.1:9877/deploy" print "\t\tProxyPassReverse /deploy http://127.0.0.1:9877/deploy" fait = 1 } - { print } - ' "$fichier" > "$fichier.tmp" && mv "$fichier.tmp" "$fichier" + ' "$fichier" > "$fichier.tmp" || return 1 + # Recopié dans le fichier plutôt que déplacé par-dessus : un `mv` remplacerait + # l'original par un fichier neuf, avec d'autres droits et sans son ACL. + cat "$fichier.tmp" > "$fichier" && rm -f "$fichier.tmp" grep -q "127.0.0.1:9877" "$fichier" || { echo " ÉCHEC sur $fichier" >&2; return 1; } echo " $fichier : relais ajouté" } # Sur owni, sites-enabled contient des copies et non des liens : les deux sont à traiter. +# Un vhost récalcitrant ne doit pas emporter la suite : c'est celui de sites-enabled qui +# sert, et Apache attend d'être rechargé. On note l'échec et on le dit à la fin. +manques="" for vhost in /etc/apache2/sites-enabled/100-alpinux.org.vhost \ /etc/apache2/sites-available/alpinux.org.vhost; do - patcher_vhost "$vhost" + patcher_vhost "$vhost" || manques="$manques $vhost" done if apache2ctl configtest; then @@ -88,6 +96,13 @@ else exit 1 fi +if [ -n "$manques" ]; then + echo + echo "Relais non posé dans :$manques" >&2 + echo "Le déploiement fonctionne — c'est sites-enabled qui sert — mais si ISPConfig" >&2 + echo "recopie un jour le vhost par-dessus, le relais sera à remettre." >&2 +fi + echo echo "────────────────────────────────────────────────────────────" echo "Reste à déclarer le webhook dans Gitea :"