Git Product home page Git Product logo

vmq-docs's Introduction

VerneMQ: A Distributed MQTT Broker

Build and Smoketest Status Documentation Maintenance GitHub Release Date GitHub last commit Twitter: VerneMQ VerneMQ on Fosstodon

Google group : VerneMQ Users

Old Docker Repo New Docker Repo
Docker Pulls from Old Repo Docker Pulls from New Repo

New: VerneMQ can now use Github Discussions! To join the discussion on features and roadmap, and be part of the VerneMQ Community Team on Github, send us your Github username for an invite! (on Twitter, Slack etc.)

Make sure to visit the new VerneMQ Forum hosted on Erlang Forums. We're happy to discuss any of your questions and ideas around VerneMQ on the Forum too!


VerneMQ is known to be deployed and used in: ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡จ๐Ÿ‡ฆ ๐Ÿ‡ง๐Ÿ‡ท ๐Ÿ‡ฒ๐Ÿ‡ฝ ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ซ๐Ÿ‡ท ๐Ÿ‡จ๐Ÿ‡ญ ๐Ÿ‡ฉ๐Ÿ‡ฐ ๐Ÿ‡ณ๐Ÿ‡ฑ ๐Ÿ‡ง๐Ÿ‡ช ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡ท๐Ÿ‡ด ๐Ÿ‡ต๐Ÿ‡น ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡ฑ๐Ÿ‡น ๐Ÿ‡จ๐Ÿ‡ฟ ๐Ÿ‡ธ๐Ÿ‡ฐ ๐Ÿ‡ฆ๐Ÿ‡น ๐Ÿ‡ต๐Ÿ‡ฑ ๐Ÿ‡ณ๐Ÿ‡ด ๐Ÿ‡ธ๐Ÿ‡ช ๐Ÿ‡ฎ๐Ÿ‡ณ ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฎ๐Ÿ‡ฉ ๐Ÿ‡ป๐Ÿ‡ณ ๐Ÿ‡ฐ๐Ÿ‡ท ๐Ÿ‡ฟ๐Ÿ‡ฆ ๐Ÿ‡ฐ๐Ÿ‡ช ๐Ÿ‡ท๐Ÿ‡ธ ๐Ÿ‡ญ๐Ÿ‡ท ๐Ÿ‡ฌ๐Ÿ‡ท ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿ‡บ๐Ÿ‡ฆ ๐Ÿ‡ฆ๐Ÿ‡บ ๐Ÿ‡ณ๐Ÿ‡ฟ ๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡ช๐Ÿ‡ฌ ๐Ÿ‡ซ๐Ÿ‡ฎ ๐Ÿ‡ญ๐Ÿ‡บ ๐Ÿ‡ฎ๐Ÿ‡ฑ ๐Ÿ‡ธ๐Ÿ‡ฌ ๐Ÿ‡ฑ๐Ÿ‡ง ๐Ÿ‡ต๐Ÿ‡ญ ๐Ÿ‡ต๐Ÿ‡ฐ ๐Ÿ‡ฒ๐Ÿ‡พ ๐Ÿ‡น๐Ÿ‡ท ๐Ÿ‡น๐Ÿ‡ผ ๐Ÿ‡ฎ๐Ÿ‡ท โ˜๏ธ


VerneMQ Logo

VerneMQ is a high-performance, distributed MQTT message broker. It scales horizontally and vertically on commodity hardware to support a high number of concurrent publishers and consumers while maintaining low latency and fault tolerance. VerneMQ is the reliable message hub for your IoT platform or smart products.

VerneMQ is an Apache2 licensed distributed MQTT broker, developed in Erlang.

MQTT used to stand for MQ Telemetry Transport, but it no longer is an acronym. It is an extremely simple and lightweight publish/subscribe messaging protocol, that was invented at IBM and Arcom (now Eurotech) to connect restricted devices in low bandwidth, high-latency or unreliable networks.

VerneMQ implements the MQTT 3.1, 3.1.1 and 5.0 specifications. Currently the following features are implemented and delivered as part of VerneMQ:

  • QoS 0, QoS 1, QoS 2
  • Basic Authentication and Authorization
  • Bridge Support
  • $SYS Tree for monitoring and reporting
  • TLS (SSL) Encryption
  • Websockets Support
  • Cluster Support
  • Logging (Console, Files, Syslog)
  • Reporting to Graphite
  • Extensible Plugin architecture
  • Multiple Sessions per ClientId
  • Session Balancing
  • Shared subscriptions
  • Message load regulation
  • Message load shedding (for system protection)
  • Offline Message Storage (based on LevelDB)
  • Queue can handle messages FIFO or LIFO style.
  • MongoDB auth & integration
  • Redis auth & integration
  • MySQL auth & integration
  • PostgreSQL auth & integration
  • CockroachDB auth & integration
  • Memcached integration
  • HTTP Webhooks
  • PROXY Protocol v2
  • Administration HTTP API
  • Real-time MQTT session tracing
  • Full multitenancy
  • Cluster status web page

The following features are also applies to MQTT 5.0 clients:

  • Enhanced authentication schemes (AUTH)
  • Message expiration
  • Last Will and Testament delay
  • Shared subscriptions
  • Request/response flow
  • Topic aliases
  • Flow control
  • Subscription flags (Retain as Published, No Local, Retain Handling)
  • Subscriber identifiers
  • All property types are supported: user properties, reason strings, content types etc.

Commercial Support. Binary Packages. Documentation

Below you'll find a basic introduction to building and starting VerneMQ. For more information about the binary package installation, configuration, and administration of VerneMQ, please visit our documentation at VerneMQ Documentation or checkout the product page VerneMQ if you require more information on the available commercial support options.

Community Release Schedule

Next major release: not yet scheduled.

Minor releases: At the end of March, July and November (every 4th month).

Bugfix releases: Usually a bugfix release is released between minor releases or if there's an urgent bugfix pending.

Custom release cycles and releases are available for commercial users.

Quick Start

This section assumes that you have a copy of the VerneMQ source tree. To get started, you need to first build VerneMQ.

Building VerneMQ

Note: VerneMQ requires Erlang/OTP 24-25 and libsnappy-dev installed in your system. You'll also need a C compiler for Eleveldb. (on Debian, you install build-essential, as an example).

Assuming you have a working Erlang installation, building VerneMQ should be as simple as:

$ cd $VERNEMQ
$ make rel

Starting VerneMQ

Once you've successfully built VerneMQ, you can start the server with the following commands:

$ cd $VERNEMQ/_build/default/rel/vernemq
$ bin/vernemq start

If VerneMQ is running it is possible to check the status on http://localhost:8888/status and it should look something like:

Note that the $VERNEMQ/_build/default/rel/vernemq directory is a complete, self-contained instance of VerneMQ and Erlang. It is strongly suggested that you move this directory outside the source tree if you plan to run a production instance.

Important links

Thank you to all our contributors!

contributors

vmq-docs's People

Contributors

acsrujan avatar andreacolapinto avatar codeadict avatar dergraf avatar endorama avatar francois-travais avatar fredpi17 avatar frodox avatar gitbook-bot avatar goldyfruit avatar ioolkos avatar jeff-bouchard avatar jpmens avatar kangtaku avatar larshesel avatar mattaudesse avatar mths1 avatar nickwu241 avatar pablogamboa avatar rubengees avatar saiprakashreddy14 avatar tom-hoover avatar varnerac avatar zaphod-42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

vmq-docs's Issues

Instructions from `VerneMQ on Kubernetes` don't work on GKE

I'm trying to install VerneMQ on GKE using the method suggested on VerneMQ on Kubernetes

However I get the following error:

$ curl -L https://codeload.github.com/vernemq/vmq-operator/zip/master --output repo.zip; \
> unzip -j repo.zip '*/examples/only_vernemq/*' -d only_vernemq; \
> kubectl apply -f only_vernemq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  209k    0  209k    0     0   183k      0 --:--:--  0:00:01 --:--:--  183k
Archive:  repo.zip
b06ea91fccbbc537482a8148c8eb421e3bb7bc8d
replace only_vernemq/0vernemq-operator-0namespace.yaml? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: only_vernemq/0vernemq-operator-0namespace.yaml
  inflating: only_vernemq/0vernemq-operator-0vernemqCustomResourceDefinition.yaml
  inflating: only_vernemq/0vernemq-operator-deployment.yaml
  inflating: only_vernemq/0vernemq-operator-role.yaml
  inflating: only_vernemq/0vernemq-operator-roleBinding.yaml
  inflating: only_vernemq/0vernemq-operator-serviceAccount.yaml
  inflating: only_vernemq/vernemq-service.yaml
  inflating: only_vernemq/vernemq-serviceAccount.yaml
  inflating: only_vernemq/vernemq-vernemq.yaml
namespace/messaging created
customresourcedefinition.apiextensions.k8s.io/vernemqs.vernemq.com created
role.rbac.authorization.k8s.io/vmq-operator created
rolebinding.rbac.authorization.k8s.io/vmq-operator created
serviceaccount/vmq-operator created
service/vernemq-k8s created
serviceaccount/vernemq-k8s created
unable to recognize "only_vernemq/0vernemq-operator-deployment.yaml": no matches for kind "Deployment" in version "apps/v1beta2"
unable to recognize "only_vernemq/vernemq-vernemq.yaml": no matches for kind "VerneMQ" in version "vernemq.com/v1alpha1"

Are the docs outdated or am I doing something wrong?

bcrypt version should be more explicitly indicated

At the moment, information about supported bcrypt version
currently bcrypt version 2a (prefix $2a$) is supported.
specified at the bottom of the page, but it looks as it located in the Redis section.
So, for example, If you need Mongo configuration you will read whole page, but skip Redis section, because you don't need it. And you never know that version $2b$ is not supported!
But Python implementation of the bcrypt use version $2b$ by default and for a first time it difficult to figure out why authorisation doesn't work.
I think you need to move information about supported bcrypt version to the section: Password verification and hashing methods

Missing documentation or not up to date

It looks like there is a problem on the webhook documentation.

In the documentation, it is written (https://docs.vernemq.com/plugin-development/webhookplugins):
"Note, the retry_interval is in milli-seconds. It is possible to override many more settings, see the Session Lifecycle for more information." (auth_on_register)

If I follow the link and go to the vernemq dev repo (https://github.com/vernemq/vernemq_dev/blob/master/src/auth_on_register_hook.erl), I can see the potentials modifiers under "reg_modifiers()" but I can't see the max_inflight_messages and retry_interval showed in the response example (still in webhook doc of auth_on_register https://docs.vernemq.com/plugin-development/webhookplugins)

Am I missing something ? Or does the documentation is ou of date ?

Thanks for your help !

webhook name in the vmq-admin webhook/show GET API response

Hi Team,

First, I would like to like to share my humble appreciation to the vernemq team for putting together such a wonderful project and bringing enterprise grade mqtt broker to the masses.

I am currently working on a totally open source version of a vernemq admin UI app here:
https://github.com/narioinc/vmqadmin-ui ( took this up as a fun work during quarantine :) )

One of the features that I am trying to integrate is registering webhooks either runtime (vmq-admin) or persistent (allowing permanent addition to vernemq.conf)

While approaching this feature I found there to a small issue that I though the team could enhance in the vmqadmin-api.

ISSUE
When I allow the editing of the vernmq.conf file in my UI app, the conf file expects a webhook name when declaring the webhook. for e.g. vmq_webhooks.mywebhook1.hook
However when vmqadmin returns a list of webhooks, it does so without specifying the name of the webhooks in the response, and now if this GET request is used to create a page in angular/react, I don't have an idea which webhook params belongs to which weebhook name and hence operation like editing, deleting webhooks becomes ambiguous

For example
if vernemq.conf file has two webhooks like this

vmq_webhooks.mywebhook1.hook=on_publish
vmq_webhooks.mywebhook1.endpoint=http://localhost:7777/webhooks/test1
vmq_webhooks.mywebhook2.hook=on_auth_m5
vmq_webhooks.mywebhook2.endpoint=http://localhost12

then the vmqadmin REST api give back this

({
    "table": [
        {
            "hook": "on_publish",
            "endpoint": "http://localhost:7777/webhooks/test1",
            "base64payload": true,
            "response_timeout": 5000
        },
        {
            "hook": "on_publish",
            "endpoint": "http://localhost:7777/webhooks/test2",
            "base64payload": true,
            "response_timeout": 5000
        }
    ],
    "type": "table"
})

Now because I don't know which webhook name these configs are present against, other CRUD operation get affected.

I can handle this association outside of the vmqadmin API (by storing it in the sq-lite db i hold in my app) but I was thinking that can the vmq-admin API also return the webhook name as stored in the conf file if possible

docs/installing-vernemq/centos_and_redhat macro issues

On https://docs.vernemq.com/installing-vernemq/centos_and_redhat :

  • vernemq-<%= latest_version() %>-1.el7.centos.x86_64.rpm looks weird

It looks like a macro blew up.

We don't need to specify versions with yum anyway - when the version we want is the latest - as it will just go get the latest from the yum repo. So, we could just say sudo yum install vernemq and let it just work.

  • the yum repo URL is missing

It's customary to have a yum repo while installing via yum; otherwise it'd just be an rpm invocation. Either way, we need a URL (or instructions how to find the URL!).

(And I wouldn't recommend just pointing to bare RPMs, as that's a very old way of doing that; since yum automatically checks for updates, it's a much better way of installing RPMs and keeping them updated. If we see how many 'supply chain' security issues we have [oh, hi npm] these days, then we realize we want yum instead of just rpm)

Proper build documentation missing

Recently for the latest version of vernemq, pre-compiled binaries will be available only to github sponsors. I respect that as the decision is required to generate revenue. But for community member please provide a detailed build documentation. Currently there is no build documentation on the official documentation site. On github all the documentation says is that we need Erlang/OTP and libsnappy-dev and we need to run make rel. And that's pretty much all of it.

So far with that documentation, I could only compile on a ubuntu machine. I could not compile it for alpine or debian-slim images as no list of dependencies provided.

Expected Documentation:
The documentation should mention the complete list of the dependencies with versions for different platforms. For example there is no mention on how to compile vernemq for Alpine if we want to create a custom docker image as Dockerfile on github downloads the binaries itself instead of building the code.

Add instructions to configure SSL client certificates

Related to #1936

I configured listener.ssl.require_certificate = on and seems that this disables username/password

The docs should clarify if it's really "required", and if is it possible to keep both authentication mechanisms. May I assume without that setting client certs will be accepted? and if so, do I need to add that credential to the users file?

Finally, will be good to have instructions to troubleshoot these issues (I'm new to Verne and not sure how enable/read logs)

Please add instructions on how to debug webhooks

Maybe I missed it, but there seems to be no documentation about how to proceed if one configured the webhooks plugin but no POST requests are happening. The logs don't tell anything and the client trace only shows that the auth_on_publish hook is being called. But even the auth_on_publish does not execute any post. As we are using the docker image I guess there is not much that could be set up wrong.

Nevertheless, it seems we missed out on something during the setup of the hooks. If the documentation would show how to debug such issues users could more likely help themselves.

Empty "The VerneMQ conf file" in Vernemq Documentation

I have encountered an issue where the configuration file page in Vernemq Documentation is empty. When I navigate to the configuration file section in the Vernemq Documentation, instead of seeing the expected contents of the configuration file, the page appears empty.

Steps to reproduce:

  1. Access the Vernemq Documentation https://docs.vernemq.com/
  2. Navigate to the Vernemq Conf File. https://docs.vernemq.com/configuring-vernemq/the-vernemq-conf-file.

Expected behavior:
Upon accessing the Vernemq Conf file page, I should be able to view.
It should have to show this file content https://github.com/vernemq/vmq-docs/blob/1.12.3/configuration/the-vernemq-conf-file.md.

Actual behavior:
The Vernemq Conf File page is empty, providing no options or settings to configure.

Additional Information:
Issue still present in issue section but not resolved till now.
image

Nothing said about shutdown

I am trying to implement graceful shutdown of VerneMQ container. However, I cannot find anything mentioned about:

  • how to properly shutdown VerneMQ
  • which steps are taken under the hood

Please provide an Example config file

It will be great if an example config file is provided along with documentation for beginners with vernemq. I could not find a reference config file which I can modify as per my requirements.

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.