Mainflux.mainflux/README.md

101 lines
6.0 KiB
Markdown
Raw Normal View History

2016-04-29 04:07:16 +08:00
# Mainflux
2015-10-02 22:15:46 +08:00
2015-10-10 07:06:40 +08:00
[![License](https://img.shields.io/badge/license-Apache%20v2.0-blue.svg)](LICENSE) [![Join the chat at https://gitter.im/Mainflux/mainflux](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Mainflux/mainflux?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2015-07-07 05:43:19 +08:00
### About
2016-08-23 05:54:41 +08:00
Mainflux is modern open source and patent-free IoT cloud platform written in Go and based on [microservices](#system-architecture).
2015-07-07 05:43:19 +08:00
2016-04-29 04:19:08 +08: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.
2016-04-29 04:16:01 +08:00
Mainflux is built with <3 by Mainflux team and community contributors.
2016-08-23 05:54:41 +08: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
If you are new to Mainflux it [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.
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.
2016-04-29 04:16:01 +08:00
### Install/Deploy
2016-04-29 04:25:08 +08:00
Installation and deployment of Mainflux IoT cloud is super-easy:
2016-04-29 04:16:01 +08:00
- Clone the repo:
```bash
git clone https://github.com/Mainflux/mainflux.git && cd mainflux
```
2016-04-29 04:16:01 +08:00
- Start the Docker composition:
2015-07-07 05:43:19 +08:00
```bash
2016-04-29 04:16:01 +08:00
docker-compose up
```
2016-04-29 04:19:08 +08:00
2016-04-29 04:16:01 +08: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-29 04:07:16 +08:00
### System Architecture
Mainflux IoT cloud is composed of several components, i.e. microservices:
2016-04-29 04:16:01 +08:00
- Mainflux Core
2016-05-19 05:18:40 +08:00
- Authentication and Authorization Server
2016-04-29 04:16:01 +08:00
- HTTP API Server
- MQTT API Server
- WebSocket API Server
2016-04-29 04:07:16 +08:00
- NATS PUB/SUB Broker
2016-05-19 05:18:40 +08:00
- Mongo Database
2016-04-29 04:57:41 +08:00
- Dashflux UI
2016-04-29 04:07:16 +08:00
2016-08-09 05:37:24 +08:00
Following diagram illustrates the architecture:
![Mainflux Arch](https://github.com/Mainflux/mainflux-doc/blob/master/mermaid/arch.png)
And here is the matrix describes the functionality of each microservice in the system and gives the location of the code repositories:
2016-04-29 04:07:16 +08:00
| Microservice | Function | GitHub repo |
| :------------------- |:-----------------------| :------------------------------------------------------------------------|
| Mainflux Core | Core Server | [mainflux-core-server](https://github.com/Mainflux/mainflux-core-server) |
2016-05-19 05:20:39 +08:00
| Auth Server | Authentication and Authorization | [mainflux-auth-server](https://github.com/Mainflux/mainflux-auth-server) |
2016-04-29 04:07:16 +08:00
| HTTP API Server | HTTP API Server | [mainflux-http-server](https://github.com/Mainflux/mainflux-http-server) |
2016-04-29 04:16:01 +08: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-29 04:19:08 +08:00
| NATS | PUB/SUB Broker | [nats-io/gnatsd](https://github.com/nats-io/gnatsd) |
2016-05-19 05:18:40 +08:00
| MongDB | Device Context Storage | [mongodb/mongo](https://github.com/mongodb/mongo) |
2016-04-29 04:56:58 +08:00
| Dashflux | Dashboard UI | [dashflux](https://github.com/Mainflux/dashflux) |
2016-04-29 04:07:16 +08: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-23 05:54:41 +08: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 06:03:21 +08:00
### Documentation
2015-12-07 08:03:28 +08:00
Development documentation can be found on our [Mainflux GitHub Wiki](https://github.com/Mainflux/mainflux/wiki).
2015-10-17 06:03:21 +08:00
### Community
#### Mailing lists
- [mainflux-dev](https://groups.google.com/forum/#!forum/mainflux-dev) - developers related. This is discussion about development of Mainflux IoT cloud itself.
- [mainflux-user](https://groups.google.com/forum/#!forum/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.
#### 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)
### License
2015-10-10 06:55:04 +08:00
[Apache License, version 2.0](LICENSE)