2016-04-28 22:07:16 +02:00
# Mainflux
2015-10-02 14:15:46 +00:00
2015-10-10 01:06:40 +02:00
[](LICENSE) [](https://gitter.im/Mainflux/mainflux?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge& utm_content=badge)
2015-07-06 23:43:19 +02:00
2015-10-02 16:18:35 +02:00
### About
2016-08-22 23:54:41 +02:00
Mainflux is modern open source and patent-free IoT cloud platform written in Go and based on [microservices ](#system-architecture ).
2015-07-06 23:43:19 +02:00
2016-04-28 22:19:08 +02:00
It allows device, user and application connections over various network protocols, like HTTP, MQTT, WebSocket and CoAP, making a seamless bridge between them. It is used as the IoT middleware for building complex IoT solutions.
2015-10-02 16:18:35 +02:00
2016-08-23 00:35:56 +02:00

2016-08-23 00:21:32 +02:00
Mainflux is built with < 3 by Mainflux [team ](MAINTAINERS ) and community contributors .
2015-10-02 16:18:35 +02:00
2016-08-22 23:54:41 +02:00
> **N.B. Mainlux is uder heavy development and not yet suitable for professional deployments**
### Two Flavours
Mainflux comes in two flawours:
- [Mainflux Lite ](https://github.com/Mainflux/mainflux-lite ) - simplified monolithic system
- Maiflux Full (or just Mainflux) - the full-blown multi-service system
2016-08-23 00:21:32 +02:00
If you are new to Mainflux then [Mainflux Lite ](https://github.com/Mainflux/mainflux-lite ) is a place to start. It has most of the services offered by Mainflux, but bundled in one monolithic binary.
2016-08-22 23:54:41 +02:00
Mainflux Lite is suitable for quick and simple deployments and for development.
On the other hand, Mainflux Full (in further text refered simply as Mainflux) is a production system, based on several independent and inter-connected services run in a separate Docker containers.
2015-10-02 16:18:35 +02:00
2016-04-28 22:16:01 +02:00
### Install/Deploy
2016-08-23 00:21:32 +02:00
> For Mainflux Lite installation proceed to the [project's page](https://github.com/Mainflux/mainflux-lite)
2016-04-28 22:25:08 +02:00
Installation and deployment of Mainflux IoT cloud is super-easy:
2016-04-28 22:16:01 +02:00
- Clone the repo:
```bash
git clone https://github.com/Mainflux/mainflux.git & & cd mainflux
```
2015-10-02 16:18:35 +02:00
2016-04-28 22:16:01 +02:00
- Start the Docker composition:
2015-07-06 23:43:19 +02:00
```bash
2016-04-28 22:16:01 +02:00
docker-compose up
2015-10-02 16:18:35 +02:00
```
2016-04-28 22:19:08 +02:00
2016-04-28 22:16:01 +02:00
This will automatically download Docker images from [Mainflux Docker Hub ](https://hub.docker.com/u/mainflux/ ) 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 ](https://github.com/Mainflux ) - look for the repos starting with prefix `mainflux-<protocol>-server` .
2016-04-28 22:07:16 +02:00
### System Architecture
Mainflux IoT cloud is composed of several components, i.e. microservices:
2016-04-28 22:16:01 +02:00
- Mainflux Core
2016-05-18 23:18:40 +02:00
- Authentication and Authorization Server
2016-04-28 22:16:01 +02:00
- HTTP API Server
- MQTT API Server
- WebSocket API Server
2016-04-28 22:07:16 +02:00
- NATS PUB/SUB Broker
2016-05-18 23:18:40 +02:00
- Mongo Database
2016-04-28 22:57:41 +02:00
- Dashflux UI
2016-04-28 22:07:16 +02:00
2016-08-08 23:37:24 +02:00
Following diagram illustrates the architecture:

And here is the matrix describes the functionality of each microservice in the system and gives the location of the code repositories:
2016-04-28 22:07:16 +02:00
| Microservice | Function | GitHub repo |
| :------------------- |:-----------------------| :------------------------------------------------------------------------|
| Mainflux Core | Core Server | [mainflux-core-server ](https://github.com/Mainflux/mainflux-core-server ) |
2016-05-18 23:20:39 +02:00
| Auth Server | Authentication and Authorization | [mainflux-auth-server ](https://github.com/Mainflux/mainflux-auth-server ) |
2016-04-28 22:07:16 +02:00
| HTTP API Server | HTTP API Server | [mainflux-http-server ](https://github.com/Mainflux/mainflux-http-server ) |
2016-04-28 22:16:01 +02:00
| MQTT API Server | MQTT API Server | [mainflux-mqtt-server ](https://github.com/Mainflux/mainflux-mqtt-server ) |
| WS API Server | WS API Server | [mainflux-ws-server ](https://github.com/Mainflux/mainflux-ws-server ) |
2016-04-28 22:19:08 +02:00
| NATS | PUB/SUB Broker | [nats-io/gnatsd ](https://github.com/nats-io/gnatsd ) |
2016-05-18 23:18:40 +02:00
| MongDB | Device Context Storage | [mongodb/mongo ](https://github.com/mongodb/mongo ) |
2016-04-28 22:56:58 +02:00
| Dashflux | Dashboard UI | [dashflux ](https://github.com/Mainflux/dashflux ) |
2016-04-28 22:07:16 +02:00
These components are packaged and deployed in a set of Docker containers maintained by Mainflux team, with images uploaded to [Mainflux Docker Hub page ](https://hub.docker.com/u/mainflux/ ).
Docker composition that constitues Mainflux IoT infrastructure is defined in the [`docker-compose.yml` ](https://github.com/Mainflux/mainflux/blob/master/docker-compose.yml ).
2016-08-22 23:54:41 +02:00
### Features
An extensive (and incomplete) list of features includes:
- Responsive and scalable architecture based on a set of [microservices ](https://en.wikipedia.org/wiki/Microservices )
- Set of clean APIs: 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
- Enhanced and fine-grained security via [Reverse Proxy ](https://en.wikipedia.org/wiki/Reverse_proxy ), [OAuth 2.0 ](http://oauth.net/2/ ) [identity management ](https://en.wikipedia.org/wiki/Identity_management ) and [RBAC ](https://en.wikipedia.org/wiki/Role-based_access_control ) Authorization Server.
- [LwM2M ](http://goo.gl/rHjLZQ ) standard compliance
- [oneM2M ](http://www.onem2m.org/ ) adapter
- Easy deployment and high system scalability via [Docker ](https://www.docker.com/ ) images
- Clear project roadmap, extensive development ecosystem and highly skilled developer community
- And many more
2015-10-17 00:03:21 +02:00
### Documentation
2015-12-07 01:03:28 +01:00
Development documentation can be found on our [Mainflux GitHub Wiki ](https://github.com/Mainflux/mainflux/wiki ).
2015-10-17 00:03:21 +02:00
### Community
2016-08-23 10:50:31 +02:00
#### Mailing list
- [mainflux ](https://groups.google.com/forum/#!forum/mainflux ) Google group
For quick questions and suggestions you can also use GitHub Issues.
2015-10-17 00:03:21 +02:00
#### IRC
[Mainflux Gitter ](https://gitter.im/Mainflux/mainflux?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge )
#### Twitter
[@mainflux ](https://twitter.com/mainflux )
2016-08-23 00:21:32 +02:00
### Authors
2016-08-23 00:24:31 +02:00
Main architect and BDFL of Mainflux project is [@drasko ](https://github.com/drasko ). You can also reach me on Twitter: [@draskodraskovic ](https://twitter.com/draskodraskovic ).
2016-08-23 00:21:32 +02:00
Maintainers are listed in [MAINTAINERS ](MAINTAINERS ) file.
2015-10-02 16:18:35 +02:00
### License
2015-10-10 00:55:04 +02:00
[Apache License, version 2.0 ](LICENSE )