Secure Simple Remote Access for Camera Viewing

In this project we will provide detailed instructions how to set up beame-gatekeeper, and motion eye to turn your Raspberry Pi into a real web cam, with motion detection capabilities, and real secure remote access. This is a beginner project, and in about 20 minutes, you will be rewarded with functioning remote viewing through encrypted & authenticated channel, for potentially several cameras. secure simple remote access for camera viewing

The economics of this project are beautiful, Raspberry Pi – ~40$, WebCam – ~20, Gatekeeper – free. From functionality standpoint, you end up with a product that is probably in the ~$200 – ~$300 range.

To get started you will need to unpack your Raspberry, and connect it to the network, using either the Wi-Fi, or Ethernet.

Additional SW that will be required:

Beame-Gatekeeper – on the Pi

Mobile-Authenticator – on your iOS device

MotionEye – on the Pi


The motionEye needs the latest Raspbian and its best to upgrade first

apt update && apt upgrade

You can compile your own motionEye, in this example we will just get the binaries, and generally follow the motionEye tutorial.

# Become root
sudo -i 
apt update && apt upgrade
# Eliminate possible conflicts: 
apt remove libavcodec-extra-56 libavformat56 libavresample2 libavutil54 
dpkg -i ffmpeg_3.1.1-1_armhf.deb
apt-get install -y python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev libx264-142 libavcodec56 libavformat56 libmysqlclient18 libswscale3 libpq5 git jq
dpkg -i pi_jessie_motion_4.0.1-1_armhf.deb
pip install motioneye 
mkdir -p /etc/motioneye
[ -f /etc/motioneye/motioneye.conf ] || cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf 
grep -Fx "$M" /etc/modules || echo "$M" >> /etc/modules
# Motion data directory
mkdir -p /var/lib/motioneye
# Make motion automatically start on boot
[ -f /etc/systemd/system/motion.service ] || cp /usr/share/motion/examples/motion.service /etc/systemd/system/motion.service 
systemctl daemon-reload
systemctl enable motion
systemctl restart motion
# Make motionEye automatically start on boot
[ -f /etc/systemd/system/motioneye.service ] || cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
systemctl daemon-reload
systemctl enable motioneye
systemctl restart motioneye
# Install NodeJS
curl -sL | bash -
apt install -y nodejs
# Install Beame-Gatekeeper
npm_config_unsafe_perm=true npm install -g beame-gatekeeper
  • Follow instructions in the email for installing Beame-Gatekeeper as systemd service:
sudo beame-gatekeeper-install BIG_BASE64_TOKEN_FROM_EMAIL

You should see output similar to the following:

+ Running systemd installation                                                                                                                                                                                        
+ Using NodeJS at /usr/bin/node                                                                                                                                                                                       
+ Checking NodeJS version. Expecting Node 6.                                                                                                                                                                          
+ Node 6 detected - OK                                                                                                                                                                                                
+ Adding user for beame-gatekeeper: beame-gatekeeper                                                                                             
Adding system user `beame-gatekeeper' (UID 110) ...                                                                         
Adding new group `beame-gatekeeper' (GID 115) ...                                                                           
Adding new user `beame-gatekeeper' (UID 110) with group `beame-gatekeeper' ...                                                              
Creating home directory `/home/beame-gatekeeper' ...                                                                                    
+ .beame directory for user beame-gatekeeper does not exist. Getting credentials.                                           
+ Using provided token: ...
+ Getting Beame Gatekeeper credentials                                                                                                
[2017-06-18 13:39:34] [Bootstrapper] INFO: Beame-gatekeeper config files ensured          
[2017-06-18 13:39:56] [Bootstrapper] INFO: Beame-gatekeeper sqlite DB updated successfully                               
[2017-06-18 13:39:56] [Bootstrapper] INFO: beame-gatekeeper bootstrapped successfully                                              
[2017-06-18 13:39:56] [BeameStore] INFO: Registering credential ... 
+ Getting info 
--- Most important configuration -------------------------------------------------- 
Gatekeeper URL: 
+ Getting admin URL 
[2017-06-18 13:40:33] [Bootstrapper] INFO: Beame-gatekeeper config files ensured 
[2017-06-18 13:40:48] [Bootstrapper] INFO: Beame-gatekeeper sqlite DB updated successfully 
[2017-06-18 13:40:48] [Bootstrapper] INFO: beame-gatekeeper bootstrapped successfully 
[2017-06-18 13:40:50] [SqliteServices] INFO: Sqlite services started 
[2017-06-18 13:40:50] [CLI-creds] INFO: Admin service found with app_id 1 
Please use the URL below to configure/administer beame-gatekeeper 
You can use this URL within 10 minutes. If you don't, you will need to get another URL (issue same CLI command) 
Don't forget to run the server with 'beame-gatekeeper server start' command


  • Towards the end of the output beame-gatekeeper-install command of you will see a URL (after “Please use the URL below to configure/administer beame-gatekeeper“). Use this URL to access Beame-Gatekeeper administration interface.
  • If you need this URL later, please run: beame-gatekeeper-ctl admin
  • Select “Services” in the top menu
  • On the right side, just above the services table, click “Add a new record”
  • Enter the following values in the new row: CODE – MOTION_EYE , NAME – motionEye , URL –, Check “EXTERNAL” checkbox.
  • Click “v” on the right side of the edited line to save the service

schematic secure simple remote access for camera viewing

Installing iPhone application

  • Install Beame Authenticator
  • Launch Beame Authenticator and set a PIN code

For more detail: Secure Simple Remote Access for Camera Viewing

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top