Giter Club home page Giter Club logo

ideam's Introduction

IoT Data Exchange & Analytics Middleware (IDEAM) for Smart Cities

image

Web Page

Architecture

Requirements

Release

ideam v1.0.0

Use the ideam deb file to install in Linux machines after satisfying the requirements. dpkg -i ideam.deb .

Configuration

ideam.conf v1.0.0

  • Config file is located at /etc/ideam/ideam.conf.
  • The data files or docker persistent storage is at /var/ideam/data directory.
  • The persistent storage can be changed by modifying the ideam.conf before installation.

Steps to Install

After downloading and installing the deb file, do the following steps.

Installation ideam install or if you cloned ./ideam install
Start Ideam ideam start or if you cloned ./ideam start
Serving Ideam at https://localhost:10443
  • The application will be serving with a self-signed certificate. If you want to use your certificate, have your .crt and .key file as /usr/share/ideam/config/kong/default_443.crt and /usr/share/ideam/config/kong/default_443.key respectively and do a fresh installation.
  • If you want to delete all the data stored as part of ideam, ideam rmdata.
  • If you want to test all API endpoints of ideam, ideam test.
  • If installation fails at some instance, all the time-dated logs are available at /tmp/ideam-%Y-%m-%d-%H-%M.log.

IDEAM API ENDPOINTS

Register

POST /api/1.0.0/register

Publish

POST /api/1.0.0/publish

Follow

POST /api/1.0.0/follow

Share

POST /api/1.0.0/share

Subscribe

GET /api/1.0.0/subscribe

Catalogue

GET /api/1.0.0/cat

Database

GET /api/1.0.0/db

Video RTMP

GET /api/1.0.0/video.rtmp

Unshare
DELETE /api/1.0.0/share unshare.md
Unfollow
DELETE /api/1.0.0/follow unfollow.md
Deregister
DELETE /api/1.0.0/register deregister.md

Customising the install

If you want to install IDEAM for contributing to the project (or if you just want to customise the installation) then do the following:

  • git clone https://github.com/rbccps-iisc/ideam.git && cd ideam
  • Make sure you have all the dependencies installed (as mentioned previously)
  • Run python ideam.py install -f ideam.conf
  • If you want to install only some of the containers (maybe because some succeeded and some failed) you can install it by typing

    python ideam.py install -f ideam.conf -l <comma separated list of containers>

    For e.g python ideam.py install -f ideam.conf -l kong,rabbitmq,tomcat

  • Once the installation completes, the containers need to be started by using

    python ideam.py start

  • If only some of the containers need to be started then use

    python ideam.py start -l <comma separated list of containers>

    For e.g. python ideam.py start -l pushpin,catalogue

Using the quick install option

All the docker images have been pre-built with the dependencies and the respective configuration files in the IDEAM docker hub. Furthermore, these docker images use alpine as their base image, thereby being significantly smaller in size. To use this option in your IDEAM installation use:

python ideam.py install -f ideam.conf --quick

After the process completes, the middleware should be up and running. There is no need to run the start command.

A note on security

The IDEAM stack has certain security mechanisms put in place that can be enabled by using

python ideam.py start --with-idps

IDPS stands for intrusion detection and prevention system. A system that is meant to protect the stack against common security attacks like DoS, DDoS, brute force and so on. A detailed document on security of the IDEAM stack can be found here

Common problems

  • Installation in Linux machines can fail for the following reasons.
    • If you are in a corporate network that blocks Google DNS Servers, the ideam install command fails.

      To fix it, add your corporate DNS servers in DOCKER_OPTS in /etc/default/docker. (for SysV machines)

      DOCKER_OPTS="--dns 208.67.222.222 --dns 208.67.220.220"

      If this fails to set the DNS properly, try updating /etc/docker/daemon.json with the following (for systemd machines)

      { "dns": ["208.67.222.222", "208.67.220.220"] }

  • If copying the RegisterAPI.war fails, then run

    chown -R $(whoami) /var/ideam

  • If there is an error because of SSH keys then run

    ssh-keygen -t rsa

  • IDEAM has been tested on MacOS as well. However, the elasticsearch container might fail because of the vm.max_map_count setting. If this happens then try increasing the swap space of the docker VM

ideam's People

Contributors

harishanand95 avatar manojkumar010 avatar pct960 avatar sainfy avatar swaminathanvasanth avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.