Créer et configurer un serveur web sous Gnu-Linux à domicile et accessible en ligne : Différence entre versions

De TravauxIndse
m (Actualisation de votre adresse Ip)
m (Actualisation de votre adresse Ip)
Ligne 235 : Ligne 235 :
 
Il va alors falloir supprimer les # là où ça va vous être utile  
 
Il va alors falloir supprimer les # là où ça va vous être utile  
  
Dans le screen suivant, je vais vous mettre les endroits où vous devrez modifier les para
+
Dans le screen suivant, je vais vous mettre les endroits où vous devrez modifier les paramètres :
 +
 
 +
[[Fichier:Configuration ApiDdclient.png]]

Version du 26 février 2019 à 12:47

Obtenir un nom de domaine

Pour cela, rien de plus simple, rendez-vous sur freenom, c'est un service de nom de domaine gratuit donc vous n'aurez pas de .be ou de .com mais à ce moment là vous pouvez vous rendre sur d'autres sites pour les obtenir.

Ensuite allez dans "services", "register a new domain", et puis créer votre nom de domaine (vous pourrez choisir plusieurs ".quelque chose" vous êtes libre d'en prendre 1 ou 10 si ça vous chante mais dans notre cas vous n'en utiliserez qu'un.

Créer un serveur web en localhost

Prérequis

  • Ubuntu 18.04 ou raspbian (si vous disposez d'un raspberry)
  • Permissions "Racines" (root)
  • Un peu de motivation :)
  • Quelques connaissance en code même si je vais essayer d'être clair :)

Installation d'Apache

La première étape est donc d'installer apache, pour cela rendez-vous dans le terminal et écrivez ceci :

Afin de ne pas rencontrer de problèmes de demande de droit de super administrateur dans le terminal,tapez d'abord cette commande et mettez votre mot de passe si demandé :

 sudo su 

et puis ceci :

 sudo apt-get update && apt-get install apache2 

Pour vérifier qu'apache a bien été installé vous pouvez taper localhost dans votre navigateur web qui est le l’hôte virtuel local d'apache de base.

Normalement si ça fonctionne vous devriez avoir une page comme ceci :

Default apache page.png

Si vous avez d'autres soucis, le lien du tutoriel original est dans les sources.

Il existe une autre façon de faire [ici], mais je n'ai pas fait de la même façon et je vais aller un peu plus loin.

Création d'un nouvel hôte virtuel

Faites bien attention à bien remplacer les "example" par le nom de votre site et les ".localhost" ou "local" par le domaine que vous avez choisi (par exemple: .cf)

Nous allons commencer par créer le dossier où seront stockée les pages de notre site, pour cela faites :

sudo mkdir /var/www/example && echo "Welcome to example!" > /var/www/example/index.html

cela va aussi créer une page html où il sera affiché : "Welcome to example"

Il faut alors configurer notre hôte virtuel, pour cela vous avez le choix  :

Soit l'édition en mode console

 sudo nano /etc/apache2/sites-available/example.conf 

Soit l'édition en mode graphique (bloc-note) :

Mais pour cela, vous devez d'abord installer gedit :

 sudo apt-get install gedit 
 sudo gedit /etc/apache2/sites-available/example.conf 

Collez alors ceci dans le menu l'interface qui s'est ouverte (TODO : expliquer ce fichier):

<VirtualHost *:80>
ServerName example.local
ServerAlias www.example.local

DocumentRoot /var/www/example
</VirtualHost>

Et sauvegarder le document

Pour activer notre site, il faut alors utiliser la commande a2ensite qui va aussi créer un fichier similaire dans le dossier /etc/apache2/sites-enabled :

 sudo a2ensite example.conf 

Nous devons alors relancer la configuration serveur apache :

sudo systemctl reload apache2.service

Pour vérifier si notre configuration fonctionne, il faut associer l'adresse ip de notre machine avec le nom de notre serveur Pour connaitre votre adresse ip sous linux, dans le terminal entrez la commande :

ifconfig

Les chiffres qui sont situés après inet qui est dans la partie lo sont l'adresse ip de votre machine. Copiez le, nous allons le réutiliser.

Entrez alors la commande :

sudo echo "adresse.ip.de.votre.machine www.example.local" >> /etc/hosts

Normalement si votre configuration est ok, si vous essayez d'aller sur www.example.local depuis votre machine vous devriez avoir "Welcome to example" qui s'affiche sur votre site

Rendre le serveur disponible depuis l'extérieur

Ouverture des ports de votre box

Maintenant que vous avez créer votre serveur, il serait plus utile de le rendre disponible depuis l'extérieur. Pour cela il va falloir ouvrir les ports de sa box afin de pouvoir accéder a une partie de votre réseau local depuis l'extérieur et établir une redirection/une actualisation d'IP

Pour l'ouverture des ports cela dépendra de votre box, possédant une bbox Proximus, je vais vous montrer la démarche à faire pour celle-ci. La démarche pour les autres box devrait être assez similaires, mais renseignez-vous.

  • Première étape : Passer en sécurité faible

Avec proximus, les port 80, 443 et 23 sont bloqués, pour notre serveur nous avons besoin du 80 et du 443, il faut alors passer en sécurité faible afin de les utiliser. Rendez-vous sur le site MyProximus et connectez-vous avec le compte qui gère votre internet. Après avoir fait ceci sélectionner la page : "mes produits" puis cliquez sur votre pack internet. De là plusieurs fenêtres s'affichent, allez dans paramètres, sélectionnez sécurité faible et validez (Ne vous inquiétez pas on ne va pas vous pirater plus facilement pour la cause).


  • Deuxième étape : Ouvrir les ports de votre box et établir une redirection vers votre ordinateur

Maintenant que vos ports sont débloqué, il va falloir accéder aux paramètre de votre box pour les "mapper"; pour ça rien de plus simple, sur votre navigateur recherchez 192.168.1.1. Là une page s'affiche et demande de vous connecter, pas besoin de nom d'utilisateur, juste d'un mot de passe, il se trouve derrière votre box Userpasswordproximus.png

Après vous être connecté, nous allons d'abord fixer l'adresse de votre machine (elle pourrait changer, donc on prend des précautions), rendez-vous dans la page "Mon Modem" puis dans "DHCP" cliquez sur "ajouter une adresse statique" et ajoutez-y votre machine (normalement le nom que vous lui avez donnez doit apparaître). TODO Maintenant que vous avez fait cela, allez dans la page "Contrôle d'accès" puis dans "Mappage des ports". Là il faut alors établir 3 redirections de ports :

*Le port 80 : ce que nous appelons Internet (La plupart des pages internet commencent par "http")
*Le port 443 : ce que nous appelons aussi Internet mais c'est sécurisé (Si le pages internet ne commencent pas par "http" elles commencent par "https")
*Le port 22 : Protocole ssh, en ouvrant ce port nous pouvant accéder à notre machine à distance et la modifier en ligne de code (de façon sécurisée)

Ajoutez alors trois redirections de port, choisissez alors les 3 cités au dessus; il faut alors définir vers quelle machine votre modem va les rediriger, collez donc l'adresse Ip de votre machine (adresse que vous aviez déjà copié auparavant) là où on vous demande l'hôte interne.

Service d'Ip dynamique : Cloudflare

Puisque vos ports sont ouverts, il est temps de rendre votre serveur accessible sur Internet, pour cela il existe plusieurs services différents qui permettent d'établir une redirection d'une recherche Internet vers votre Ip, j'ai choisi cloudflare, qui fonctionne un peu différemment car j'avais des problèmes de configuration avec ma box, un désavantage de ce service, c'est qu'il peut collecter les mots de passe, si ceux-ci n'ont pas été cryptés (à vérifier).

Rendez-vous alors sur le site de cloudflare et créez vous un compte. La suite est très step by step : On vous demande d'ajouter un site, écrivez alors le nom de votre site : example.local et allez à l'étape suivante.

- Cliquez sur next

- Choisissez le plan qui vous conviens (dans mon cas : gratuit)

- Vous arrivez alors sur une page où Cloudflare dit scanner les dns existants, ignorez cette page et cliquez juste sur continuer

- Cloudflare vous demande alors de changer les noms de serveurs. Rendez-vous sur freenom (et oui il nous est de nouveau utile) reconnectez vous et allez dans "Services" -> "Domains" -> Sur la ligne de votre domaine : "Manage domain" -> "Management tool" -> "Names servers" Cliquez sur "Use custom nameservers" Puis copiez les 2 noms de serveurs donnés par cloudflare dans les NameServer 1 et NameServer 2 (un dans chaque). Finalement enregistrez.

- Rendez vous de nouveau sur cloudflare et continuez.

- Maintenant vous arrivez sur une nouvelle page, cliquez sur DNS afin d'ouvrir un page qui ressemble à ceci :

Cloudflaredns.png

Bon vous n'avez pas réellement ça, c'est ce que vous devriez avoir après avoir suivi ces quelques consignes :

Si vous avez déjà des choses en dessous de la ligne "Type Name Value ..." Supprimez les, nous allons en créer de nouveaux.

Maintenant, décochez le nuage orange (Le nuage gris fait que vous utilisez cloudflare seulement comme une redirection d'ip)

Dans le A : Dans "Name" entrez votre site (example.local) et Modifiez votre adresse ip pour qu'elle corresponde à la votre (nous automatiserons ceci dans la partie en dessous, mais pour la première fois faites le manuellement. Pour avoir votre adresse ip actuelle, rendez-vous sur mon-ip. Puis ajoutez-le (Add record).

Ajouter CNAME : à coté du bouton add record choisissez CNAME (à la place du A) puis dans name, tapez www et dans le domaine name mettez le nom de votre domaine (example.local), décochez le nuage puis cliquez sur add record.

Puis de la même façon que pour le CNAME, ajoutez en un autre sauf qu'à la place du www, mettez juste le nom de votre site example et ajoutez le aussi.

Voilà, vous avez mis votre site en ligne, mais sans certificat, votre site sera considérer comme dangereux dans la plupart des navigateurs qui empêcheront les visiteurs d'y accéder (on peut toujours y accéder mais il faut chercher un peu et les gens détestent chercher)

Installation d'un certificat auto signé

Comme je l'ai dit précédemment, pour que les visiteurs puissent accéder à votre site, vous allez devoir utiliser un certificat qui montre que votre site est fiable et que les données sont cryptées. Pour cela, nous allons utilisez Let's Encrypt, une autorité qui permet d'avoir des certificats de manière légale. Vous allez donc installer certbot, leur système qui permet de créer ces certificats.

Faites donc la commande :

sudo apt-get install certbot python-certbot-apache

Après l'avoir installé, lancez le :

sudo certbot --apache

La suite est assez step-by-step :

- Acceptez les termes d'utilisation : A majuscule et Enter

- Entrez votre Adresse E-mail (pour recevoir des notifications, si votre certificat ne se met pas à jour automatiquement)

- Là le programme vous demande "Which names would you like to activate HTTPS for?" : Ne choisissez que l'option où il est écrit example.localhost et non www.example.localhost (Normalement l'option 1 et puis validez)

- Si tout fonctionne, vous devez maintenant choisir si vous redirigez toutes les connexion vers la connexion sécurisée (Https) ou non : Je vous conseille l'option 2 comme ça toutes les requêtes envoyées à votre site seront sécurisée.

- Normalement si tout fonctionne certbot vous dira un message de félicitation du style

 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.localhost

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.localhost
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.localhost/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.localhost/privkey.pem
   Your cert will expire on yyyy-mm-dd. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Actualisation de votre adresse Ip

Votre site est maintenant accessible depuis le monde et que vous renvoyez bien les requêtes vers votre machine , tout devrait fonctionner, sauf que pas vraiment, le seul "petit" problème qu'il nous reste à régler : votre adresse Ip. Vu que j'en parle assez souvent, il est normal que vous vous doutiez qu'elle soit importante, mais à l'heure actuelle les fournisseurs d'accès internet utilisent encore l'IpV4 son inconvénient est qu'il n'y en a pas assez pour tout le monde, votre modem change alors d'adresses Ip et ce de manière aléatoire. Pour pallier cela, nous allons utilisez une Api (sorte de petit programme qui fonctionne pour d'autres logiciel) proposée par cloudflare. Comme la version officielle n'est plus mise à jour , nous allons prendre l'Api partagé sur Github

Vous allez alors la télécharger en zip, assurez vous que le dossier soit bien dans le fichier Downloads sinon il vous faudra changer le nom de fichier dans les commandes suivantes

Effectuez alors cette comme afin de dire à votre raspberry de ne regarder que dans le dossier Downloads :

 cd /home/pi/Downloads/

Maintenant que vous êtes dans le répertoire des téléchargement, vous pouvez Unzip le fichier que vous avez téléchargé :

 unzip ddclient-master.zip

Ensuite entrez dans le dossier ddclient-master que vous venez d'unzip :

cd ddclient-master/

Puis effectuez ces commandes qui vont :

  • 1) copier le fichier ddclient dans /usr/sbin
  • 2&3) créer les doffiser /etc/ddclient et /var/cache/ddclient
  • 4) copier le fichier sample-etc_ddclient.conf dans /etc/ddclient/ddclient.conf et en même temps le créer
cp ddclient /usr/sbin/
mkdir /etc/ddclient
mkdir /var/cache/ddclient
cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf

Maintenant nous allons configurer l'Api pour qu'elle fonctionne avec votre cloudflare, pour cela vous avez le choix dans l'edit :

Soit :
sudo nano /etc/ddclient/ddclient.conf
Soit :
sudo gedit /etc/ddclient/ddclient.conf

Bien sûr tout ne vous est pas utile et d'ailleurs n'est pas activé (il y a un # devant)

Il va alors falloir supprimer les # là où ça va vous être utile

Dans le screen suivant, je vais vous mettre les endroits où vous devrez modifier les paramètres :

Configuration ApiDdclient.png