Héberger un Site Web avec Nginx et Certbot sur un VPS Publié le 19/11/2024 Temps de lecture : 9 min 12 vues <h3><strong>Introduction</strong></h3> <p>Pour héberger un site web de manière sécurisée, Nginx est une solution populaire et performante en tant que serveur web. Couplé avec Certbot, vous pouvez facilement ajouter un certificat SSL gratuit pour sécuriser vos connexions HTTPS. Ce guide vous explique comment configurer un serveur web avec Nginx et Certbot sur un VPS.</p> <hr> <h3><strong>Prérequis</strong></h3> <ol> <li><strong>Un VPS fonctionnant sous Ubuntu 22.04 ou Debian 11/12.</strong></li> <li><strong>Un nom de domaine ou sous-domaine pointant vers l'adresse IP de votre VPS.</strong></li> <li><strong>Accès root ou un utilisateur avec sudo.</strong></li> <li><strong>Un site web prêt à être déployé (fichiers HTML/CSS/JS ou application).</strong></li> </ol> <hr> <h3><strong>Étape 1 : Préparer le VPS</strong></h3> <h4><strong>a. Mettre à jour le système</strong></h4> <p>Avant de commencer, mettez à jour tous les paquets pour assurer la stabilité :</p> <pre><code>sudo apt update && sudo apt upgrade -y </code></pre> <h4><strong>b. Installer Nginx</strong></h4> <p>Installez le serveur web Nginx :</p> <pre><code>sudo apt install nginx -y </code></pre> <p>Assurez-vous que le service fonctionne :</p> <pre><code>sudo systemctl start nginx sudo systemctl enable nginx </code></pre> <p>Vérifiez l'installation en accédant à l'adresse IP de votre VPS dans un navigateur. Vous devriez voir la page par défaut de Nginx.</p> <hr> <h3><strong>Étape 2 : Télécharger et Déployer le Site</strong></h3> <h4><strong>a. Créer un répertoire pour le site</strong></h4> <p>Organisez vos fichiers dans un répertoire dédié :</p> <pre><code>sudo mkdir -p /var/www/votre-site </code></pre> <p>Déplacez ou téléchargez les fichiers de votre site dans ce répertoire. Par exemple :</p> <pre><code>sudo cp -r votre-dossier-site/* /var/www/votre-site/ </code></pre> <h4><strong>b. Définir les permissions</strong></h4> <p>Assurez-vous que Nginx peut accéder aux fichiers :</p> <pre><code>sudo chown -R www-data:www-data /var/www/votre-site sudo chmod -R 755 /var/www/votre-site </code></pre> <hr> <h3><strong>Étape 3 : Configurer Nginx</strong></h3> <h4><strong>a. Créer un fichier de configuration pour votre site</strong></h4> <p>Créez un fichier de configuration pour votre domaine :</p> <pre><code>sudo nano /etc/nginx/sites-available/votre-site.conf </code></pre> <p>Ajoutez la configuration suivante, en remplaçant <code>votre-domaine.com</code> par votre domaine :</p> <pre><code>server { listen 80; server_name votre-domaine.com <a href="https://www.votre-domaine.com">www.votre-domaine.com</a>; root /var/www/votre-site; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } } </code></pre> <h4><strong>b. Activer le site</strong></h4> <p>Créez un lien symbolique pour activer le site :</p> <pre><code>sudo ln -s /etc/nginx/sites-available/votre-site.conf /etc/nginx/sites-enabled/ </code></pre> <p>Testez la configuration :</p> <pre><code>sudo nginx -t </code></pre> <p>Rechargez Nginx pour appliquer les modifications :</p> <pre><code>sudo systemctl reload nginx </code></pre> <p>Vérifiez que votre site est accessible en saisissant <code><a href="http://votre-domaine.com">http://votre-domaine.com</a></code> dans un navigateur.</p> <hr> <h3><strong>Étape 4 : Sécuriser le Site avec HTTPS</strong></h3> <h4><strong>a. Installer Certbot</strong></h4> <p>Certbot est l'outil recommandé pour obtenir des certificats SSL gratuits de Let's Encrypt :</p> <pre><code>sudo apt install certbot python3-certbot-nginx -y </code></pre> <h4><strong>b. Obtenir un certificat SSL</strong></h4> <p>Générez et configurez automatiquement un certificat SSL pour votre domaine :</p> <pre><code>sudo certbot --nginx -d votre-domaine.com -d <a href="https://www.votre-domaine.com">www.votre-domaine.com</a> </code></pre> <p>Lorsque le script vous demande si vous souhaitez rediriger le trafic HTTP vers HTTPS, choisissez l'option <strong>2</strong> (Redirection).</p> <h4><strong>c. Vérifier le certificat</strong></h4> <p>Certbot configure automatiquement le renouvellement. Vous pouvez tester le processus de renouvellement avec :</p> <pre><code>sudo certbot renew --dry-run </code></pre> <hr> <h3><strong>Étape 5 : Optimiser Nginx (optionnel)</strong></h3> <h4><strong>a. Activer la compression gzip</strong></h4> <p>Ajoutez ou modifiez le fichier de configuration global Nginx :</p> <pre><code>sudo nano /etc/nginx/nginx.conf </code></pre> <p>Dans le bloc <code>http</code>, ajoutez :</p> <pre><code>gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; </code></pre> <p>Rechargez Nginx :</p> <pre><code>sudo systemctl reload nginx </code></pre> <h4><strong>b. Configurer un cache navigateur</strong></h4> <p>Ajoutez un cache pour les fichiers statiques dans votre fichier de configuration du site :</p> <pre><code>location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|otf|eot|ttc|mp4|webm|ogg|ogv|pdf|zip|gz)$ { expires 6M; access_log off; } </code></pre> <p>Rechargez Nginx.</p> <hr> <h3><strong>Étape 6 : Mettre en Place un Pare-feu</strong></h3> <p>Pour sécuriser votre serveur, limitez les ports accessibles :</p> <pre><code>sudo ufw allow 'Nginx Full' sudo ufw enable </code></pre> <hr> <h3><strong>Étape 7 : Automatiser les Mises à Jour et Sauvegardes</strong></h3> <ol> <li> <p><strong>Configurer les mises à jour automatiques :</strong> Installez <code>unattended-upgrades</code> pour appliquer automatiquement les mises à jour de sécurité :</p> <div> <div> </div> <div dir="ltr"><code>sudo apt install unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades </code></div> </div> </li> <li> <p><strong>Sauvegarder vos données :</strong> Utilisez <code>rsync</code> ou <code>scp</code> pour sauvegarder le répertoire <code>/var/www/votre-site</code> sur un autre serveur ou un stockage local :</p> <div> <div> </div> <div dir="ltr"><code>rsync -avz /var/www/votre-site/ utilisateur@serveur-dist:/chemin/vers/sauvegarde/ </code></div> </div> </li> </ol> <hr> <h3><strong>Conclusion</strong></h3> <p>Vous avez maintenant un site web sécurisé et performant hébergé sur votre VPS avec Nginx et Certbot. Grâce à cette configuration, vous bénéficiez de performances optimales et d’un certificat SSL pour garantir la sécurité de vos visiteurs.</p>