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
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" ]
//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)
})
{
"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"
}
}
Content type
Image
Digest
Size
59.2 MB
Last updated
over 6 years ago
docker pull iperfex/mqttbroker