Skip to content

faceterteam/FaceterFOGClient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Faceter Fog Client

License

Faceter Fog Client is a software designed to build decentralized computing network mainly focused on processing video surveillance streams. It utilizes the ERC-20 FACE tokens, a payment mechanism for both owners of cameras and node operators (miners).

System requirements

  1. Linux OS compatible with Debian 9
  2. AMD64 architecture required
  3. CPU with AVX2 instructions support (Intel the fourth generation and newer or Amd Excavator generation and newer)
  4. Nvidia 10XX graphics card with 4GB+ RAM
  5. CUDA 10+
  6. RAM 12GB+
  7. Storage 18 GB Hard drive space
  8. Linux kernel version 4.9+
  9. Docker CE for Linux 18.06.0+
  10. Python 3.6.7+

Faceter Fog Client Installation Guide

1. Download & Install Nvidia drivers

Identification of your video card
The series/codename of any NVIDIA graphics processing unit (GPU) can usually be identified by using the lspci command.
For example:

lspci -nn | egrep -i "3d|display|vga"

Find drivers for your graphics card on the following page Nvidia

Install appropriate drivers. Note that this will require ~600Mb of free disk space.
For example:

wget http://us.download.nvidia.com/XFree86/Linux-x86_64/430.34/NVIDIA-Linux-x86_64-430.34.run  
chmod 755 NVIDIA-Linux-x86_64-430.34.run
sudo apt install gcc
sudo apt install make
sudo ./NVIDIA-Linux-x86_64-430.34.run

If during NVIDIA drivers installation you have the following error:

ERROR: The Nouveau kernel driver is currently in use by your system.  This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding.  Please consult the NVIDIA driver README and your Linux distribution's documentation for details on how to correctly disable the Nouveau kernel driver.

Then, before proceeding to installation of NVIDIA drivers on Ubuntu, you must disable the Nouveau kernel driver. To disable the default Nouveau NVIDIA driver, run the command:

echo "blacklist nouveau"|sudo tee -a /etc/modprobe.d/blacklist.conf

Regenerate the kernel initramfs:

sudo update-initramfs -u

And reboot your system:

sudo reboot

Now you can continue to install the NVIDIA drivers on Ubuntu.

Probably you will need to install linux-headers.

After installing the driver, you have to do

sudo reboot

In order to make sure that the driver is successfully installed, run

sudo nvidia-smi

2. Install Docker CE

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common

If you use Ubuntu

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce

If you use Debian

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce

If you would like to use Docker as a non-root user, you should now consider adding your user to the “docker” group with something like:

sudo usermod -aG docker your-user-name

2.1. Install nvidia-docker

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update  
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
sudo apt install nvidia-docker2

If you get an error
ERROR: for recognition-scorer Cannot create a container for service recognition-scorer: Unknown runtime specified nvidia

Check the file /etc/docker/daemon.json if it does not contain nvidia runtime lines add them as in the example below.

    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }

Execute:

sudo pkill -SIGHUP dockerd

And restart fogagent:

Sudo systemctl restart fogagent 

Try to fix this with (learn more at StackOverflow)

sudo systemctl daemon-reload
sudo systemctl restart docker

3. Installing Faceter Fog Client

3.1. Get & Run Agent

To start, you need to register as a miner

Follow the next steps to installing Fog Agent for Faceter Fog Client as a deb-package.

  1. Installing the Faceter public GPG key.
wget -O - 'https://repo.faceter.cam/gpg.key' | sudo apt-key add -
  1. Add repository.
sudo bash -c 'echo "deb https://repo.faceter.cam/apt/ debian main" > /etc/apt/sources.list.d/faceter.list'
  1. Update the Apt repository cache.
sudo apt update
  1. Install fogagent.
sudo apt install fogagent

During the installation process, you must select mode of this node, depending on the type of account.

selfminermode request

If you have selected the SelfHostedPowerMode mode, you can turn on the streaming mode on the video in this case, the video from the camera and some information about the recognition will be available from your host.

streamingenable request

If Streaming mode is enabled, describe the url by which port 4242 on this host will be accessible from the WAN.

streamingenable request

During installation, you must specify your foggerid

foggerid request

or cameraownerid if you node work in self hosted power mode

cameraownerid request

and nodeid

nodeid request

and secretkey

secretkey request

Fog Agent will be installed as a systemd service.

Status can be observed via command:

sudo systemctl status fogagent

Fog Agent uses common logging subsystem journalctl:

sudo journalctl -u fogagent

Also, Fog Agent can be launched in the host operating system with the following parameters: --foggerid and --nodeid and --secretkey. In this case, the parameters from the configuration will be overridden.

fogagent --foggerid <your-fogger-id> --nodeid <your-node-id> --secretkey <your-secretkey>

If the Fog Agent is running in self hosted power mode, you must specify cameraownerid instead of the foggerid parameter.

fogagent --cameraownerid <your-camera-owner-id> --nodeid <your-node-id> --secretkey <your-secretkey>

To change the configuration, you can use

sudo dpkg-reconfigure fogagent

To start the fogagent, the parameters foggerid and secretkey must be obtained in the miner's account. Your foggerid is located in the upper right corner. Next, to install the secretkey, click on the Set Secret Key button in the pop-up message at the top of the screen.

image1

You will go to the secret key section displaying the current secret key status.

image8

Click on the Generate button to create a secretkey and save it to configure the fogagent.

image9

secretkey is displayed once, and will not be displayed on subsequent visits to this section. If you lose your secretkey, you can always generate a new secretkey similar to the initial installation.

Image10

Choose nodeid for future identification of this machine. It should be unique alphanumeric value without spaces.

If you run fogagent in self hosted power mode. The cameraownerid and secretkey parameters are located in the cameraowner's account. Your cameraownerid is located in the upper right corner.

Image13

Next, to install the secretkey, click on settings button at the top of the screen.

Image14

And go to the Secret Key Section.

Image15

Next, generate and remember the secret key as described above.

Since version 0.7.0 Fog Agent as part of the Faceter Fog Client is able to download and install all required parts of the Client on its own.

Since version 0.10.0 Secret key is required. All Fog Agent's actions should be written into the terminal (non-service running mode) and to log files, located at /var/log/fogagent/yyyyMMdd.log

After the first time installation, Fog Agent checks several conditions on the local machine:

  • existing version of NVIDIA graphic driver
  • existing version of NVIDIA CUDA
  • existing version of Docker service

When environment conditions will be passed, Fog Agent will check Faceter Fog Client docker images existing, their tags then download and install the newest if needed.

Fog Agent will collect the information about your node and register it in your account.

image2

After successful registration you will be able to see and manage the node from your account:

image3

Set up the price for 1 minute of video processing to make your node available to the market

image4

That is it! Now you can connect your cameras to Faceter Cloud and try Faceter Fog as a client.

IMPORTANT NOTICE: This is one of the very first publicly available builds of Faceter Fog. If you find a bug or another issue, please post it here on Github with a full description of your case.