以前GoogleHomeMiniの記事をあげました
nodoで使ったモジュールは色々ですがその中で注目したのがngrokというモジュールです
このモジュールによってローカルエリア外にサーバーを立てに行くだけでなく、dnsで適当にアドレスも振ってくれてるものです(神モジュール)
しかし、デフォルトのままだとセキュリティガバガバの状態で非常に危険です
そのため、このモジュールについて調べたので備忘録がてら書いておきます
ngrok
ngrokはNATやファイアウォールの背後にあるローカルサーバを安全なトンネルをつくってインターネットに公開するモジュールです
httpとhttpsを作ることができる(同時に立てる 片方のみはできないっぽい)
無料プランと有料プランあり(しかし、アカウントを作らなくても使うことができる)
無料プランと有料プランの違いは色々ありますが、個人的に大きな違いは固定ドメインが取れるかどうかでした
現在は有料版でないと取得することができません(以前は無料版でも固定ドメインが取得できたらしい・・・)
無料プランはダッシュボードで現在公開しているサーバーを見ることができることぐらいしかない
詳しくは⇨ http://ngrok.com/pricing
Auth認証をかけることができる
※ただしBasic認証のみ
プログラム
Basic認証とログインするともらえるAPIを入れたプログラムを乗せておきます
事前に以下のモジュールが必要です
install npm init npm install express --save npm install body-parser --save npm install ngrok --save
プログラム
起動するとport:8082を開けてwebサーバーを作ります
var express = require('express'); var bodyParser = require('body-parser'); var https = require( 'http' ); var ngrok = require('ngrok'); var app = express(); var myport = 8082; //parser app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); //get app.get('/', function(req, res) { res.send("ハロー\n"); }); app.post('/', function(req, res) { var text = req.body.text; res.send(text + "\n"); }); var server = app.listen(myport, function(){ ngrok.connect({ authtoken: "***********************************F", //yourAPI addr: myport, auth: 'user:password', //basic認証 ユーザー名:パスワードとりあえずuser passwordにしてる }, function (err, url) { if(!err){ console.log("Start Server"); console.log(url); }else{ console.log(err); } }); });
起動後
$ node app.js Start Server//ここはランダム http://de4ad1ec.ngrok.io
curlをかけて起動を確認
$curl -u user:password -H "Accept: application/json" -H "Content-type: application/json" -d '{ "text" : "hello" }' <a data-mce-href="http://de4ad1ec.ngrok.io" http://de4ad1ec.ngrok.io
httpsの上にbasic認証だから安全なのかなぁー・・・うーんって感じです
認証あたりはpassportを使って自前で組み立てたほうがいいかもしれない
なにもしてないよりはいいかも・・・
コメント