I am a teacher, and we are using a 3-D printer. I have a Raspberry Pi 3 Model B, as well as the Webcam Module Version 2, and I have the camera set up and can see video by typing in localhost:8081 into Chromium on the Rasp Pi.

What I would like is to stream this video 24/7 for students to log in somehow from their home and watch the video. The camera will be pointed toward the 3-D printer, so if something is printing overnight, they can log on and watch the printer in action.

Any idea how I can do this, or what services I can utilize that would allow streaming of the Rasp Pi webcam video? Thank you so much.


  • 1
    The first issue would be that you need an external IP address. You need to talk to tech support at your school about this.
    – goldilocks
    Feb 17 '18 at 1:50
  • I work at a cyber school, so our tech support does most things remotely. Today I patched the Ethernet port I will be using to the firewall, and they will put in the proper VLAN for the DMZ. Then they will create a URL to for ease of use for the students to access the camera. Now I just need to see what to do with the Rasp Pi. I already have it configured to work and tested it at my house. Hopefully not much tweaking is needed once everything is set up for Wednesday afternoon.
    – Kevbo Kev
    Feb 27 '18 at 4:06

The best option I think would be to use a public service like ustream to allow the students to access the videostream.

To upload you can follow this link: IBM: Raspberry Pi: Streaming video to Ustream.

in this way you should be able to expose the video without configuring the router, as the connection will be initiated by the raspberry.

I never tried, but it sounds working for me. Please keep us posted, it seems interesting.


Yes, as goldilocks suggests you need an ip,

Assuming you are already connected to the internet and can browse etc, you will need to somehow route the inbound traffic 'calls' (like from the students' computers at home calling the classroom server), and could be achieved a few ways.

You might have to have a net admin setup the router to forward an external port to your internal 8081 port. So you can assign say a port like 9001 to listen for those external calls to your server.com:9001 and when the user connects, the router will internally direct 9001 to 8081. You have to set this up in the router and is the more longterm, more difficult, privileged way of setting it up. Talk with your net admin at your location who has privileged access to your wifi router. This might help if you choose this method.

OR: You can use ngrok.


Lookup how to install ngrok on your machine. (Linux for Pi!) After which setup is easy. Basically it is a process that will need to stay running on the pi. You will type something in terminal to run it like:

 ./ngrok http 8081

This will display a temporary random http and https address you can visit that will direct right to your pi running that ngrok process. This will last as long as that process stays running. If you restart the pi or that ngrok process, you will get a new address. This is where they make money if you buy a permanent address, but if you leave the pi on all the time, and link the ngrok address from a shared link like a facebook link, you might be ok without having to pay.

I use this ngrok all the time to open a tunnel on my local machine, so I can visit my web-apps without needing a hosted webspace and domain name.

You can port all type of web protocol.

As far as a 'User Login' system, I've had decent luck with a motion based package called MotionEye that you may or may not find easy to setup. But once you do get it going, you can setup a Watch Only user account so your students can log into that to watch the feed. There might be other methods like .htaccess password protecting your webpages, or someone else might have a nifty way.


You can use a free dynamic DNS. For me I use No-ip, it's free and you can have 3 domain like "yourname.ddns.net". To set the ip to redirect, you install the no-ip software. It's take your public ip and asign it to your domain name. Once it's done you open the port 8081 on your router to access the camera. Finally you just enter : exemple "yourname.ddns.net:8081" on your navigator and that's it

There's probably other service how can provide you a dynamic DNS

  • yes, you can use this as well, but when you use the Dynamic DNS, it will redirect to your assigned public IP, thus you will then need to have your router setup to redirect or forward the ports to its specific internal IP. Routers by default will not do this, where the ngrok method should work despite your router configuration. You can subscribe to ngrok services that provide a perm name for your ngrok address, so instead of a random address generated by ngrok like ie: a60f3a0.ngrok.io , you can have instead: whateveryouwant.ngrok.io, so when ngrok process is restarted, it won't change name
    – mrSidX
    May 7 '18 at 6:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.