web-dev-qa-db-fra.com

Serveur Ubuntu avec caméra Raspberry Pi Motion

J'ai un serveur Ubuntu que j'utilise comme serveur Web. Tout fonctionne très bien, j'ai plusieurs sites mis en place. Mon routeur n'autorise qu'un seul périphérique à posséder l'IP publique, à savoir mon serveur Ubuntu. J'ai configuré un RaspberryPi avec une caméra et un Motion. Encore une fois, tout fonctionne très bien - je peux accéder à la caméra via un navigateur (IP: 8081).

Je veux exécuter un site Web à partir de mon Ubuntu et afficher un flux en direct de la framboise. Cela fonctionne très bien avec <img src="IP:8081?action=stream />. Cependant, comme la framboise est une adresse IP interne uniquement, je ne peux pas voir le flux lorsque je suis en dehors de mon réseau.

Que dois-je faire pour que mon Ubuntu accède à la framboise et commente le flux?

En passant, l'application est basée sur codeigniter, le mouvement est également configuré pour fonctionner en dehors de Locahost.

3
sixtynine

Donc, vous avez un serveur qui chevauche deux réseaux (WAN et LAN) et vous souhaitez exposer quelque chose du LAN sur le WAN, en tant que partie du contenu hébergé par le serveur.

Le moyen le plus simple est de demander à votre serveur HTTP d’exercer une connexion par proxy. La plupart des serveurs peuvent le faire, mais je le ferais avec Nginx, car c'est le meilleur (le plus rapide, le plus petit, etc.). Vous utiliseriez une règle comme celle-ci:

location /webcam/ {
    proxy_pass http://internal_webcam_IP:8081/?action=stream;
}

Pour Apache, il en va de même ... Vous venez de créer un proxy inverse rapide:

ProxyRequests off
ProxyPass /webcam http://internal_webcam_IP:8081/?action=stream

Et changez ensuite l'emplacement de l'image HTML en:

<img src="/webcam/" />

Le côté réseau de cette opération devrait être assez simple, mais l’hébergement de l’image sur la webcam risque de ne pas fonctionner dans une balise d’image (certaines utilisent MJPEG, d’autres utilisent javascript). Vous devrez peut-être intégrer une page via un iframe ou écrire un nouveau mettre à jour l'image (plus propre que l'iframe mais plus de travail). Si vous procédez ainsi, vous devrez peut-être ouvrir le proxy afin de ne pas refléter simplement l'URL /?action=stream.

Cela complique les choses. Nous parlons ici de matériel embarqué: notoirement sous-mis à jour et, dans l’ensemble, extrêmement facile à pirater. Si vous devez ouvrir le proxy à une plus grande sélection d'URL, vous voudrez probablement également ajouter une charge d'URL explicites à bloquer afin d'empêcher les personnes externes d'accéder trop souvent à votre réseau interne.


L’autre direction est d’utiliser PHP et CodeIgniter pour créer un proxy par tout ce dont vous avez besoin ... Cependant, une règle générale de webdev est que si vous pouvez N'attachez pas votre langage côté serveur à la gestion de tâches ménagères. C’est quelque chose que vous pouvez décharger sur le serveur Web (ou même sur la pile de mise en réseau - dans laquelle je n’entre pas parce que cela n’offre aucune sécurité).

1
Oli