5.1 KiB
Mainflux
About
Mainflux is modern massively-scalable and highly-secured open source and patent-free IoT cloud platform written in Go, based on a set of microservices.
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.
Mainflux is built with <3 by Mainflux company and community contributors.
Architecture
Mainflux IoT cloud is composed of several components, i.e. microservices:
Link | Description |
---|---|
http-adapter | HTTP message API server |
manager | Service for managing platform resources, including auth |
message-writer | Worker behind NATS that writes messages into Cassandra DB |
mqtt-adapter | MQTT PUB/SUB Broker (with WebSocket support) |
mainflux-coap | CoAP Server |
mainflux-ui | System Dashboard in Angular 2 Material |
mainflux-cli | Interactive command-line interface |
Cassandra | System Database |
NATS | System event bus |
NGINX | Reverse Proxy with Auth forwarding |
Install/Deploy
Docker Composition
- Clone the repo:
git clone https://github.com/Mainflux/mainflux.git
- Go to
mainflux/docker
dir:
cd mainflux/docker
- Use
mainflux-docker.sh
script to start the Docker composition:
./mainflux-docker.sh start
This will automatically download Docker images from Mainflux Docker Hub and deploy the composition of Mianflux microservices.
From Sources
Use script install_sources.sh
.
This will create ./mainflux_sources
dir, git-clone all the sources from GitHub repos and place them in appropriate destination (Go code goes to $GOPATH, symlinks are created).
It will also give you the instructions how to finish the installation manually.
Features
An extensive (and incomplete) list of features includes:
- Responsive and scalable architecture based on a set of 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 with Access Control Lists
- Easy deployment and high system scalability via Docker images
- Clear project roadmap, extensive development ecosystem and highly skilled developer community
- And many more
Roadmap
- Use
go-kit
microservice framework - Switch to
Cassandra
- Use Docker multi-stage builds
- Enable service discovery (
Consul
oretcd
) - Finish
Dashflux
(Mainflux UI) MVP - Release
v1.0.0
(ETA: end of September) - Deploy public cloud
- E2E tests and benchmarks
- Ansible and Terraform deployment scripts
- Kubernetes deployment procedure
Project task management is done via GitHub issues opened for this repo and properly labeled.
Documentation
Mainflux documentation can be found here.
Community
Mailing list
mainflux Google group
For quick questions and suggestions you can also use GitHub Issues.
IRC
Authors
Main architect and BDFL of Mainflux project is @drasko. Additionaly, initial version of Mainflux was architectured and crafted by @janko-isidorovic, @nmarcetic and @mijicd.
Maintainers are listed in MAINTAINERS file.
Contributors are listed in CONTRIBUTORS file.