IDCフロンティアさん企画、主催のサバフェス2016が面白すぎたので、これに参加できなかった方も、さっくりとIoTっぽいことを試して頂けたらなぁ、と思ってます。
てことで、「サバフェス2016には出れなかったけどIoTっぽいことに興味ある方」あるいは「サバフェス2016に出たけどもう一度復習したい方」向けの記事となります。
Mesubluについては
でも簡単に書いていますが、要は、「IDCFチャンネルをつかってIoTっぽいことをしようとするときの基盤」です。
で、これをイチから準備するのは(多分)大変なんだろうなぁ、と思いますが、IDCFクラウドさんではこのパッケージがインストール済みのテンプレートを準備してくれていますので楽ちんです。
仮想マシン作成の手順
仮想マシンのサイズは最小のlight.s1で良いと思います。
で、次のところでテンプレートが選べますので「コミュニティテンプレートの一覧へ」をクリックします。
そうするといくつか候補が出てきます。ここでは「サバフェス2016年・IDCFチャンネル用」をクリックします。「サバフェス2016年・ハンズオン用」でも大丈夫そうな気はしますが、多分こっちのほうがコンパクトなので。
テンプレートの情報が表示されるので、右上にある「仮想マシン作成」をクリックします。
元の画面に戻るので、下の方にスクロールします。
で、一番のハマりどころですが、SSHキーを作成しなくてはいけません。
一般にクラウドサーバでは、仮想マシンの作成後、SSHで繋いで作業しますが、このとき、rootのアカウント情報を使ってログインするのは危険なので、SSHキーを作成し、これをローカルに落とした上で、このキーを使ってログインします。
てことで、「作成」をクリックします。
「SSH Key名を入力してください」と書いてあるフィールドに、適当な名前を入力します。ここで入力するSSHキー名は、ローカルに落としてきた時のファイル名になりますので、わかりやすいものが良いと思いますが、ぶっちゃけなんでも大丈夫です。
ここでは、「IoT_MQTT_TEST」という名前にしました。キー名を入力したら「作成」をクリックします。
こんな画面になりますが当然「はい」です。
「はい」をクリックすると、SSHキーが作成されたあと、自動的にダウンロードされます。スクリーンショットはChromeの例ですが、どのブラウザでも大して変わらないはずです。
ここ、以前は明示的にダウンロードする必要があって、ここでダウンロードせずに先に進んでログインできなくなる、とかあるあるだったわけですが便利になりました。思い出したら鼻の奥がきゅんきゅんしてきたよ(ツラかった記憶があるらしい)。
あとは、画面をスクロールして、ホスト名とグループ名(これもぶっちゃけ適当でいいです)を入力したら「確認画面へ」をクリック。
あ、忘れてた。ホスト名にはアンダーバーが使えないです。たぶん。
確認画面、一応内容をざっと確認したら、一番下にある「作成」をクリックします。
ネットワーク関係の設定
仮想マシンを作成したら、このサーバに対して、ネットワークの設定をしなくてはいけません。
ちょっとだけわかりにくいかもですが、IDCFクラウドでのネットワーク設定(FWとかポートフォワーディングとか)は「IPアドレス」の項目から設定します。
順番としては、まずファイアウォールの設定をし、次にポートフォワーディングの設定をします。
ファイアウォールの設定内容はこんな感じです。22, 80, 1883 の各ポートを開けます。
上記のポートへのアクセスが有った場合に仮想マシンに転送するポートフォワードの設定内容はこんな感じです。3つ設定したポートへの通信は、全て、先ほど作成した仮想マシンに振ります。
必須ではありませんが、SSHなどで接続する際にIPアドレスをいちいち確認して叩くのは面倒なので、DNSサーバをお持ちの方は、Aレコード作っておいてやると便利だと思います。
SSH接続してみる
Macの場合
OSX の場合には、何らかのターミナルのアプリからSSH接続します。
ここで、先ほどダウンロードしたSSHキーを使います。
まず、IDCFクラウドのポータル画面で、グローバルのIPアドレスを確認しておきます。
今回テストで使った環境の場合は以下のようになっているので、接続先は210.129.19.218となります。
次に認証のためのキーの場所を確認します。ダウンロードしたSSHキーがデスクトップに有るのであれば、接続のためのコマンドは
ssh root@接続先ホストのIPアドレス -i キーの場所
となります。
なので、本稿の例では
ssh root@210.129.19.218 -i ~/Desktop/IoT_MQTT_TEST.txt
となります。
初めての接続の際には、下記のように聞いてきますので、Yesと入力します。
The authenticity of host '210.129.19.218 (210.129.19.218)' can't be established. ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Are you sure you want to continue connecting (yes/no)?
なお、ここで
Warning: Permanently added '210.129.19.218' (ECDSA) to the list of known hosts. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/Users/tetsuo/Desktop/IoT_MQTT_TEST.txt' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/Users/tetsuo/Desktop/IoT_MQTT_TEST.txt": bad permissions Permission denied (publickey).
のようなエラーが出るかもです。SSHキーは非常に重要なので、ローカルマシンにログインする他のユーザから見えてしまってはまずいです。なので、
chmod 600 ~/Desktop/IoT_MQTT_TEST.txt
のように、他のユーザからのアクセスを禁止しておく必要があります。
ログインできると、下記のような画面になります。まずはここで一段落です。
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-33-generic x86_64) * Documentation: https://help.ubuntu.com/ root@mqtt:~#
Windowsの場合
後で書きます
Meshblu環境の確認
上記の手順で仮想マシンを作成した場合、root のホームディレクトリ下に必要なアプリケーションが入ってます。
root@mqtt:~# ls iot_apps root@mqtt:~# cd iot_apps/ root@mqtt:~/iot_apps# ls meshblu-compose root@mqtt:~/iot_apps# cd meshblu-compose/ root@mqtt:~/iot_apps/meshblu-compose# ls bme280 docker freeboard meshblu nginx redis bootstrap.sh docker-compose.yml manage mongo README.md sensortag
全て、dockerのコンテナに入っているので、Meshbluに対してゴニョゴニョしたいときはこのディレクトリ(/root/iot_apps/meshblu-compose )で作業する必要があります。
この時点で既に必要なサービスが全て動いているはずですが、念のため、動作確認します。
まずは単純にCURLで http://localhost/status を叩いてみます。Meshbluが稼働していれば
curl http://localhost/status {"meshblu":"online"}
のような応答が返ってきます。
Meshbluが動いていたら、デバイス(この辺りの用語についてはこちらの記事を参考にしてください)の登録などの初期設定を行います。
root@mqtt:~/iot_apps/meshblu-compose# docker-compose run --rm iotutil register
出力結果はこんな感じになります。
これで、デバイスも登録されたはずなので確認します。
root@mqtt:~/iot_apps/meshblu-compose# docker-compose run --rm iotutil list
出力結果はこんな感じ。
これで、Meshblu環境が整いました。
クライアントからの確認などについては、別記事で説明しています。
コメント
コメント一覧 (1件)
[…] ・IDCFクラウドを使ってMeshblu環境を最速で準備する http://210.129.9.93/2016/03/meshblu_by_idcfcloud/ ・myThingsをはじめよう:サーバーの準備・認証 […]