Proxmox – Increase LV disk size

First increase your disk size in the GUI of proxmox

Then open the terminal of your virtual machine and use following commands to extend your disk as super user (sudo)

lvdisplay

note your LV Path: /dev/{volume group name}

parted /dev/sda
   print and fix
   quit
pvresize /dev/sda3
lvextend -l +100%FREE /dev/{volume group name}
resize2fs /dev/{volume group name}

Now use the next command to see if your LV path has increased with the free space available

df -h

Proxmox Unprivileged Container Backup failed, Permission denied

When trying to take a full stop backup of my LXC containers in Proxmox, I get the following error output:

INFO: starting new backup job: vzdump 107 --mode stop --compress zstd --remove 0 --node hp2 --storage truenas-nfs-hdd --notes-template ''
INFO: Starting Backup of VM 107 (lxc)
INFO: Backup started at 2022-08-20 15:12:12
INFO: status = running
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: CT Name: pihole-secondary
INFO: including mount point rootfs ('/') in backup
INFO: stopping virtual guest
INFO: creating vzdump archive '/mnt/proxmox-nfs-hdd/dump/vzdump-lxc-107-2022_08_20-15_12_12.tar.zst'
INFO: tar: /mnt/proxmox-nfs-hdd/dump/vzdump-lxc-107-2022_08_20-15_12_12.tmp: Cannot open: Permission denied
INFO: tar: Error is not recoverable: exiting now
INFO: restarting vm
INFO: guest is online again after 5 seconds
ERROR: Backup of VM 107 failed - command 'set -o pipefail && lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- tar cpf - --totals --one-file-system -p --sparse --numeric-owner --acls --xattrs '--xattrs-include=user.*' '--xattrs-include=security.capability' '--warning=no-file-ignored' '--warning=no-xattr-write' --one-file-system '--warning=no-file-ignored' '--directory=/mnt/proxmox-nfs-hdd/dump/vzdump-lxc-107-2022_08_20-15_12_12.tmp' ./etc/vzdump/pct.conf ./etc/vzdump/pct.fw '--directory=/mnt/vzsnap0' --no-anchored '--exclude=lost+found' --anchored '--exclude=./tmp/?*' '--exclude=./var/tmp/?*' '--exclude=./var/run/?*.pid' ./ | zstd --rsyncable '--threads=1' >/mnt/proxmox-nfs-hdd/dump/vzdump-lxc-107-2022_08_20-15_12_12.tar.dat' failed: exit code 2
INFO: Failed at 2022-08-20 15:12:17
INFO: Backup job finished with errors
TASK ERROR: job errors

Research

Some posts recommend setting a local temp directory in /etc/vzdump.conf for each node. While this would work, my nodes do not have a lot of local storage, and there is the potential for them to run out of space when taking backups. Additionally, I would rather not have the write cycles on the boot drives if possible.

There was another post that recommended verifying that the folders are actually writeable, and adjusting the permissions by running chmod 755 if they are not. There were no issues with the permissions set on my folders, so this is not my issue, but it may be worth checking.

The Solution

This post mentions mapping all users to root as part of the NFS configuration. Because LXC containers use linux namespaces, the user in an unprivileged container will not be root, and therefore you have to map all users. In the configuration of my NFS share on my Synology NAS, I altered the NFS-permissions squash to MAP ALL USERS TO ADMIN.


Rebooted my proxmox server and then the backup of unpriviliged LXC containers worked.

How to Backup Proxmox to a Synology NAS

1. Synology NAS Configuration

Before we configure Proxmox, we need to set up NFS permissions on our Synology NAS. This will allow Proxmox to read and write to our Synology NAS.

1.Open the Control Panel on Synology DSM and select File Services then NFS.

2. Select Enable NFS service and then Apply.

NOTE: You can leave the Maximum NFS protocol as NFSv3.

3. Select Shared Folder, then Edit the folder where you’d like your Proxmox data to be stored.

NOTE: If you aren’t sure how to create a Shared Folder, you can click this link to learn how.

4. Select NFS Permissions then Create.

5. In the NFS rule, add the IP Address of your Proxmox server. Leave the privilege as Read/Write and then select Allow users to access mounted subfolders.

6. Save everything and then log in to Proxmox.

2. Proxmox Configuration

Now that our Synology NAS has been configured, we will need to set up Proxmox to read/write from our Synology NAS. We’ll then be able to backup Proxmox to a Synology NAS.

  1. Select Datacenter then Storage.

2. Select Add then NFS.

3. At the NFS screen, create an ID, then enter the IP Address of your Synology NAS server. In the Export drop-down menu, the location of your Proxmox folder should automatically appear. In the Content drop-down, select ALL entries. You can then select Add.

4. Proxmox should now show the Synology NAS Storage that we created above.

3. Back up an Individual Virtual Machine

Now that we configured Proxmox and our Synology NAS, we can easily back up a virtual machine.

  1. Select the virtual machine you’d like to back up, then select Backup.

2. In the backup tab, select the Synology NAS storage location in the top right. This will ensure that we back up to the correct location.

3. Select Backup now in the top left corner.

4. Select your StorageMode and Compression, then select Backup and the backup will start!

3. Automatic Backups – How to Backup Proxmox to a Synology NAS

You can easily configure Automatic backups in Proxmox for all of your virtual machines if you’d like. This will automatically back up every virtual machine on a specific schedule.

  1. Select Datacenter then Backup, then select Add.

2. Select the Storage for your Synology NAS, then specify the ScheduleSelection modeCompression, and Mode.

3. You can also change the retention policy to only keep a certain number of versions by selecting the Retention tab. 
Without specifying a retention policy, all backups will be stored which will drastically reduce storage space on your Synology NAS over time.

4. Your virtual machines will now back up to your Synology NAS automatically after you select Create!

4. Restoring a Virtual Machine from a Backup

After the backups have been created, you can easily restore your virtual machine to one of them if you ever need to.

  1. Select the virtual machine, then Backup.

2. Select the Synology NAS storage in the top right under Storage.

3. Select the snapshot you’d like to restore to, then select Restore.

4. All information can stay as default, then select Restore.

5. You will receive a message that this will permanently erase the existing virtual machine. If you agree, select Yes. Your virtual machine will now be restored from the backup you selected!

5. Conclusion – How to Backup Proxmox to a Synology NAS

This tutorial shows how to backup Proxmox to a Synology NAS. Overall, this is a really good way to ensure that your virtual machines are backed up properly and automatically. This also gives you a pretty easy path to backing them up offsite using Hyper Backup if you’re interested.

Thanks so much for checking out the tutorial. If you have any questions on how to backup Proxmox to a Synology NAS, please leave them in the comment section of the YouTube video above!

Credits to Wundertech.net

Wireguard on Proxmox LXC container

Prerequisites before starting the tutorial
Download the Ubuntu 18.04 CT template onto a storage drive in Proxmox.

Then follow this youtube tutorial with the code listed below

First create your LXC container using the CT template you downloaded earlier

In PVE shell run following commands to finalize your setup

cd /etc/pve/lxc
nano (container number)

add these lines at the end
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir

Save and close nano

run this command
chown 100000:100000 /dev/net/tun

check that it worked
ls -l /dev/net/tun
output should be something like this
crw-rw-rw- 1 100000 100000 10, 200 Dec 22 13:26 /dev/net/tun

To install Wireguard in your newly created container:

Open the console of the container and login as root with the password you made during the container creation
Then visit pivpn.io to get the install link and copy this in the terminal and execute it.
curl -L https://install.pivpn.io | bash

Just follow all steps during the installation wizard and you’ll have a working Wireguard instance at the end.

Setting up a WireGuard VPN server on the Raspberry Pi

Credits:
I Found this good tutorial for installing Wireguard on https://pimylifeup.com/raspberry-pi-wireguard/

In this section, we will do some initial preparatory work to make sure our Raspberry Pi is ready to install the WireGuard VPN software.

1. The first thing we need to do is ensure our Raspberry Pi is using the latest available packages.

We can do that by running the following two commands.

sudo apt update
sudo apt full-upgrade

2. We need to install the only package that we require to run the install scripts we need.

While this package should be available on most distributions of the Raspbian operating system, we will make sure by running the command below.

sudo apt install curl -y

Installing WireGuard on the Raspberry Pi

Within this section, we are going to make use of the PiVPN script to install WireGuard.

PiVPN makes the process of installing WireGuard on our Raspberry Pi a straightforward process. The script sets up the best defaults for our device.

Starting the PiVPN Install Script

1. Let us start the installation process by running the following command.

curl -L https://install.pivpn.io | bash

This command will use curl to download the PiVPN setup script from their website and then pipe it straight to bash.

You can verify this script’s contents by going directly to the install PiVPN domain in your web browser.

Installing WireGuard to your Raspberry Pi

1. The first screen you will be greeted with will let you know what this script is about to do.

To start the WireGuard installation process, press the ENTER key.

2. The first thing that we will be configuring through this script is a static IP address.

This screen explains why your Raspberry Pi should have a static IP address when operating as a WireGuard VPN server.

To proceed, press the ENTER key to proceed.

3. You will be asked if you are already using DHCP reservation.

Using DHCP reservation allows you to make your router assign an IP address to your Raspberry Pi.

In this guide, we are going to assume you haven’t used DHCP reservation and will move on to set a static IP address on  the Pi itself.

Select the <No> option and press the ENTER key to continue.

4. To set a static IP address for the WireGuard software. The installation script will want to use your default settings.

If the default IP address and gateway are correct to you, then you can safely select the <Yes> option.

Continue with this WireGuard set up guide by pressing the ENTER key.

5. You will be warned that you can potentially run into IP conflicts when using this method.

The way around that is to use DHCP reservation. However, most routers should be smart enough to stop this from being a problem.

Press the ENTER key to continue.

6. This screen will tell you that you need to specify a local user to store the WireGuard configuration files.

Continue to the next screen by pressing the ENTER key.

7. You can now select from a list of available users.

Use the ARROW keys to highlight the user then the SPACEBAR to select it.

Once you are happy with the user you have selected, press the ENTER key.

8. Finally, we can select the VPN software we want to install.

As we want to install WireGuard to our Raspberry Pi, you can press the ENTER key to continue.

The reason for this is that default by the PiVPN script selects WireGuard.

9. This screen will allow you to change the port the WireGuard uses on your Raspberry Pi.

It is recommended to keep this the same unless you have a particular reason to change the port.

Press the ENTER key to confirm the specified port.

10. This screen just confirms the port that you set your Raspberry Pi WireGuard VPN to use.

Please note to be able to access your WireGuard VPN from outside of your home network, you will need to port forward the port mentioned here. The type of this port is UDP.

Confirm that the port is still correct, then press the ENTER key to proceed.

11. We can now specify the DNS provider that we want to use for our VPN clients.

For our tutorial, we chose to use the Cloudflare one as it is relatively speedy, and they purge their logs every 24 hours.

Use the ARROW keys to navigate through this menu. Once you have found the DNS provider you want to use, press the SPACEBAR key.

If you are happy with your selection, press the ENTER key to confirm it.

12. You can specify two different ways you want to access your WireGuard VPN.

Using your public IP address is the easiest option. However, this should only be used if you have a static IP address.

The other option is to use a domain name. You can set up this option by following our dynamic DNS guide.

For this guide, we will be sticking with using our public IP address.

Once you have the option you want to be selected, press the ENTER key to proceed.

13. The PiVPN script will now generate the server key that WireGuard requires.

All you need to do here is press the ENTER key again.

14. This screen will give you a quick rundown about unattended-upgrades and why you should enable them.

Go to the next step by pressing the ENTER key.

15. You can now enable the unattended-upgrades by selecting the <Yes> option.

We highly recommend that you enable these to ensure your Raspberry Pi will download security fixes regulary.

Not enabling this will potentially leave your WireGuard VPN vulnerable to attack.

Once you have the option you want to be selected, press the ENTER key to confirm it.

16. You have now successfully installed the WireGuard VPN software to your Raspberry Pi.

This screen will let you know that you still need to create profiles for the users, which we will cover in the next section.

Press the ENTER key to continue to the last two steps.

17. You will be asked whether you want to restart your Raspberry Pi before continuing.

We recommend that you choose the <Yes> option.

Once you have selected to reboot, press the ENTER key twice to restart.

Creating your First WireGuard Profile on your Raspberry Pi

Now that we have successfully installed the WireGuard software to our Raspberry Pi, we can create a profile for it.

To be able to create this profile, we will be making use of the PiVPN script again.

1. To begin creating a new profile for WireGuard, we need to run the following command.

sudo pivpn add

2. All you need to do is type in a name for the profile that you are creating.

For example, we will be calling our profile “PiMyLifeUp“.

Once you have created a profile, it will be stored within the directory specified in the output.

If you followed the previous steps and used the pi user, you will be able to find the config file within the /home/pi/configs directory.

As a final step edit the PiMyLifeUp in /home/pi/configs to include the listenport in the interface section, otherwise you will look like connected to the server, but no data is send.

[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxx
Address = xx.xx.xx.xx/24
DNS = 9.9.9.9, 149.112.112.112
ListenPort = 51820

You can use the config file within here to set up your WireGuard clients. However, there is another method which we will go into in the next section.

Generating a QR Code for your WireGuard Profile

In this section, we will show you how to generate a QR code for the WireGuard profile we generated on our Raspberry Pi.

You will be able to scan this QR code using your device. This saves you from having to copy the config file from your device.

Luckily for us, the PiVPN software comes with a QR code generator that we can use.

1. To generate a QR code for your profile, you will need to start by running the following command.

Make sure you replace “PROFILENAME” with the name you set in the previous section. In our case, this will be “PiMyLifeUp“.

pivpn -qr PROFILENAME
or
pivpn -qr

And select the profile you are generating the QR code for

2. You can then scan this QR code using your iOS or Android devices.

You can find the WireGuard app on both the Google Play Store and the Apple App Store.

When scanning the QR code, you will be asked to enter a name for the profile.

At this point, you should now have successfully got a WireGuard VPN running on the Raspberry Pi.

Finally, when you have done all steps and are able to connect to the WireGuard server on your Pi, but unable to connect to your LAN or the internet, then run the following command and make the necessary repairs to get it fixed

pivpn -d

If you need to show the QR code for a profile afterwards, then use the following command

sudo su
qrencode -t ansiutf8 < /etc/wireguard/clients/PROFILE.conf

When you have imported the profile in your mobile app and did not change the profile.conf file manually, then change the listen port for the server in the wireguard app from automatic to 51820 or the port you used when installing the wireguard server.

You can use the following code to check the connection status of your clients

sudo wg show

This will be the displayed result

interface: wg0
public key: xxxxxxxxxxxxxxx=
private key: (hidden)
listening port: 51820

peer: xxxxxxxxxxxxxxxx=
preshared key: (hidden)
endpoint: xx.xx.xx.xx:xx
allowed ips: xx.xx.xx.xx/32
latest handshake: 24 minutes, 30 seconds ago
transfer: 99.52 KiB received, 314.70 KiB sent

MotionEye on Debian 10

Requirements

  • a machine running a recent Linux distro
  • python 2.7
  • tornado 3.1+
  • jinja2
  • PIL or pillow
  • curl, libcurl & pycurl
  • motion (optional)
  • ffmpeg (optional)
  • v4l-utils (optional)

The Motion Daemon

The motion daemon itself is optional, but needed in most cases. Install it (along with ffmpeg and v4l-utils) unless you configure a machine that will only act as a hub for other motionEye-based cameras.

Install Instructions

motionEye releases are uploaded to PyPI, so you can use the pip (or pip2) command to install it as well as (some of) its dependencies. Following are detailed instructions for some common distributions.

note 1: The given commands normally need to be run as root; type them in a root shell or use sudo before each command.

note 2: On systems where Python3 is the default Python interpreter, you should use the pip2command instead of pip.

note 3: If you are configuring a motionEye system that will only act as a hub for other motionEye-based cameras (i.e. no locally connected cameras and no IP cameras), you can skip installing motionffmpeg and v4l-utils.

note 4 : All commands require root; use sudo before each command or become root using su.

Installation:

  1. Install motionffmpeg and v4l-utils:
    • apt-get install motion ffmpeg v4l-utils
  2. Install the dependencies from the repositories:
    • apt-get install python-pip python-dev python-setuptools curl libssl-dev libcurl4-openssl-dev libjpeg-dev libz-de

      note: Python 2.7 is required. If your system still runs Python 2.6 or older, please upgrade.
  3. Install motioneye, which will automatically pull Python dependencies (tornadojinja2pillow and pycurl):
    • pip install motioneye

      note: If pillow installation fails, you can try installing it from official repos using apt-get install python-pillow.
  4. Prepare the configuration directory:
    • mkdir -p /etc/motioneye
    • cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf
  5. Prepare the media directory:
    • mkdir -p /var/lib/motioneye
  6. Add an init script, configure it to run at startup and start the motionEye server:
    • cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
    • systemctl daemon-reload
    • systemctl enable motioneye
    • systemctl start motioned
  7. To upgrade to the newest version of motioneye, after it has been released, just issue:
    • pip install motioneye –upgrade

      note that will update all the other required dependecies
    • systemctl restart motioneye

Accessing The Frontend

After having successfully followed the installation instructions, the motionEye server should be running on your system and listening on port 8765. Fire up your favorite web browser and visit the following URL (replacing [your_ip] with… well, your system’s IP address):

http://[your_ip]:8765/

Use admin with empty password when prompted for credentials.

Upgrading

Upgrading should be as easy as running the following command (as root):

  • pip install –upgrade motioneye

Enable network storage

Change the smb_shares in the motioneye.conf file from false to true

  • nano /etc/motioneye/motioneye.conf

Add Push Notifications to MotionEyeOS

MotionEyeOS is perfect for using your Pi as a CCTV camera. Want to detect movements while you’re out? Then read on…

One benefit of MotionEyeOS is its ability to detect motion and capture images and movies of what triggered it. You can also access a live stream of your camera online, even when you’re not home, which is handy if you want to check in every now and then. When away from home, being notified of any movement is very useful, and MotionEyeOS has a nifty option for custom notifications.

The full article can be found in The MagPi 43 and was written by Wesley Archer

This guide will assume you have already set up and configured MotionEyeOS. A Pushover licence is required, which costs £3.99/$4.99. For help, check out the MotionEyeOS wiki.

You’ll need

MotionEyeOS

Raspberry Pi

Pushover app for iOS or Android with full licence (£3.99/$4.99)

STEP-01 Create an application in Pushover

Pushover has a great, easy to use API. Before we start, we need to register an application with it. Click on Register Application under the Your Applications heading on the Pushover website (pushover.net). Give your app a name – something like RaspiMotion – and then make sure the type is Application. Give your app a quick description (e.g. ‘Push notifications sent by my Raspberry Pi’) and, if feeling creative, upload a custom icon which will show in your Pushover client app whenever a notification is sent.

STEP-02 Get your API token and user key

Once you have created your application, you should have access to an API token/key. This is a unique combination of numbers and letters – please keep this a secret! You’ll also need your user key, which is shown once you log into Pushover’s website. Okay, so you have an app and your API and user keys. You’ll now need to download (or recreate if you so wish) a simple Python script to tell your Raspberry Pi to work its magic once the script is called upon by MotionEyeOS.

STEP-03 Create your Python script

MotionEyeOS is not like Raspbian. You cannot use certain commands as you would normally, such as git clone, so we’ll have to create our Python script manually; you can also drag and drop using WinSCP if preferred. We also don’t need to use sudo, as we’re already logged in as root by default. Our script needs to live in the data folder, so let’s go there and create pushover.py using nano: cd /data nano pushover.py

cd /data
nano pushover.py

Once here, you’ll need to copy and paste or type in the code listing, while also including your API token and user key where required.

import httplib, urllib

conn = httplib.HTTPSConnection(“api.pushover.net:443”)
conn.request(“POST”, “/1/messages.json”,
urllib.urlencode({
“token”: “APP_TOKEN”, # Insert app token here
“user”: “USER_TOKEN”, # Insert user token here
“html”: “1”, # 1 for HTML, 0 to disable
“title”: “Motion Detected!”, # Title of the message
“message”: “Front Door camera!”, # Content of the message
“url”: “http://IP.ADD.RE.SS”, # Link to be included in message
“url_title”: “View live stream”, # Text for the link
“sound”: “siren”, # Define the sound played
}), { “Content-type”: “application/x-www-form-urlencoded” })
conn.getresponse()

STEP-04 Make your script executable

As with any script, we need to make sure it can be executed, otherwise it’s nothing more than a fancy collection of text! You can do this either from the command line or from within WinSCP. From the command line, make sure you’re in the data folder and then type: chmod +x pushover.py

chmod +x pushover.py

Or, if using WinSCP, select the pushover.py file in the data folder, then press F9. In the window that appears, change the permissions to 0755 and then click ‘OK’ to confirm.

STEP-05 Configure MotionEyeOS to use your script

Now that we have our script, we need to tell MotionEyeOS to use it when it detects motion. To do this, log in, go to the Motion Notifications menu and turn on the ‘Run A Command’ option. You then need to specify which command to run, which will be the Python script you just created – this is /data/pushover.py. Click Apply once done, to confirm the changes.

STEP-06 Test it out!

Hopefully, by now you have created your Python script, made it executable, told MotionEyeOS to use your script when it detects motion, and have the Pushover app installed on your smartphone or tablet. We now need to test that it works! Wave your hand in front of your camera (or you can do a dance if you’re feeling energetic!) and then shortly afterwards you should receive a notification via Pushover, warning you that motion has been detected!

Feel free to experiment with the script to customise the message displayed and sound played in Pushover.

MotionEyeOS on Raspberry Pi – Surveillance Camera System

Do you want to turn your Raspberry Pi into a surveillance camera system? The best way to do it is using MotionEyeOS. In this post we’ll show you how to get started with MotionEyeOS on your Raspberry Pi.

What is MotionEyeOS?

MotionEyeOS is a Linux distribution that turns your single-board computer into a video serveillance system. The MotionEyeOS supports the following devices:

  • Raspberry Pi (all versions);
  • Banana Pi;
  • Odroid C1/C1+, Odroid C2, Odroid XU4;
  • Pine A64/A64+.

MotionEyeOS Features

MotionEyeOS is the perfect solution to build your own surveillance system because it is simple to install and has a web-based, user-friendly interface that is responsive in practically any browser.

It supports most USB cameras, Raspberry Pi camera modules, and IP cameras. Additionally, it brings other useful features when it comes to a surveillance system:

  • Motion detection with email notifications
  • You can set set a working schedule
  • Take still images
  • Store your files in SD card, USB drive, or upload your files to Google Drive or Dropbox
  • Access your media files through FTP server or SFTP server

Parts Required

For this project we’re using the following parts:

  • Raspberry Pi 3 – read Best Raspberry Pi starter kits
  • Camera – Raspberry Pi camera V2 module, USB webcam or IP camera
  • Power Supply 
  • MicroSD Card

Installing MotionEyeOS

To install MotionEyeOs in your Raspberry Pi 3, follow the next steps.

Formatting your microSD card

You’ll install MotionEyeOS on a microSD card and then, insert the microSD card into your Raspberry Pi board. But first, you need to format you microSD card – there are several ways to do this, but we recommend following the next procedure:

  • Go to https://www.sdcard.org/downloads/formatter/ and download the SD Card Formatter software for your operating system.
  • Install the SD Card Formatter software.
  • With your microSD card connected to your computer, open the SD card Formatter application, and format your microSD card with the “overwrite format” option.

Downloading the OS Image

Choose the right image for your device: MotionEyeOS releases page. If you’re using the Raspberry Pi 3, choose motioneyeos-raspberrypi3-xxxxxxxx.img.gz.

Writing the Image

Next, extract the image from the .zip folder. Then, you can use win32diskimager or Etcher, to write the image onto the SD card.

We’re going to use Etcher. If you don’t have Etcher installed, you can click here and install it on your computer.

With the microSD card formatted, and connected to your computer, open Etcher. Select the image you’ve get previously, select your microSD card, and click Flash!

Booting MotionEye on Raspberry Pi

Follow the next steps to boot MotionEyeOS for the first time on your Raspberry Pi.

  • Insert the microSD card in the Raspberry Pi;
  • Connect an Ethernet cable – this is needed on the first boot;
  • Connect a camera. If you’re using the Raspberry Pi camera V2 module, make sure you’ve connected the camera in the right orientation as shown in the following image;
  • Apply power to your Pi, and wait for about 2 minutes for the system to be ready.

Now, to access your Raspberry Pi, you need to find your Pi’s IP Address

Finding Your Raspberry Pi IP Address

To Find your Raspberry Pi IP address, you can use Angry IP Scanner. The IP you’re looking for is the one with “meye” on the name, as shown in the following figure.

Accessing MotionEye For the First Time

Open your browser and type the Raspberry Pi IP address. You’ll see the MotionEye login page.

At the first boot, use the following credentials:

  • Username: admin
  • Password: [No password, leave blank]

If you have a camera connected to your Pi, it should be detected automatically, and you should see a live image from the camera. If you have an IP camera, you need to add it as network camera with the camera stream address with your login credentials for that camera

Foscam C1:

MJPEG – http://[IPADDRESS]:[PORT]/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=[USERNAME]&pwd=[PASSWORD]

RTSP – http://[IPADDRESS]/videoMain

Initial Setup

You can configure pretty much everything in your web user interface. We recommend taking a look at the following configurations when configuring the MotionEyeOS for the first time.

  • Go to the three bars menu, and open the General Settings;
  • Enable Advanced Settings;
  • You can change the admin username and set a password;
  • You can also set a name for a surveillance user, and its corresponding password;
  • Set your timezone and a hostname.

Click the orange button at the top right “Apply” to apply the changes – this will require a reboot.

Wrapping Up

This was just an introduction on how to get started with MotionEyeOS on the Raspberry Pi 3. In this example we’re using a single device (the Raspberry Pi board) with two cameras, but it can be more useful using a Raspberry Pi 3 as a Hub, and then use several cameras in different locations

If you want to add push notifications in motionEye, then follow the next guide: https://www.tommybaert.be/add-push-notifications-to-motioneyeos/

Automatically connect a Raspberry Pi to a Wifi network with a Belkin N300 micro USB dongle

Setting up WiFi connection

Start by booting the Raspberry Pi, connected to a display and a keyboard. Open up the terminal and edit the network interfaces file:

$ sudo nano /etc/network/interfaces

This file contains all known network interfaces, it’ll probably have a line or two in there already.

Change the first line (or add it if it’s not there) to:

auto wlan0

Then at the bottom of the file, add these lines telling the Raspberry Pi to allow wlan as a network connection method and use the /etc/wpa_supplicant/wpa_supplicant.conf as your configuration file.

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

(ctrl-X, then type Y to quit and save)

The next step is to create this configuration file.

Configuring WiFi connection

Open up the wpa_supplicant.conf file in the editor.

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Again, some lines might already be present, just add the following.

network={
ssid="YOUR_NETWORK_NAME"
psk="YOUR_NETWORK_PASSWORD"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

Make sure it works

Reboot the Raspberry Pi and it should connect to the wireless network.

sudo reboot

A static IP

Since the goal of this tutorial is to be able to work with the RPi without external keyboard or display, you want to be ssh into it. The best way is to make sure it’ll always have a static IP on your network.

Doing so is simple. Open the /etc/network/interfaces file again and add the following changes:

Change iface wlan0 inet dhcp into iface wlan0 inet static. This changes the wlan0 interface from DHCP to static.

Add the following lines before the wpa-conf line:

address 192.168.1.155 # Static IP you want 
netmask 255.255.255.0 
gateway 192.168.1.1   # IP of your router

Reboot your Raspberri Pi

sudo reboot