4c013fac6f | ||
---|---|---|
.dockerignore | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE | ||
MAINTAINERS | ||
README.md | ||
docker-compose.yml |
README.md
Mainflux
About
Mainflux is lean open source industrial IoT cloud written in NodeJS.
It allows device, user and application connections over various network protocols, like HTTP, MQTT, WebSocket and CoAP, making a seamless bridge between them. As a consequence, Mainflux represents highly secure and highly optimised M2M platform based on the cutting-edge standards and approaches in the industry.
Architecture
Features
An extensive (and incomplete) list of featureas includes:
- Responsive and scalable architecture based on a set of Microservices
- Set of clean APIs, Swagger documented: HTTP RESTful, MQTT, WebSocket and CoAP
- SDK - set of client libraries for many HW platforms in several programming languages: C/C++, JavaScript, Go and Python
- Device management and provisioning and OTA FW updates
- Highly secured connections via TLS and DTLS
- Standardized NGSI model representation
- Enhanced and fine-grained security via Reverse Proxy, OAuth 2.0 identity management and RBAC Authorization Server.
- LwM2M standard compliance
- oneM2M adapter
- Easy deployment and high system scalability via Docker images
- Clear project roadmap, extensive development ecosystem and highly skilled developer community
- And many more
Install
Clone the repo:
git clone https://github.com/Mainflux/mainflux.git
cd mainflux
System Architecture
Mainflux IoT cloud is composed of several components, i.e. microservices:
- Mainflux Core Server
- Mainflux HTTP API Server
- Mainflux MQTT API Server
- Mainflux WebSocket API Server
- NATS PUB/SUB Broker
The following matrix describes the functionality of each GE in the system and gives the location of the code repositories:
Microservice | Function | GitHub repo |
---|---|---|
Mainflux Core | Core Server | mainflux-core-server |
HTTP API Server | HTTP API Server | mainflux-http-server |
HTTP MQTT Server | MQTT API Server | mainflux-mqtt-server |
HTTP WS Server | WS API Server | mainflux-ws-server |
NATS | PUB/SUB Broker | gnatsd |
These components are packaged and deployed in a set of Docker containers maintained by Mainflux team, with images uploaded to Mainflux Docker Hub page.
Docker composition that constitues Mainflux IoT infrastructure is defined in the docker-compose.yml
.
Deployment
Deployment of Mainflux IoT Cloud is super-easy:
- Get the
docker-compose.yml
- Start the composition:
docker-compose up
This will automatically download Docker images from Mainflux Docker Hub and deploy the composition.
If you need to modify these Docker images, you will have to look at appropriate repos in the Mainflux project GitHub - look for the repos starting with prefix mainflux-<protocol>-server
.
Docker
Apart from main nodejs
Docker image, Mainflux also uses mongo
Docker image (database instance is run in a separte generic Docker image).
This is why Mainflux uses Docker Compose, to run both nodejs
and mongo
images at the same time and make a connection (container link) between them.
Executing:
docker-compose up
will automatically build all the images, run Docker containers and create link between them - i.e. it will bring up Mainflux API server + MongoDB ready for use.
For more details and troubleshooting please consult Docker chapter on Mainflux Wiki.
Documentation
Development documentation can be found on our Mainflux GitHub Wiki.
Community
Mailing lists
- mainflux-dev - developers related. This is discussion about development of Mainflux IoT cloud itself.
- mainflux-user - general discussion and support. If you do not participate in development of Mainflux cloud infrastructure, this is probably what you're looking for.