Créer et configurer un serveur web sous Gnu-Linux à domicile et accessible en ligne
Sommaire
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 :)
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 :
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 "exemple" 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/exemple && echo "Welcome to exemple!" > /var/www/exemple/index.html
cela va aussi créer une page html où il sera affiché : "Welcome to exemple"
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/exemple.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/exemple.conf
Collez alors ceci dans le menu l'interface qui s'est ouverte (TODO : expliquer ce fichier):
<VirtualHost *:80> DocumentRoot /var/www/example ServerName www.example.local </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
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 de mettre
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 important, 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 utiliser l'Api partagé sur Github
Installation d'un certificat auto signé
Après avoir suivi toutes ces étapes, votre serveur est maintenant accessible depuis l'extérieur, YES !... Mais il nous reste un problème si quelqu'un cherche votre site sur Internet, son navigateur lui indiquera que votre site n'est pas fiable et son navigateur fera "tout" pour qu'il ne se rende pas dessus. Il faut alors utiliser let's encrypt, qu'est ce que c'est encore ? Let's encrypt est une "autorité" qui fourni des certificats auto signés gratuits, grâce à ça les navigateurs indiqueront que votre site est fiable car il va crypter les données et donc si vous demandez un mot de passe, celui-ci n'apparaitra pas clairement.
Il faut alors installer ce qui va nous permettre d'avoir let's encrypt : certbot
Ouvrez alors votre console de commande faites la commande suivante
sudo apt-get install certbot