docs: prioritize nginx, fix sample config and use certbot snap

This commit is contained in:
2026-07-25 16:44:24 +04:00
parent dafb5e5753
commit 84013376f2
3 changed files with 77 additions and 48 deletions
+47 -21
View File
@@ -37,9 +37,9 @@ NOTE: Sur un hébergement mutualisé (pas d'accès root), adaptez : les fichiers
[source,bash]
----
# Apache + PHP (choix retenu pour ce guide ; Nginx possible, voir §5)
# Nginx + PHP-FPM (choix recommandé ; Apache possible, voir §5 option B)
apt update && apt upgrade -y
apt install -y apache2 php libapache2-mod-php \
apt install -y nginx php-fpm \
php-curl php-intl php-mbstring php-xml \
git curl unzip
@@ -90,11 +90,12 @@ Ces fichiers sont ignorés par Git : ils vivent *uniquement sur le serveur* et n
----
cd /var/www/annu-kute-ced
sudo -u deploy cp includes/config.local.php.sample includes/config.local.php
sudo -u deploy cp conf/.htaccess.sample .htaccess
sudo -u deploy cp site.webmanifest.sample site.webmanifest
sudo -u deploy cp robots.txt.sample robots.txt
sudo -u deploy cp sitemap.xml.sample sitemap.xml
sudo -u deploy cp mentions-legales.php.sample mentions-legales.php
# Uniquement si vous utilisez Apache (option B de l'étape 5) :
# sudo -u deploy cp conf/.htaccess.sample .htaccess
# Facultatif (page de dons) :
# sudo -u deploy cp dons.php.sample dons.php
----
@@ -114,10 +115,27 @@ chown -R www-data:www-data /var/www/annu-kute-ced/cache
== 5️⃣ VirtualHost
=== Option A — Apache (recommandée, `.htaccess` fourni)
=== Option A — Nginx + PHP-FPM (recommandée, configuration fournie)
Le fichier `conf/nginx.conf.sample` est l'équivalent Nginx complet du `.htaccess` : mêmes protections (fichiers de configuration, répertoires sensibles, dotfiles, pas de listing), masquage de l'extension `.php`, HTTPS forcé, `no-cache` pour `sw.js` et `site.webmanifest`, plus le cache des assets et gzip.
[source,bash]
----
# Adapter conf/nginx.conf.sample :
# - server_name : votre domaine
# - root : /var/www/annu-kute-ced
# - fastcgi_pass : socket de votre version PHP (ex. /var/run/php/php8.3-fpm.sock)
# - ssl_certificate(_key) : chemins de vos certificats (étape 6)
cp conf/nginx.conf.sample /etc/nginx/sites-available/annu-kute-ced
ln -s /etc/nginx/sites-available/annu-kute-ced /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
----
=== Option B — Apache
[source,bash]
----
apt install -y apache2 php libapache2-mod-php
a2enmod rewrite headers
cat > /etc/apache2/sites-available/annu-kute-ced.conf <<'EOF'
<VirtualHost *:80>
@@ -137,28 +155,36 @@ systemctl reload apache2
Le `.htaccess` copié à l'étape 4 applique les règles de sécurité, le HTTPS forcé (actif après l'étape 6) et le `no-cache` de `sw.js`.
=== Option B — Nginx + PHP-FPM
[source,bash]
----
apt install -y nginx php-fpm
# Adapter conf/nginx.conf.sample : server_name, root, socket php-fpm,
# chemins des certificats. ⚠️ Le bloc "location ~* \.(php|inc|...)$ { deny all; }"
# de l'exemple correspond à TOUS les .php : le restreindre à ^/includes/.
cp conf/nginx.conf.sample /etc/nginx/sites-available/annu-kute-ced
ln -s /etc/nginx/sites-available/annu-kute-ced /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
----
== 6️⃣ HTTPS (obligatoire pour la PWA)
Méthode recommandée par l'EFF : *Certbot via snap* (https://certbot.eff.org/instructions?ws=nginx&os=snap[instructions officielles^]). Prérequis : le domaine pointe vers le serveur et le site répond déjà en HTTP sur le port 80 (étape 5 terminée).
[source,bash]
----
apt install -y certbot python3-certbot-apache # ou python3-certbot-nginx
certbot --apache -d example.com -d www.example.com
# ou : certbot --nginx -d example.com -d www.example.com
# 1. Installer snapd (Ubuntu : déjà présent. Debian : apt + support classic)
apt install -y snapd
snap install core && snap refresh core
# 2. Retirer tout certbot installé via apt (évite les conflits de commande)
apt-get remove -y certbot || true
# 3. Installer Certbot et préparer la commande
snap install --classic certbot
ln -s /snap/bin/certbot /usr/local/bin/certbot
# 4. Obtenir le certificat ET laisser Certbot configurer Nginx automatiquement
certbot --nginx -d example.com -d www.example.com
# Variante prudente (ne fait qu'émettre le certificat, vhost édité à la main) :
# certbot certonly --nginx -d example.com -d www.example.com
# 5. Vérifier le renouvellement automatique (timer systemd/cron inclus avec le snap)
certbot renew --dry-run
----
NOTE: Pour Apache (option B), la méthode snap est identique, avec `certbot --apache` à l'étape 4.
Ouvrez ensuite `https://example.com` dans un navigateur : le cadenas doit apparaître dans la barre d'URL.
== 7️⃣ Vérification du site
[source,bash]
@@ -263,7 +289,7 @@ Le bump de version dans `sw.js` est fait *sur le serveur uniquement* : le dépô
| `cache/` non accessible en écriture : `chown -R www-data:www-data cache/`
| `php-intl` manquant
| `apt install php-intl && systemctl restart apache2`
| `apt install php-intl` puis `systemctl restart php*-fpm` (Nginx) ou `systemctl restart apache2` (Apache)
|===
== 🔒 Notes de sécurité