Tutoriel : Partie 5 - Accès depuis l’extérieur du réseau
- S’inscrire à un site DynDNS et obtenir un nom de domaine
- Déclarer le site sur la box
- Configurer le site Apache
- Modifier le fichier views.py de Django
- Vous pouvez utiliser une de vos adresses mail existantes
- Sinon, en créer une réservée uniquement à ce projet.
- Il est préférable de choisir un opérateur qui accepte les IP dynamiques pour le protocole SMTP. Les adresses gmail ne sont pas nécessairement les meilleures à ce point de vue. laposte.net (même si c’est moins glamour) ne pose pas de problèmes de cet ordre. protonmail.com n’accepte le protocole SMTP que dans les versions payantes.
- Le serveur DNS permettra de traduire le nom de domaine en adresse IP (l’IP publique de votre box).
- Les IP publiques n’étant pas nécessairement fixes, le DNS dynamique transférera l’adresse IP évolutive vers un nom de domaine fixe.
- Quelques fournisseurs de DNS dynamiques proposent des offres gratuites. Mais tous ne sont pas compatibles avec les box dont nous disposons, notamment la livebox d’Orange.
- Malgré ses contraintes (nécessité de réactiver son abonnement gratuit tous les mois) No-IP a l’avantage d’être performant.
- La box d’Orange propose maintenant (octobre 2023) le protocole GnuDIP. dynu.com propose un service gratuit pour lequel il n’y a pas besoin de réactiver régulièrement le nom de domaine.
- On aurait pu prendre une autre option : acheter un nom de domaine chez un registraire pour quelques Euro par an et bénéficier du DynDNS de ce registraire. OVH est une option intéressante et un tutoriel très bien fait est disponible.
- Quelque soit l’option que vous choisissez, la marche à suivre sera globalement la même.
- Aller sur le site de No-Ip
- Créer sur la page d’accueil le nom d’hôte gratuit de votre choix
- Remplir le formulaire en indiquant son adresse mail, un mot de passe
- Valider en prenant l’inscription gratuite
- Confirmer l’inscription en validant le lien reçu sur sa boîte mail
- Connectez-vous à votre compte
- Si vous consultez votre
Tableau de bordvous avez les informations sur votre site : le nom, la date d’expiration (vous devrez réactiver votre abonnement à l’échéance), l’adresse IP cible (celle de votre box).
- Aller sur la page d’inscription de dynu.com
- Remplir le formulaire en indiquant son adresse mail, un mot de passe (entre 4 et 20 caractères)
- Cliquer sur
Soumettre - Confirmer l’adresse mail via le mail de vérification. Attention : celui-ci a pu être placé dans les mails indésirables.
- Se connecter
- Dans le menu, choisir : DDNS -> S’INSCRIRE
- Renseigner le nom d’hôte désiré et cliquer sur
+Ajouter - Aller dans son compte pour modifier certains paramètres, notamment le fuseau horaire
- Note du 30 septembre 2024 : ce service est utilisé depuis septembre 2023, sans aucun problème. Il n’y a notamment aucune obligation de réactiver le compte chaque mois comme avec No-Ip
- Quelques modifications sont à apporter au niveau de la box. Disposant d’une livebox de chez Orange, la marche à suivre que je donne se réfère à ce type de box ; mais elle est grosso modo la même chez les autres opérateurs.
- Entrer dans le menu de sa box
- Dans un navigateur taper
192.168.1.1(pour une livebox Orange) - A l’invite de commande taper le mot de passe de sa box
- Ouvrir la fenêtre
Réseauen sélectionnant la touche correspondante
- Dans un navigateur taper
- Modifier le
NAT/PAT- Aller à l’onglet
NAT/PAT - A noter que si vous avez modifié le port externe SSH de votre raspberry, vous devez voir apparaître la règle correspondante de redirection de port
- Remplissez la ligne saisissable
- La première colonne est libre, choisissez
Secure Web Serveurounouveau - Pour le port interne, saisissez 80 qui est le port par défaut de Apache
- Pour le port externe, saisissez 80
- Laissez le protocole à
TCP - Équipement : choisissez le nom de la raspberry ou saisissez son adresse IP locale.
- Validez avec le bouton
Créer
- Aller à l’onglet
- Modifier le DynDNS
- Allez à l’onglet DynDNS
- Remplissez la ligne saisissable
- Service : choisir son fournisseur : No-IP ou GnuDIP selon votre choix (c’est cette liste qui est limitative et ne propose que quelques fournisseurs)
- Nom d’hôte/de domaine : mettre le nom de domaine attribué par le fournisseur
- Email utilisateur : l’adresse mail avec laquelle vous vous êtes inscrit chez le fournisseur
- Mot de Passe : votre mot de passe chez le fournisseur (et non pas celui du mail, bien sûr)
- Validez avec le bouton « Enregistrer »
Ouvrir le fichier
sudo nano /etc/apache2/sites-available/project-camera.confCommentez ou supprimez la ligne
ServerName <IP locale de la Raspberry>(par exemple
192.168.1.49)A la place copiez les deux lignes suivantes
ServerName <nom du site> ServerAlias www.<nom du site>Si votre site s’appelle monprojet.freeddns.org, par exemple, les deux lignes seront
ServerName monprojet.freeddns.org ServerAlias www.monprojet.freeddns.orgA la fin du fichier, avant la balise fermante
</VirtualHost>copier les lignes suivantes :ProxyPass /Rp1 http://<local IP Raspbery>:8081/ ProxyPassReverse /Rp1 http://<local IP Raspbery>:8081/ ProxyPass /Rp2 http://<local IP Raspbery>:8082/ ProxyPassReverse /Rp2 http://<local IP Raspbery>:8082/ ProxyPass /Rpi http://<local IP Raspbery>:8084/ ProxyPassReverse /Rpi http://<local IP Raspbery>:8084/En remplaçant <local IP Raspberry> par l’IP locale de votre Raspberry.
Si vous avez choisi des valeurs autres que8081,8082et8084pour les ports mjpg-streamer des caméras, vous devez les modifier en conséquence.
De même si vous avec pris d’autes valeurs pour les clésproxyde la section[hosts]du fichier de configuration, vous devez également les modifier.
Vos lignes doivent ressembler à ceciProxyPass /Rp1 http://192.168.1.49:8081/ ProxyPassReverse /Rp1 http://192.168.1.49:8081/ ProxyPass /Rp2 http://192.168.1.49:8082/ ProxyPassReverse /Rp2 http://192.168.1.49:8082/ ProxyPass /Rpi http://192.168.1.49:8084/ ProxyPassReverse /Rpi http://192.168.1.49:8084/A modifier en fonction des ports mjpg-streamer que vous avez attribués aux différentes caméras et en fonction de l’adresse IP locale de votre raspberry.
Le contenu du fichier doit être semblable à celui du fichier
project-camera.conf V3disponible ici
- Ouvrir le fichier
nano ~/folder/project/project/settings.py - Ajoute le site dans ALLOWED_HOSTS
ALLOWED_HOSTS = ['<IP locale de la Raspberry>', '<nom du site>’, ]Par exemple :
ALLOWED_HOSTS = ['192.168.1.49', 'monprojet.freeddns.org', ]
- Pour accéder au flux de mjpg-streamer depuis l’extérieur, il faut activer le module proxy de Apache et modifier le fichier views.py
- Ouvrir le fichier views.py
nano ~/folder/project/camera/views.py - Modifier les différentes fonctions stream en remplaçant
"http://{}:{}/?action=stream".format(raspIP, cam_1_port) "http://{}:{}/?action=stream".format(raspIP, cam_2_port) "http://{}:{}/?action=stream".format(raspIP, cam_py_port)par :"/{}?action=stream".format(Rp1) "/{}?action=stream".format(Rp2) "/{}?action=stream".format(Rpi) - Ajouter en haut du fichier, au niveau de la déclaration des variables du parser du fichier de configuration, les variables
RP1,RP2etRPiRp1 = parser.get("hosts", "proxy_1") Rp2 = parser.get("hosts", "proxy_2") Rpi = parser.get("hosts", "proxy_py") - Le contenu du fichier doit être semblable à celui du fichier
views.py V2disponible ici. - Activer le module proxy_http
sudo a2enmod proxy_http - Redémarrer Apache pour prendre en compte les changements
sudo systemctl restart apache2
- L’accès au site se fait depuis la barre d’adresse d’un navigateur en tapant
<nom du site>/camera - par exemple, si votre site s’appelle monprojet.freeddns.org :
monprojet.freeddns.org/camera - Vous pouvez vérifier que même en dehors du réseau local vous avez accès au site.
- Il est possible que l’accès au site ne soit pas possible pour des problèmes liés à l’IPv6
- Dans la box, se rendre dans Réseau –> Ipv6
- Décocher la case
Activer la connectivité IPv6 - NoIP ne pointant pas sur l’adresse IPv6 (du moins en octobre 2023), il n’y a pas de problème
- Par contre dynu.com pointant sur l’IPv6, vous pouvez être confronté à cette difficulté
- Voir la discussion de serveurfault.com
- En décochant la connectivité IPv6, vous perdez de possibles connexions en IPv6 pour d’autres usages
- Il est possible que vous ayez accès au site depuis l’extérieur (par exemple depuis un téléphone portable dont la wifi a été coupée), mais pas depuis un appareil qui est sur le réseau local. Cela peut être dû, entre autre, à des problèmes d’autorisations et de paramétrages de la box.
- Solution risquée à proscrire : modifier la
DMZ- Sauf si vous savez exactement ce que vous faites, il est déconseillé de modifier la
DMZau niveau de la box. - Entrer dans les paramètres
Réseaude la box - Cliquer sur l’onglet
DMZ - Intégrer la raspberry comme équipement de la
DMZ - La connexion au site se fera depuis le réseau local avec la même commande
<nom du site>/camera
- Sauf si vous savez exactement ce que vous faites, il est déconseillé de modifier la
- Solution moins élégante mais efficace et plus sûre
- faire une copie du fichier /etc/apache2/ports.conf
sudo cp /etc/apache2/ports.conf /etc/apache2/ports.confORIGINAL - ouvrir le fichier en écriture
sudo nano /etc/apache2/ports.conf - ajouter un port (mettre un port peu utilisé, par exemple 54321) en ajoutant une ligne
Listen 54321 - ouvrir le fichier /etc/apache2/sites-available/project-camera.conf
sudo nano /etc/apache2/sites-available/project-camera.conf - ajouter un
<VirtualHost *:54321>identique au<VirtualHost *:80>, à la différence près que leServerNamesera l'IP locale de la Raspberry. - le fichier doit être semblable au fichier
project-camera.conf V4disponible ici. - l’accès depuis un appareil local se fait en tapant dans un navigateur :
<adresse IP locale Raspberry>:<port apache>/camerapar exemple : 192.168.1.49:54321/camera
- faire une copie du fichier /etc/apache2/ports.conf
- Vous disposez d’un nom de site
- Votre site web est accessible depuis l’extérieur du réseau
- Il n’est pas https : vos données ne sont pas cryptées et peuvent donc être interceptées par des personnes mal intentionnées.
- Sécuriser la connexion en https