mosquittoでMQTT over WebSocket

Ubuntu serverで、moquittoを使ったMQTTブローカを立てた。

備忘録として手順をメモしておく。

ポート開放

# この設定は再起動後に有効になる
sudo ufw enable
sudo ufw default DENY
sudo ufw allow 80/tcp
sudo ufw allow 1883/tcp

mosquittoのインストール

sudo apt-get install mosquitto
# publish, subscribeをローカルで試したい場合のみ
sudo apt-get install mosquitto-client

lighttpdのインストール

sudo apt-get install automake
sudo apt-get install libtool
sudo apt-get install pkg-config
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
sudo apt-get install git-core
sudo apt-get install libbz2-dev
sudo apt-get install g++
sudo apt-get install unzip
sudo apt-get install make

git clone --recursive git://github.com/nori0428/mod_websocket.git
git clone --recursive https://github.com/lighttpd/lighttpd1.4.git
cd lighttpd1.4
git checkout lighttpd-1.4.33
cd ../mod_websocket
./bootstrap
./configure --with-lighttpd=/home/youku_s/lighttpd1.4
make install
cd ../lighttpd1.4
./autogen.sh
./configure --with-websocket=all
make
sudo make install

lighttpdの設定

/home/youku_s/lighttpd1.4/websocket.confを以下の内容で作成する。

server.document-root= "/home/youku_s/www/"
server.port = 80
server.modules = ( "mod_websocket" )

websocket.server = ("/mqtt" =>
                          (
                                "host" => "127.0.0.1",
                                "port" => "1883",
                                "type" => "binary",
                                "subproto" => "mqttv3.1"
                           ),
)
websocket.timeout=300
mimetype.assign = (
  ".html" => "text/html",
  ".txt" => "text/plain",
  ".jpg" => "image/jpeg",
  ".png" => "image/png"
)

lighttpdの起動

lighttpd -D -f websocket.conf

その他

WebSocketとして接続するには、80ポートで接続する。 それ以外は、1883ポートを使用する。