EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。

1 端口介绍

  • 1883:MQTT 协议端口
  • 8084:MQTT/SSL 端口
  • 8083:MQTT/WebSocket 端口
  • 8080:HTTP API 端口
  • 18083:Dashboard 管理控制台端口

2 拉取镜像

docker pull emqx/emqx:latest
# 也可以拉去指定版本
docker pull emqx/emqx:v4.0.0

3 启动临时容器

其他小知识

选项 选项简写 说明
–detach -d 在后台运行容器,并且打印容器id。
–interactive -i 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
–tty -t 分配一个伪tty,一般与 -i 连用。
docker run -dit --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:latest# 避免跟rabbitmq的1883冲突
docker run -dit --name emqx -p 1884:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:latest

4 拷贝配置文件

拷贝配置文件到宿主机,这样修改宿主机的配置文件之后只需要重启容器,配置文件就会生效。左边是容器的路径,右边是要映射宿主机路径。

把配置文件拷贝出来就是为了之后的ssl证书配置。便于管理。

docker cp emqx:/opt/emqx/etc /home/egn/emqx

5 删除临时容器

docker rm -f emqx

6 重新启动容器

在挂载之前要记得先创建需要挂载的文件夹

挂载全路径

docker run -d \
--name emqx \
-p 1883:1883 \
-p 8883:8883 \
-p 8083:8083 \
-p 8084:8084 \
-p 8081:8081 \
-p 18083:18083 \
-v /usr/local/emqx/etc:/opt/emqx/etc \
-v /usr/local/emqx/lib:/opt/emqx/lib \
-v /usr/local/emqx/data:/opt/emqx/data \
-v /usr/local/emqx/log:/opt/emqx/log \
emqx/emqx:latest

这里只需要映射出来etc目录,用于ssl的配置

docker run -dit \
--name emqx \
-p 1883:1883 \
-p 8883:8883 \
-p 8083:8083 \
-p 8084:8084 \
-p 8081:8081 \
-p 18083:18083 \
-v /home/egn/emqx/etc:/opt/emqx/etc \
emqx/emqx:latest

7 访问测试

访问http://127.0.0.1:18083

默认密码为admin/public

如果要修改密码

//修改文件,再启动容器
vim /usr/local/emqx/etc/plugins/emqx_auth_username.conf

8 放入证书文件

通过自制证书或者去阿里云签发免费的证书下载下来,获得

bash脚本自动生成证书

#/bin/sh
rm -f ca.*
rm -f emqx.*
rm -f client.*
# 生成自签名的CA key和证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem -subj "/C=CN/ST=Jiangsu/L=Suzhou/O=XXX/CN=SelfCA"
#openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem# 生成服务器端的key和证书
openssl genrsa -out emqx.key 2048
openssl req -new -key ./emqx.key -config openssl.cnf -out emqx.csr
openssl x509 -req -in ./emqx.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out emqx.pem -days 3650 -sha256 -extensions v3_req -extfile openssl.cnf# 生成客户端key和证书
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=Jiangsu/L=Suzhou/O=XXX/CN=client"
openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem

最好从阿里云或者腾讯云、华为云生成域名证书。证书下载可以下载nginx、tomcat……。这里我们下载其他类证书。

listener.wss.external.keyfile = etc/certs/my/test.com.key
listener.wss.external.certfile = etc/certs/my/test.com.pem

重启容器

docker restart emqx

9 测试

这里要注意配置了ssl证书后,要想使用ssl连接wss就不能使用ip访问wss了,必须使用域名!!!

10 添加微信小程序支持

有的mqttjs没有输入端口号的地方,所以这里在nginx添加如下转发。通过https://域名/mqtt一样可以连接

```location = /mqtt {# 8083就是我们的emq的websocket的端口号proxy_pass http://域名:8083;proxy_redirect off;proxy_set_header Host 域名:8083;proxy_set_header Sec-WebSocket-Protocol mqtt;# 这个是与你的 js客户端的库有关系,本博文的不需要,为了兼顾以后小伙伴,我这里注释了下! #more_clear_headers Sec-WebSocket-Protocol;# 这些都是 websocket必须要配置的proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}```

11 emqx添加http登录鉴权认证

进入emqx映射出来的配置文件目录,编辑鉴权的配置文件

cd /home/egn/emqx/plugins
vim emqx_auth_http.conf

增加自己的鉴权接口
然后进入管理后台,打开http鉴权开关

12 emqx允许订阅上下线主题

设置allow所有用户订阅$SYS/brokers/+/clients/#主题
vim etc/acl.conf

{allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}.{allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}.{allow, all, subscribe, ["$SYS/brokers/+/clients/#"]}.{deny, all, subscribe, ["$SYS/#", {eq, "#"}]}.{allow, all}.

Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)相关推荐

  1. properties 配置回车_在Ubuntu上部署基于Docker的RSSHub,并配置SSL证书

    本文首发于简书,为同一作者 最近开始使用 RSS 这种信息聚合神器,再也不要打开各种 App 了.然而对于像微博.bilibili 这些不提供 RSS 订阅的网站还是有些头疼.于是尝试了 RSSHub ...

  2. Docker安装、详解与部署

    目录 Docker简介 Docker的优点如下: 1.简化程序 2.避免选择恐惧症 3.节省开支 Docker的架构 Docker 的安装 1.Docker 要求 CentOS 系统的内核版本高于 3 ...

  3. docker安装nginx并配置ssl证书

    文章目录 一.准备SSL证书 二.下载最新nginx镜像 三.新建几个目录,把nginx容器内的配置文件挂载到主机上 四.启动一个nginx临时容器,把配置文件复制过来,然后删除 五.把SSL证书上传 ...

  4. 详解HTTPS通信流程,使用JDK,openssl,XCA进行证书认证详细操作,Spring Boot配置SSL证书实操

    这里写目录标题 HTTPS SSL 通信流程 HTTPS一般使用的加密与HASH算法如下: 1.JDK JDK中自带keytool工具便携生成SSL证书,其代码参数如下 整合到spring boot项 ...

  5. 详解Nginx SSL快速双向认证配置(脚本)

    这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 目前遇到一个项目有安全性要求,要求只有个别用户有权限访问.本着能用配置解决就 ...

  6. Nginx安装ssl模块和配置ssl证书

    ssl证书概要 SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书 [1] 就是遵守 SSL协议,由受信任的数字证书颁发机构 ...

  7. Centos安装Nginx并使用acme脚本配置SSL证书

    仅做记录供以后查看,所有代码来自互联网查找整理 1. 更新yum源 yum update 2. 查看防火墙并开放所需端口 firewall-cmd --zone=public --list-ports ...

  8. 我是如何将网站全站启用Https的?-记录博客安装配置SSL证书全过程

    评论»   文章目录 为什么要Https 如何选择Https 安装部署SSL证书 平滑过渡Https 搜索引擎的响应 启用Https小结 正如大家所看到的,部落全站已经启用了Https访问了,连续几天 ...

  9. linux添加cfg,Linux安装详解-配置ks.cfg实现自动安装过程

    Linux安装详解-配置ks.cfg实现自动安装过程 之前发过一篇关于通过PXE实现Linux批量无人值守自动安装的文章(可以参考),不过写的只是具体的配置和操作,对于原理部分没有说明,最近通过一段时 ...

最新文章

  1. [转]C++11 随机数学习
  2. Pytorch view()、squeeze()、unsqueeze()、torch.max()
  3. MySQL数据库数据类型以及INT(M)的含义
  4. Kerberos协议
  5. ECCV 2020 亮点摘要(下)
  6. linux下挂接fat32分区
  7. 特殊权限:SUID,SGID,Sticky
  8. go语言 rune切片
  9. php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
  10. iOS开发手记-仿QQ音乐播放器动态歌词的实现
  11. (转)Docker - 使用 compose 编排服务
  12. CC2530睡眠唤醒
  13. DVB机顶盒工作原理
  14. PC验证CSR8811蓝牙芯片
  15. 特征工程-特征提取:字典特征提取、文本特征提取、jieba分词处理、Tf-idf文本特征提取
  16. 在AWS Lambda上部署EC2编译的FFmpeg工具——自定义层的方案
  17. css过渡-动画-变换
  18. 毛笔字识别--详细注释解析恩培作品6
  19. java毕业设计校园二手商品交易系统源码+lw文档+mybatis+系统+mysql数据库+调试
  20. (C语言)栈应用简易计算器实现

热门文章

  1. C# winform中的打印文件的实现方式
  2. HDU 5750 快速筛素数法打表
  3. windows下配置PPPoE服务器
  4. java计算机毕业设计乐勤网书店源码+系统+mysql数据库+lw文档
  5. 动漫火影忍者佐助图片桌面壁纸
  6. Intel, AMD及VIA CPU的微架构(39,完)
  7. python 人像素描_python素描照片
  8. Google signin 引发的崩溃(人)
  9. 教你如何简便下载网站上的视频
  10. Latex论文参考文献引用的获取