以前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を使って自前で組み立てたほうがいいかもしれない
なにもしてないよりはいいかも・・・
是非SNSで感想を教えて下さい 👇️
POST