diff --git a/scripts/server-httpd/setup_httpd.sh b/scripts/server-httpd/setup_httpd.sh
index cbd270d..8b3ffd5 100644
--- a/scripts/server-httpd/setup_httpd.sh
+++ b/scripts/server-httpd/setup_httpd.sh
@@ -13,13 +13,18 @@ update_system
 echo "=== Installation d'Apache et des outils nécessaires ==="
 apt install -y apache2 curl dnsutils certbot python3-certbot-apache
 
-# Activer et démarrer Apache
+# Activer et démarrer Apache uniquement si ce n'est pas déjà fait
 echo "=== Activation et démarrage d'Apache ==="
-systemctl enable apache2
-systemctl start apache2
+systemctl is-enabled apache2 || systemctl enable apache2
+systemctl is-active --quiet apache2 || systemctl start apache2
 
-# Activer les modules nécessaires
-a2enmod rewrite ssl headers
+# Activer les modules nécessaires uniquement s'ils ne le sont pas déjà
+MODULES=(rewrite ssl headers http2 socache_shmcb proxy proxy_http setenvif)
+for MODULE in "${MODULES[@]}"; do
+    if ! a2query -m "$MODULE" >/dev/null 2>&1; then
+        a2enmod "$MODULE"
+    fi
+done
 systemctl reload apache2
 
 # Récupérer le FQDN
@@ -29,22 +34,27 @@ echo "🔍 Serveur détecté : $FQDN"
 # Vérification DNS
 check_dns "$FQDN"
 
-# Configurer le VirtualHost
+# Configurer le VirtualHost uniquement si ce n'est pas déjà fait
 echo "=== Configuration du Virtual Host pour $FQDN ==="
-./add_domain.sh "$FQDN"
-EXIT_CODE=$?
-
-if [[ $EXIT_CODE -ne 0 ]]; then
-    echo "❌ Échec de la configuration du serveur ($FQDN). Code erreur : $EXIT_CODE"
-    exit $EXIT_CODE
+if ! grep -q "ServerName $FQDN" /etc/apache2/sites-available/*.conf; then
+    ./add_domain.sh "$FQDN"
+    EXIT_CODE=$?
+    if [[ $EXIT_CODE -ne 0 ]]; then
+        echo "❌ Échec de la configuration du serveur ($FQDN). Code erreur : $EXIT_CODE"
+        exit $EXIT_CODE
+    fi
 fi
 
-# Configuration SSL
+# Configuration SSL uniquement si nécessaire
 setup_ssl "$FQDN"
 
 # Sécurisation des accès
 echo "=== Sécurisation des accès ==="
-cat <<EOF > /etc/apache2/conf-available/security.conf
+SECURITY_CONF="/etc/apache2/conf-available/security.conf"
+# Vérifier si le fichier existe et contient déjà la configuration
+if [ ! -f "$SECURITY_CONF" ]; then
+    echo "Création de $SECURITY_CONF avec les paramètres de sécurité."
+    cat <<EOF > "$SECURITY_CONF"
 <Directory />
     AllowOverride None
     Require all denied
@@ -54,23 +64,99 @@ cat <<EOF > /etc/apache2/conf-available/security.conf
     Require all denied
 </FilesMatch>
 EOF
-a2enconf security
+    a2enconf security
+    systemctl reload apache2
+    echo "Configuration de sécurité appliquée et rechargement d'Apache."
+else
+    echo "Le fichier $SECURITY_CONF existe déjà. Aucune modification nécessaire."
+fi
+
+# Vérifier si le fichier de configuration existe
+if [ -f "$SECURITY_CONF" ]; then
+    # Vérifier si les directives sont déjà présentes pour éviter les doublons
+    if ! grep -q "Header always unset X-Powered-By" "$SECURITY_CONF"; then
+        echo "Ajout des directives de sécurité HTTP à $SECURITY_CONF."
+        cat <<EOF >> "$SECURITY_CONF"
 
 # Renforcement des en-têtes HTTP
-echo "=== Renforcement des en-têtes HTTP ==="
-cat <<EOF >> /etc/apache2/conf-available/security.conf
 ServerTokens Prod
 ServerSignature Off
 TraceEnable Off
 Header always unset X-Powered-By
 EOF
+        echo "Configuration mise à jour et rechargement d'Apache."
+    else
+        echo "Les directives de sécurité HTTP sont déjà présentes. Aucune modification nécessaire."
+    fi
+else
+    echo "Erreur : le fichier $SECURITY_CONF n'existe pas. Assurez-vous que la configuration de sécurité est en place."
+fi
 
-# Activer HTTP Strict Transport Security (HSTS)
-echo "Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\"" >> /etc/apache2/sites-available/default-ssl.conf
+# Activer HTTP Strict Transport Security (HSTS) uniquement si nécessaire
+SSL_CONF="/etc/apache2/sites-available/default-ssl.conf"
+if ! grep -q "Strict-Transport-Security" "$SSL_CONF"; then
+    echo "Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\"" >> "$SSL_CONF"
+fi
 
-# Limitation de la taille des requêtes
+
+# Activation de l'OCSP Stapling uniquement si nécessaire
+echo "=== Activation de l'OCSP Stapling ==="
+# Vérifier si le fichier de configuration SSL existe
+if [ -f "$SSL_CONF" ]; then
+    # Vérifier si l'option est déjà activée pour éviter les doublons
+    if ! grep -q "^SSLUseStapling on" "$SSL_CONF"; then
+        echo "Ajout des directives OCSP Stapling à $SSL_CONF."
+        cat <<EOF >> "$SSL_CONF"
+
+# Configuration OCSP Stapling
+SSLUseStapling on
+SSLStaplingResponderTimeout 5
+SSLStaplingReturnResponderErrors off
+SSLStaplingCache shmcb:/var/run/ocsp(128000)
+EOF
+        systemctl reload apache2
+        echo "Configuration OCSP Stapling mise à jour et rechargement d'Apache."
+    else
+        echo "OCSP Stapling est déjà activé. Aucune modification nécessaire."
+    fi
+else
+    echo "Erreur : le fichier $SSL_CONF n'existe pas. Assurez-vous que le module SSL est bien installé."
+fi
+
+# Désactivation des chiffres faibles et renforcement TLS
+echo "=== Renforcement de la configuration SSL/TLS ==="
+
+SSL_MOD_CONF="/etc/apache2/mods-available/ssl.conf"
+
+# Vérifier si le fichier de configuration SSL existe
+if [ -f "$SSL_MOD_CONF" ]; then
+    # Vérifier si la configuration est déjà appliquée pour éviter les doublons
+    if ! grep -q "^SSLProtocol -all +TLSv1.2 +TLSv1.3" "$SSL_MOD_CONF"; then
+        echo "Ajout des directives SSL/TLS sécurisées à $SSL_MOD_CONF."
+        cat <<EOF >> "$SSL_MOD_CONF"
+
+# Renforcement de la configuration SSL/TLS
+SSLProtocol -all +TLSv1.2 +TLSv1.3
+SSLCipherSuite TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
+SSLHonorCipherOrder on
+SSLCompression off
+SSLSessionTickets off
+EOF
+        systemctl reload apache2
+        echo "Configuration SSL/TLS mise à jour et rechargement d'Apache."
+    else
+        echo "La configuration SSL/TLS est déjà sécurisée. Aucune modification nécessaire."
+    fi
+else
+    echo "Erreur : le fichier $SSL_MOD_CONF n'existe pas. Assurez-vous que le module SSL est bien installé."
+fi
+
+
+# Limitation de la taille des requêtes (éviter les doublons)
 echo "=== Limitation de la taille des requêtes ==="
-echo "LimitRequestBody 10485760" >> /etc/apache2/conf-available/security.conf
+if ! grep -q "LimitRequestBody" "$SECURITY_CONF"; then
+    echo "LimitRequestBody 10485760" >> "$SECURITY_CONF"
+fi
 
 # Vérifier la configuration avant rechargement
 echo "=== Vérification de la configuration Apache ==="
@@ -80,14 +166,14 @@ if [[ $? -ne 0 ]]; then
     exit 1
 fi
 
-# Appliquer des permissions sécurisées
+# Appliquer des permissions sécurisées (éviter les erreurs si déjà appliquées)
 echo "=== Sécurisation des permissions des fichiers de configuration ==="
-chmod 640 /etc/apache2/sites-available/*
-chmod 640 /etc/apache2/conf-available/*
-chown root:root /etc/apache2/sites-available/*
-chown root:root /etc/apache2/conf-available/*
+chmod 640 /etc/apache2/sites-available/* 2>/dev/null
+chmod 640 /etc/apache2/conf-available/* 2>/dev/null
+chown root:root /etc/apache2/sites-available/* 2>/dev/null
+chown root:root /etc/apache2/conf-available/* 2>/dev/null
 
 # Rechargement final d'Apache
 systemctl reload apache2
 
-echo "✅ Installation et sécurisation d'Apache terminées !"
+echo "✅ Installation et sécurisation d'Apache terminées !"
\ No newline at end of file