Sign inSign up

iperfex/mqttbroker

By iperfex

•Updated over 6 years ago

MQTT Broker MoscaJS

Image
0

1.3K

iperfex/mqttbroker repository overview

⁠docker-compose.yml

version: '3'
services:

  mqttbroker:
    container_name: mqttbroker
    image: iperfex/mqttbroker:latest
    volumes:
      - ./user-data/etc/letsencrypt:/etc/letsencrypt
      - ./source/nodejs:/usr/src/app
    restart: always
    environment:
      SECURE_CA: ${SECURE_CA}
      SECURE_KEY: ${SECURE_KEY}
      SECURE_CERT: ${SECURE_CERT}
    depends_on:
      - certbot
    network_mode: host

  certbot:
    container_name: certbot
    image: cnsoluciones/certbot:latest
    network_mode: host
    restart: always
    volumes:
      - ./user-data/etc/letsencrypt:/etc/letsencrypt
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
    network_mode: host

⁠DockerFile

FROM node:10.17.0-alpine

MAINTAINER Federico Pereira <[email protected]>

WORKDIR /usr/src/app

COPY package*.json ./

COPY . .

RUN apk add --update bash && rm -rf /var/cache/apk/*

RUN yarn install

EXPOSE 3000

CMD [ "npm", "start" ]

⁠app.js

//LOG
const LOG = process.env.LOG || true

//SSL
const SECURE_KEY = process.env.SECURE_KEY || '/certs/server.key'
const SECURE_CERT = process.env.SECURE_CERT || '/certs/server.crt'
if (LOG) console.log("CERTIFICATION")
if (LOG) console.log("SECURE_KEY", SECURE_KEY)
if (LOG) console.log("SECURE_CERT", SECURE_CERT)

// Mosca MQTT broker
var mosca = require('mosca')

var moscaSetting = {
    interfaces: [
        { type: "mqtt", port: 1883 },
        { type: "https", port: 8883, bundle: true, credentials: { keyPath: SECURE_KEY, certPath: SECURE_CERT } }
    ],
    stats: false,
    onQoS2publish: 'noack',

    logger: { name: 'MoscaServer', 
             //level: 'info',
             level: 'error',
             level: 'warn',
            },
}

//MQTT SERVER
var broker = new mosca.Server(moscaSetting);

broker.on('ready', setup)

function setup() {
  console.log('Mosca server is up and running')
}

broker.on('clientConnected', function(client) {
  console.log('Client Connected: ', client.id)
})

broker.on('clientDisconnected', function(client) {
  console.log('Client Disconnected: ', client.id)
})

⁠package.json

{
  "name": "mqttbroker",
  "version": "1.0.0",
  "description": "MQTT Broker MoscaJS",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "keywords": [
    "mqtt",
    "broker",
    "asterisk",
    "dialer"
  ],
  "author": "Federico Pereira",
  "license": "ISC",
  "dependencies": {
    "asterisk-manager": "^0.1.16",
    "mosca": "^2.8.3",
    "mqtt": "^3.0.0",
    "mysql": "^2.18.1"
  }
}

Tag summary

Content type

Image

Digest

Size

59.2 MB

Last updated

over 6 years ago

docker pull iperfex/mqttbroker